oracle 影响索引吗,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        VALID

IDX_T4          T4              USERS          VALID

IDX_T3          T3              USERS          VALID

IND_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        VALID

IDX_T4          T4              USERS          VALID

IDX_T3          T3              USERS          VALID

IND_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        VALID

IDX_T4          T4              USERS          VALID

IDX_T3          T3              USERS          VALID

IND_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        VALID

IDX_T4          T4              USERS          VALID

IDX_T3          T3              USERS          VALID

IND_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        VALID

IDX_T4          T4              USERS          VALID

IDX_T3          T3              USERS          VALID

IND_MYTEST      MYTEST          MYSPACE        VALID

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

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

0b1331709591d260c1c78e86d0c51c18.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值