第三部分、模式对象
*****************************************************************************************************
一、管理模式对象空间
-----------------------------------------------------------------------------------------------------
1. 管理数据块空间
(1) PCTFREE: 在数据块中,为更新行而保留的空间占数据块的比重,默认值是10
(2) PCTUSED: 在数据块中,已用空间占数据块的比重,默认值是40
* (1) 更新时,若PCTFREE所确定的百分比未填满,则可在PCTFREE的空间插入新行;
(2) 更新时,若PCTFREE所确定的百分比已填满,则不可在PCTFREE的空间插入新行;
① 若PCTUSED所确定的百分比未被填满,则可在PCTUSED的空间插入新行;
② 若PCTUSED所确定的百分比已被填满,则不可在PCTUSED的空间插入新行;
* PCTFREE + PCTUSED < 100
(3) Initrans: 指定DML事务入口的数目(在数据块头部)
(4) Maxtrans: 指定同一个数据块中同时使用数据的事务入口数目
2. 设置存储参数
(1) 表:Initial、Next、MaxExtents、MinExtents、PctIncrease等
(2) 表空间
(3) 数据段
(4) 回滚段
(5) 簇
(6) Lob、Varry和嵌套表
* 不能修改Initial和MinExtents的存储参数
3. 存储参数的优先级
--------------------------------------
(1) Alter 表/视图/簇/回滚段/索引等对象
↓
(2) Create表/视图/簇/回滚段/索引等对象
↓
(3) Alter表空间
↓
(4) Create表空间
↓
(5) Oracle默认值
4. 管理可恢复空间分配
--------------------------------------
(1) 启用/禁止可恢复空间的分配
① 启用/禁止: Alter session enable/disable resumable;
② 指定超时间隔: Alter session enable resumable timeout 3600;
③ 命名可恢复语句: Alter session enable resumable timeout 3600 name 'insert into table';
④ 修改超时间隔:可用Alter session,或创建触发器使用DBMS_RESUMABLE.SET_TIMEOUT(时间)
(2) 检测暂停的语句
① 视图:Dba_Resumable、User_Resumable、V$Session_Wait
② 包:DBMS_RESUMABLE的方法
-----Abort(sessionID)
-----Get_Session_Timeout(sessionID)
-----Set_Session_Timeout(sessionID)
-----Get_Timeout()
-----Set_Timeout(timeout)
5. 回收空间
(1) 回收表、簇、索引的空间
Alter Table/Index/Cluster 对象 Deallocate unused Keep 整数;
* 若没指定Keep选项,则所有的未利用空间都将被回收
二、管理表
-----------------------------------------------------------------------------------------------------
1. 管理表的准则
----------------------------
(1) 创建表前先设计表
(2) 指定如何使用数据空间
(3) 指定每个表的位置
(4) 估计表的大小和设置存储参数
(5) 考虑并行创建表
(6) 考虑创建表时使用NoLogging
(7) 规则大表
(8) 表的限制
2. 创建表
----------------------------
(1) 普通表
Create Table 表名(字段列表);
(2) 临时表
Create Temparory Table 表名(字段列表);
(3) 并行表
Create Table 表1 Parallel
as select (字段列表) from 表2;
(4) 联机重定义表
(5) 索引结构表(Organization Index Tablespace 表空间)
(6) 外部表(Oraganization External)
3. 更改表
----------------------------
(1) 增、删、改、重命名列
Alter Table 表名
Add (字段列表 类型)
Modify (字段列表 类型)
Drop (字段列表)
Rename Column 原列名 to 新列名
Set Unused (字段列表)
Drop Unused Columns Checkpoint 300;
(2) 修改数据块使用空间(PCTFREE、PCTUSED)
(3) 修改事务入口参数(MinTrans、MaxTrans)
(4) 修改存储参数
4. 删除表
----------------------------
Delete Table 表名(cascade constraints)
5. 表信息
----------------------------
视图:DBA/ALL/USER_TABLES、DBA/ALL/USER_TAB_COLUMNS
DBA/ALL/USER_External_TABLES、DBA/ALL/USER_UNUSED_COL_TABS
三、管理索引
-----------------------------------------------------------------------------------------------------
* 索引类型:B树索引、B树簇索引、散列簇索引、全局和局部索引、逆转键索引、
位图索引、基于函数的索引、域索引等
1. 管理索引的准则
------------------------
(1) 在表中插入数据后创建索引
(2) 索引正确的表和列
(3) 为性能而安排索引列(最常用的排在最前面)
(4) 限制每个表的索引数量(读多写少)
(5) 删除不再需要的索引
(6) 指定索引数据块空间的使用(只能使用PCTFREE而不能使用PCTUSED)
(7) 估计索引大小和设置存储参数
(8) 为每个索引指定表空间
(9) 考虑并行、NoLogging创建索引
(10)考虑合并或重建索引是的损益
(11)在停用或删除约束之前考虑开销
2. 创建索引
------------------------
(1) 明确地创建索引
Create index idx_a1 on Tb1(a1)
Tablespace Users
Storage(Initial 20K
Next 20K
PctIncrease 75
)
PCTFREE 0;
(2) 明确地创建唯一索引
Create unique index idx_a2 on Tb1(a2)
Tablespace Users;
(3) 创建与约束相关的索引
. 创建表时创建约束索引
① Create Table Tb1
(
id number(4) primary key,
name varchar2(20)
)
Tablespace Users;
② Create Table Tb1
(
id number(4),
name varchar2(20),
Constraint PK_ID Primary Key(id)
);
. 修改表时创建约束索引
Alter Table Tb1
add constraint PK_ID Primary Key(id);
(4) 创建大索引
(5) 创建联机索引
Create Index idx_name on Tb1(name) online;
(6) 创建基于函数的索引
Create Index idx_name on scott.emp(Upper(ename));
Select * from scott.emp where Upper(ename) like 'JOH%';
(7) 创建键压缩索引
Create Index idx_name on Tb1(name)
Tablespace Users
Compress 1;
3. 更改索引
-------------------------
(1) 更改索引的存储特征
Alter Index idx_name
storage(PCTIncrease 50);
(2) 重建现存索引
Alter Index idx_name Rebuild;
(3) 监视索引使用
Alter Index idx_name (No)Monitoring Usage;
4. 删除索引
-------------------------
Drop Index idx_name;
5. 查看信息
-------------------------
视图:DBA/ALL/USER_INDEXS、Index_Stat、V$Object_Usage;
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8748334/viewspace-912611/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/8748334/viewspace-912611/