pctfree = (average row size - initial row size) *100 /average row size
pctused = 100-pctfree- (average row size*100/available data space)
5. 改变存储块初始大小
sql> alter table table_name pctfree=30 pctused=50 storage(next 500k
sql> minextents 2 maxextents 100);
6. 手动分配数据块
sql> alter table table_name allocate extent(size 500k datafile 'c:/oracle/data.dbf');
7. 移动表空间
sql> alter table employee move tablespace users;
8. 回收不用的表空间
sql> alter table table_name deallocate unused [keep integer]
9. 截断表
sql> truncate table table_name;
10. 删除表
sql> drop table table_name [cascade constraints];
11. 删除列
sql> alter table table_name drop column comments cascade constraints checkpoint 1000;
alter table table_name drop columns continue;
12. 把列标记为无用
sql> alter table table_name set unused column comments cascade constraints;
alter table table_name drop unused columns checkpoint 1000;
alter table orders drop columns continue checkpoint 1000
data_dictionary : dba_unused_col_tabs
13. 建一个和a表结构一样的空表
SQL> create table b as select * from a where 1=2;
SQL> create table b(b1,b2,b3) as select a1,a2,a3 from a where 1=2;
14. 查看现有回滚段及其状态
SQL> col segment format a30
SQL> SELECT SEGMENT_NAME,OWNER,TABLESPACE_NAME,SEGMENT_ID,FILE_ID,STATUS FROM DBA_ROLLBACK_SEGS;
四. 索引
1. 创建基于函数的索引
sql> create index summit.item_quantity on summit.item(quantity-quantity_shipped);
2. 创建B-tree索引
sql> create [unique] index index_name on table_name(column,.. asc/desc) tablespace
sql> tablespace_name [pctfree integer] [initrans integer] [maxtrans integer]
sql> [logging | nologging] [nosort] storage(initial 200k next 200k pctincrease 0
sql> maxextents 50);
3. 设置index pctfree值
pctfree(index)=(maximum number of rows-initial number of rows)*100/maximum number of rows
4. 创建反转键索引
sql> create unique index xay_id on xay(a) reverse pctfree 30 storage(initial 200k
sql> next 200k pctincrease 0 maxextents 50) tablespace indx;
5. 创建位图索引
sql> create bitmap index xay_id on xay(a) pctfree 30 storage( initial 200k next 200k
sql> pctincrease 0 maxextents 50) tablespace indx;
6. 改变索引的存储参数
sql> alter index xay_id storage (next 400k maxextents 100);
7. 分配/回收索引空间
sql> alter index xay_id allocate extent(size 200k datafile 'c:/oracle/index.dbf');
alter index xay_id deallocate unused;
五. 约束
1. 定义约束为immediate/deferred
sql> alter session set constraint[s] = immediate/deferred/default;
set constraint[s] constraint_name/all immediate/deferred;
2. 删除表的时候同时删除约束
sql> drop table table_name cascade constraints
sql> drop tablespace tablespace_name including contents cascade constraints
3. 建表的时候创建约束
sql> create table xay(id number(7) constraint xay_id primary key deferrable
sql> using index storage(initial 100k next 100k) tablespace indx);
primary key/unique/references table(column)/check
4. 使约束失效
sql> alter table xay enable novalidate constraint xay_id;
5. 使约束有效
sql> alter table xay enable validate constraint xay_id;
六. LOAD数据
1. 以insert方式插入数据
sql> insert /*+append */ into emp nologging
sql> select * from emp_old;
2. 以parallel方式直接插入数据
sql> alter session enable parallel dml;
sql> insert /*+parallel(emp,2) */ into emp nologging
sql> select * from emp_old;
3. 用sql*loader导入
sql> sqlldr scott/tiger
sql> control = ulcase6.ctl