Welcome 微信登录

首页 / 数据库 / MySQL / Oracle移动表对索引的影响

这里主要测试移动表从一个表空间到另一个表空间或者在同同一个表空间做表移动操作对索引的影响。测试中表明:表的移动(move)会直接导致该表中的索引失效,通过重建索引,重新让索引恢复有效可用的状态。以下是简单的测试过程。---创建测试表:--查看表结构:linuxidc@PROD>desc mytest Name                                      Null?    Type ----------------------------------------- -------- ---------------------------- NAME                                             VARCHAR2(6) CREATED                                            DATE
 --添加字段:linuxidc@PROD>alter table mytest add id number(2);Table altered. --查看表结构:linuxidc@PROD>desc mytest Name                                      Null?    Type ----------------------------------------- -------- ---------------------------- NAME                                             VARCHAR2(6) CREATED                                            DATE ID                                               NUMBER(2)
 ---创建索引:linuxidc@PROD>create index ind_mytest on mytest(id);Index created.#索引添加成功。 --查看表结构:linuxidc@PROD>desc mytest Name                                      Null?    Type ----------------------------------------- -------- ---------------------------- NAME                                             VARCHAR2(6) CREATED                                            DATE ID                                               NUMBER(2) --查看索引:linuxidc@PROD>select index_name,table_name,tablespace_name,status  2  from user_indexes; INDEX_NAME      TABLE_NAME      TABLESPACE_NAME STATUS--------------- --------------- --------------- --------PK_COL1_COL2    T_IOT         MYSPACE       VALIDIDX_T4          T4              USERS         VALIDIDX_T3          T3              USERS         VALIDIND_MYTEST      MYTEST          USERS         VALID ---查看表mytest所在的空间:linuxidc@PROD>select table_name,tablespace_name  2  from user_tables  3  where table_name ="MYTEST";TABLE_NAME                   TABLESPACE_NAME------------------------------ ------------------------------MYTEST                       MYSPACE
 ---把表移动到另外一个表空间:linuxidc@PROD>alter table mytest move tablespace myspace;Table altered.#mytest表已经移动。 ---此时查看表mytest中的索引状态:linuxidc@PROD>select index_name,table_name,tablespace_name,status  2  from user_indexes;INDEX_NAME      TABLE_NAME      TABLESPACE_NAME STATUS--------------- --------------- --------------- --------PK_COL1_COL2    T_IOT         MYSPACE       VALIDIDX_T4          T4              USERS         VALIDIDX_T3          T3              USERS         VALIDIND_MYTEST      MYTEST          USERS         UNUSABLE#表mytest中的索引已经失效。 ---重建索引:linuxidc@PROD>alter index ind_mytest rebuild;Index altered.#索引已经重建。---再次查看索引的信息:linuxidc@PROD>select index_name,table_name,tablespace_name,status  2  from user_indexes;INDEX_NAME      TABLE_NAME      TABLESPACE_NAME STATUS--------------- --------------- --------------- --------PK_COL1_COL2    T_IOT         MYSPACE       VALIDIDX_T4          T4              USERS         VALIDIDX_T3          T3              USERS         VALIDIND_MYTEST      MYTEST          USERS         VALID#索引已经重建,默认情况下索引存放在users表空间里。  ----移动索引存放的表空间:linuxidc@PROD>alter table mytest move tablespace myspace;Table altered.linuxidc@PROD>select index_name,table_name,tablespace_name,status  2  from user_indexes;INDEX_NAME      TABLE_NAME      TABLESPACE_NAME STATUS--------------- --------------- --------------- --------PK_COL1_COL2    T_IOT         MYSPACE       VALIDIDX_T4          T4              USERS         VALIDIDX_T3          T3              USERS         VALIDIND_MYTEST      MYTEST          USERS         UNUSABLE
 ---重建索引:linuxidc@PROD>alter index ind_mytest rebuild tablespace myspace;Index altered. --再次查看索引的信息:INDEX_NAME      TABLE_NAME      TABLESPACE_NAME STATUS--------------- --------------- --------------- --------PK_COL1_COL2    T_IOT         MYSPACE       VALIDIDX_T4          T4              USERS         VALIDIDX_T3          T3              USERS         VALIDIND_MYTEST      MYTEST          MYSPACE       VALID#索引已经重建,并已经修改了存放的表空间。--从上面的测试过程中,发现,移动表或者直接移动索引,都会导致该表中的索引或者移动的索引失效,通过重建rebuild让索引重新正常可用。更多Oracle相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12本文永久更新链接地址