我晕,今天我只是做个实验,看看失效的索引所在的表会如何处理数据,没想到结果表MOVE到自己的表空间,系统表空间和其他用户表空间三种情况都不能导致原来的索引失效,晕倒,怎么回事啊?
SQL> select * from v$version;
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
PL/SQL Release 10.2.0.1.0 - Production
CORE10.2.0.1.0Production
TNS for 32-bit Windows: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production
SQL> create table aaa
2(id int, a1 varchar2(10));
表已创建。
SQL> create unique index un_idx on aaa(id);
索引已创建。
SQL> select index_name,table_owner,table_name,status from user_indexes ;
INDEX_NAME
TABLE_OWNER
TABLE_NAME
STATUS
------------------------------ ------------------------------ ------------------
------------ --------
UN_IDX
ABC
AAA
VALID
SQL> alter table aaa move
2;
表已更改。
SQL> select index_name,table_owner,table_name,status from user_indexes ;
INDEX_NAME
TABLE_OWNER
TABLE_NAME
STATUS
------------------------------ ------------------------------ ------------------
------------ --------
UN_IDX
ABC
AAA
VALID
SQL> alter table aaa move TABLESPACE SYSTEM
2;
表已更改。
SQL> select index_name,table_owner,table_name,status from user_indexes ;
INDEX_NAME
TABLE_OWNER
TABLE_NAME
STATUS
------------------------------ ------------------------------ ------------------
------------ --------
UN_IDX
ABC
AAA
VALID
SQL> alter table aaa move tablespace USERS;
表已更改。
SQL> select index_name,table_owner,table_name,status from user_indexes ;
INDEX_NAME
TABLE_OWNER
TABLE_NAME
STATUS
------------------------------ ------------------------------ ------------------
------------ --------
UN_IDX
ABC
AAA
VALID
SQL> create tablespace Adatafile 'C:\oracle\product\10.2.0\oradata\xuelian\a.d
bf' size 10M autoextend on next 10M MAXSIZE 100M;
表空间已创建。
SQL> alter table aaa move tablespace A;
表已更改。
SQL> select index_name,table_owner,table_name,status from user_indexes ;
INDEX_NAME
TABLE_OWNER
TABLE_NAME
STATUS
------------------------------ ------------------------------ ------------------
------------ --------
UN_IDX
ABC
AAA
VALID
SQL>
|