Oracle数据库应用

一、Oracle数据库应用的知识体系

Oracle数据库应用

2.表空间和权限管理

1.表空间

Oracle 数据库包含逻辑结构和物理结构,数据库的物理结构是指构成数据库的一组操作系统文件.数据库的逻辑结构是指描述数据组织方式的一组逻辑概念及他们之间的关系.表空间是数据逻辑结构的一个重要主键.表空间可以存放各种应用对象,如表.索引.而每个表空间有一个或多个数据文件组成.

1.表空间的分类

类别 说明
永久性表空间 一般保存表,视图,过程,索引等的数据 .system,sysaux,users,example 表空间是默认安装的
临时性表空间 只用于保存系统中短期活动的数据,如排序数据等
撤销表空间 用来帮助回退未提交的事务数据,已提交的数据在这里是不可以回复的,一般不需要件临时和撤销表空间,除非把他们转移到其他磁盘中以提高性能

2.表空间的目的

使用表空间的目的为:

  • 对不同用户分配不同的表空间,对不同的模式对象分配不同的表空间,方便对用户数据集的操作,对模式对象的管理.
  • 可以将不同数据文件创建到不同的磁盘中,有利于管理磁盘空间,有利于提高I/O性能,有利于备份和恢复数据,一般在完成Oracle 系统的安装并创建Oracle实例后,Oracle系统会自动建立多个表空间

3.创建表空间

语法:
crate tablespace tablespacename
datafile ’ filename ’ [SIZE Integer [ K | M ] ]
[autoextend [ OFF | ON ] ]
在语法中:

  • tablespacename 是需要创建表空间的名称
  • datafile 指定组成表困境的一个或多个数据文件,当有多个数据文件时,使用逗号分隔
  • filename 是数据文件的路径和名称
  • size 指定文件的大小,用 k 指定千字节大小,用m指定兆字节大小
  • autoextend 子句用来启用或禁用 数据文件的自动扩展,设置为on则空间使用完毕会自动扩展,设置为off则很容易出现表空间剩余容量为0的情况,使数据不能存储到数据库中

4.删除表空间

可以通过drop语句来删除用户自定义的表空间,
语法如下:
drop tablespace tablespacename

2.数据库权限管理

1.授予权限

语法:
grant 权限|角色 to 用户名;

2.撤销权限语法如下:

revoke 权限|角色 from 用户名

数据库用户安全设计原则:

  1. 数据库用户权限授权按照最小分配原则.
  2. 数据库分为管理,应用,维护,备份 四类用户
  3. 不允许使用Sys和System 用户建立数据库应用对象
  4. 禁止 grant dba to user

序列

序列是用于生成唯一、连续序号的对象
序列可以是升序的,也可以是降序的
使用CREATE SEQUENCE语句创建序列

实例:

CREATE SEQUENCE toys_seq
START WITH 10 指定第一个序号从 10 开始
INCREMENT BY 10 指定序号之间的间隔为 10
MAXVALUE 2000 表示序列的最大值为 2000
MINVALUE 10 表示序列的最小值为 10
NOCYCLE 在达到最大值后停止生成下一个值
CACHE 10; 指定内存中预先分配的序号数

访问序列

通过序列的伪列来访问序列的值
NEXTVAL 返回序列的下一个值
CURRVAL 返回序列的当前值
SYS_GUID函数
生成32位的唯一编码作为主键
与SYS_GUID函数区别
在不需要并行的环境中使用序列作为主键
在并行的环境里或者希望避免使用序列的情况下使用函数

更改和删除序列

使用ALTER SEQUENCE语句修改序列,
不能更改序列的START WITH参数
SQL> ALTER SEQUENCE toys_seq MAXVALUE 5000 CYCLE;
使用DROP SEQUENCE语句删除序列
SQL> DROP SEQUENCE toys_seq;

同义词

同义词是现有对象的一个别名
简化SQL语句
隐藏对象的名称和所有者
提供对对象的公共访问
同义词共有两种类型
私有同义词只能在其模式内访问,且不能与当前模式的对象同名
公有同义词可被所有的数据库用户访问

私有同义词

CREATE OR REPLACE SYNONYM emp 别名 FOR SCOTT 模式.emp 表名;

公有同义词

CREATE PUBLIC SYNONYM public_sy_dept FOR SCOTT.dept;

删除同义词

SQL> DROP SYNONYM emp;
SQL> DROP PUBLIC SYNONYM emp_syn;

索引

物理分类 逻辑分类
分区或非分区索引 单列或组合索引
B树索引 唯一或非唯一索引
正常或反向键索引 基于函数索引
位图索引
B 树索引结构
CREATE INDEX index_id ON t(id);

反向键索引

CREATE INDEX index_reverse_empno ON emp(empno) REVERSE;

位图索引

CREATE BITMAP INDEX index_bit_job ON emp(job);

表分区

允许用户将一个表分成多个分区
用户可以执行查询,只访问表中的特定分区
将不同的分区存储在不同的磁盘,提高访问性能和安全性
可以独立地备份和恢复每个分区

范围分区

以表中的一个列或一组列的值的范围分区
语法:
PARTITION BY RANGE (column_name)
(
PARTITION part1 VALUE LESS THAN (range1),
PARTITION part2 VALUE LESS THAN (range2),

[PARTITION partN VALUE LESS THAN (MAXVALUE)]
);

间隔分区

PARTITION BY RANGE(column_name)
INTERVAL(NUMTOYMINTERVAL(n, ‘interval_unit’))
(PARTITION P1 VALUES LESS THAN (range1));