实验: Oracle中表shrink与move后index的状态
2011-11-27 12:16
417 查看
1 move时实验
SQL> create table my_objects_move tablespace ASSM as select * from all_objects where rownum < 20000;
Table created
SQL> create index i_my_objects_move on my_objects_move (object_id);
Index created
SQL> delete from my_objects_move where object_name like '%C%';
7546 rows deleted
SQL> delete from my_objects_move where object_name like '%U%';
2959 rows deleted
SQL> commit;
Commit complete
SQL> alter table my_objects_move move;
Table altered
SQL> select index_name, status
2 from user_indexes
3 where index_name = 'I_MY_OBJECTS_MOVE';
INDEX_NAME STATUS
------------------------------ --------
I_MY_OBJECTS_MOVE
UNUSABLE
SQL> alter index I_MY_OBJECTS_MOVE rebuild;
Index altered
SQL> select index_name, status
2 from user_indexes
3 where index_name = 'I_MY_OBJECTS_MOVE';
INDEX_NAME STATUS
------------------------------ --------
I_MY_OBJECTS_MOVE
VALID
2 shrink时实验
SQL> create table my_objects tablespace ASSM as select * from all_objects where rownum < 20000;
Table created
SQL> create index i_my_objects on my_objects (object_id);
Index created
SQL> delete from my_objects where object_name like '%C%';
7546 rows deleted
SQL> delete from my_objects where object_name like '%U%';
2959 rows deleted
SQL> commit;
Commit complete
SQL> alter table my_objects enable row movement;
Table altered
SQL> alter table my_objects shrink space;
Table altered
SQL> select index_name, status
2 from user_indexes
3 where index_name = 'I_MY_OBJECTS';
INDEX_NAME STATUS
------------------------------ --------
I_MY_OBJECTS
VALID
3 结论
shrink在移动行数据时,也一起维护了index上相应行的数据rowid的信息,当然shrink过程中用来维护index的成本也会比较高。而表move后index的状态是UNUSABLE的,需要进行rebuild。
SQL> create table my_objects_move tablespace ASSM as select * from all_objects where rownum < 20000;
Table created
SQL> create index i_my_objects_move on my_objects_move (object_id);
Index created
SQL> delete from my_objects_move where object_name like '%C%';
7546 rows deleted
SQL> delete from my_objects_move where object_name like '%U%';
2959 rows deleted
SQL> commit;
Commit complete
SQL> alter table my_objects_move move;
Table altered
SQL> select index_name, status
2 from user_indexes
3 where index_name = 'I_MY_OBJECTS_MOVE';
INDEX_NAME STATUS
------------------------------ --------
I_MY_OBJECTS_MOVE
UNUSABLE
SQL> alter index I_MY_OBJECTS_MOVE rebuild;
Index altered
SQL> select index_name, status
2 from user_indexes
3 where index_name = 'I_MY_OBJECTS_MOVE';
INDEX_NAME STATUS
------------------------------ --------
I_MY_OBJECTS_MOVE
VALID
2 shrink时实验
SQL> create table my_objects tablespace ASSM as select * from all_objects where rownum < 20000;
Table created
SQL> create index i_my_objects on my_objects (object_id);
Index created
SQL> delete from my_objects where object_name like '%C%';
7546 rows deleted
SQL> delete from my_objects where object_name like '%U%';
2959 rows deleted
SQL> commit;
Commit complete
SQL> alter table my_objects enable row movement;
Table altered
SQL> alter table my_objects shrink space;
Table altered
SQL> select index_name, status
2 from user_indexes
3 where index_name = 'I_MY_OBJECTS';
INDEX_NAME STATUS
------------------------------ --------
I_MY_OBJECTS
VALID
3 结论
shrink在移动行数据时,也一起维护了index上相应行的数据rowid的信息,当然shrink过程中用来维护index的成本也会比较高。而表move后index的状态是UNUSABLE的,需要进行rebuild。
相关文章推荐
- 实验: Oracle中表shrink与move后index的状态
- 实验: Oracle中表shrink与move产生redo日志比较
- oracle shrink space 与move
- Oracle:MOVE与SHRINK命令相比较
- Oracle move和shrink释放高水位空间 (一)
- Oracle Move和Shrink表空间
- 比较Oracle中的alter table t move和alter table t shrink space
- Oracle 数据库健康状态检查
- Oracle Linux Reference Index of Security Vulnerability bug fixes, CVE IDs and Oracle Linux Errata
- Oracle alter index rebuild 说明
- Oracle Index Clustering Factor 说明
- Alter index coalesce VS shrink space
- FK+INDEX+LOCK的关系实验
- oracle TABLE ACCESS BY INDEX ROWID 你不知道的索引回表-开发系列(三)
- oracle查看表空间的属性 ,修改表空间的状态
- Oracle SQL中实现indexOf和lastIndexOf功能
- oracle linux 6.2安装oracle 11g动手实验(包含操作视频下载地址)
- Oracle SQL中实现indexOf和lastIndexOf功能,substr和instr用法
- Oracle buffer状态深入剖析
- oracle学习笔记 undo段及区的状态和使用