ITPub博客

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

移动表对索引的影响

原创 Oracle 作者:skyin_1603 时间:2016-11-17 23:36:52 0 删除 编辑
这里主要测试移动表从一个表空间到另一个表空间或者在同同一个表空间做表移动操作
对索引的影响。测试中表明:表的移动(move)会直接导致该表中的索引失效,通过重建
索引,重新让索引恢复有效可用的状态。以下是简单的测试过程。

---创建测试表:

--查看表结构:

suxing@PROD>desc mytest

 Name                                      Null?    Type

 ----------------------------------------- -------- ----------------------------

 NAME                                               VARCHAR2(6)

 CREATED                                            DATE

--添加字段:

suxing@PROD>alter table mytest add id number(2);

Table altered.

 

--查看表结构:

suxing@PROD>desc mytest

 Name                                      Null?    Type

 ----------------------------------------- -------- ----------------------------

 NAME                                               VARCHAR2(6)

 CREATED                                            DATE

 ID                                                 NUMBER(2)

---创建索引:

suxing@PROD>create index ind_mytest on mytest(id);

Index created.

#索引添加成功。

 

--查看表结构:

suxing@PROD>desc mytest

 Name                                      Null?    Type

 ----------------------------------------- -------- ----------------------------

 NAME                                               VARCHAR2(6)

 CREATED                                            DATE

 ID                                                 NUMBER(2)

 

--查看索引:

suxing@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         VALID

IDX_T4          T4              USERS           VALID

IDX_T3          T3              USERS           VALID

IND_MYTEST      MYTEST          USERS           VALID

 

---查看表mytest所在的空间:

suxing@PROD>select table_name,tablespace_name

  2  from user_tables

  3  where table_name ='MYTEST';

TABLE_NAME                     TABLESPACE_NAME

------------------------------ ------------------------------

MYTEST                         MYSPACE

---把表移动到另外一个表空间:

suxing@PROD>alter table mytest move tablespace myspace;

Table altered.

#mytest表已经移动。

 

---此时查看表mytest中的索引状态:

suxing@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         VALID

IDX_T4          T4              USERS           VALID

IDX_T3          T3              USERS           VALID

IND_MYTEST      MYTEST          USERS           UNUSABLE

#表mytest中的索引已经失效。

 

---重建索引:

suxing@PROD>alter index ind_mytest rebuild;

Index altered.

#索引已经重建。

 

---再次查看索引的信息:

suxing@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         VALID

IDX_T4          T4              USERS           VALID

IDX_T3          T3              USERS           VALID

IND_MYTEST      MYTEST          USERS           VALID

#索引已经重建,默认情况下索引存放在users表空间里。

  

----移动索引存放的表空间:

suxing@PROD>alter table mytest move tablespace myspace;

Table altered.

suxing@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         VALID

IDX_T4          T4              USERS           VALID

IDX_T3          T3              USERS           VALID

IND_MYTEST      MYTEST          USERS           UNUSABLE

---重建索引:

suxing@PROD>alter index ind_mytest rebuild tablespace myspace;

Index altered.

 

--再次查看索引的信息:

INDEX_NAME      TABLE_NAME      TABLESPACE_NAME STATUS

--------------- --------------- --------------- --------

PK_COL1_COL2    T_IOT           MYSPACE         VALID

IDX_T4          T4              USERS           VALID

IDX_T3          T3              USERS           VALID

IND_MYTEST      MYTEST          MYSPACE         VALID

#索引已经重建,并已经修改了存放的表空间。


--从上面的测试过程中,发现,移动表或者直接移动索引,都会导致该表中的
索引或者移动的索引失效,通过重建rebuild让索引重新正常可用。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31392094/viewspace-2128663/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 创建位图索引
请登录后发表评论 登录
全部评论

注册时间:2016-09-06

  • 博文量
    231
  • 访问量
    215118