修改索引时只调用索引名提示索引不存在

问题现象

修改索引只调用索引名提示索引不存在。举例如下。

  1. --创建分区表索引HR_staffS_p1_index1,不指定索引分区的名称。
  2. CREATE INDEX HR_staffS_p1_index1 ON HR.staffS_p1 (staff_ID) LOCAL;
  3. --创建分区索引HR_staffS_p1_index2,并指定索引分区的名称。
  4. CREATE INDEX HR_staffS_p1_index2 ON HR.staffS_p1 (staff_ID) LOCAL
  5. (
  6. PARTITION staff_ID1_index,
  7. PARTITION staff_ID2_index TABLESPACE example3,
  8. PARTITION staff_ID3_index TABLESPACE example4
  9. ) TABLESPACE example;
  10. --修改索引分区staff_ID2_index的表空间为example1,提示索引不存在。
  11. ALTER INDEX HR_staffS_p1_index2 MOVE PARTITION staff_ID2_index TABLESPACE example1;

原因分析

推测是当前模式是public模式,而不是hr模式,导致检索不到该索引。

  1. --执行如下命令验证推测,发现调用成功。
  2. ALTER INDEX hr.HR_staffS_p1_index2 MOVE PARTITION staff_ID2_index TABLESPACE example1;
  3. --修改当前会话的schemahr
  4. ALTER SESSION SET CURRENT_SCHEMA TO hr;
  5. --执行如下命令修改索引,即可执行成功。
  6. ALTER INDEX HR_staffS_p1_index2 MOVE PARTITION staff_ID2_index TABLESPACE example1;

处理办法

在操作表、索引、视图时加上schema引用,格式如下。

  1. schema.table