分区 依据实际经验所得,在一个大数据库中,数据库空间的绝大多数是被少量的表所占有。如何简化大数据库和管理,如何改善使用的查询功用,普通可以使用分区这种手段。所谓分区就是动态地将表中记录分离到若干不同的表空间上,使数据在物理上被分割开来,便于维护、备份、恢复、事务及查询功用。当使用的时候可建立一个连接所有分区的视图,使其在逻辑上仍以一个全体出现。 1、建立分区表 Create table Employee ( EmpNo varchar2(10) primary key, Name varchar2(30), DeptNo Number(2) ) Partition by range(DeptNo) ( partition PART1 values less than (11) tablespace PART1_TS, partition PART2 values less than (21) tablespace PART2_TS, partition PART3 values less than (31) tablespace PART3_TS partition PART4 values less than (MAXVALUE) tablespace PART4_TS ); 表Employee依据DeptNo列进行分区。 2、分区索引 Create index Employee_DeptNo on Employee(DeptNo) local ( partition PART1 tablespace PART1_NDX_TS, partition PART2 tablespace PART2_NDX_TS, partition PART3 tablespace PART3_NDX_TS, partition PART4 tablespace PART4_NDX_TS, ); 当分区中出现许多事务并且要保证所有分区中的数据记录的独一性时采用全局索引,如: Create index Employee_DeptNo on Employee(DeptNo) global partition by range (DeptNo) ( partition PART1 values less than (11) tablespace PART1_NDX_TS, partition PART2 values less than (21) tablespace PART2_NDX_TS, partition PART3 values less than (31) tablespace PART3_NDX_TS partition PART4 values less than (MAXVALUE) tablespace PART4_NDX_TS ); 在建立全局索引时,global子句允许指定索引的范围值,这个范围值可以不同于表分区的范围值。只要建立局部索引才会使索引索引分区与表分区间建立起逐一对应关系。因此,在大多数情况下,应该使用局部索引分区。若使用了此索引,分区就能够很容易地将索引分区与表分区建立关联,局部索引比全局索引更易于管理。 3、分区管理 依据实际需求,还可以使用 alter table 命令来添加、丢弃、交换、挪动、修正、重命名、划分、截短一个已存在分区的结构。
Rebuild Indexes 如果表中记录频繁的被删除或插入,虽然表中的记录总量保持不变,索引空间的使用量会不断添加。虽然记录从索引中被删除,但是该记录索引项的使用空间不能被重新使用。因此,如果表变化不定,索引空间量会不断添加,不管表中记录数量能否添加——只仅仅是由于索引中无效空间量的添加。 要回收那些曾被删除记录使用的空间,需求使用alter index rebuild 命令。可以做一个定期运转的批处理程序,来重建最活动表的索引。这个批处理程序可以在空闲时运转,以避免程序与用户冲突。若能坚持索引的这一程序规划,便可以及时回收那些未使用空间,提高空间利用率。