ORA-38912: An index must be specified in the index hint

文档解释

ORA-38912: An index must be specified in the index hint

Cause: Index specification was missing in an IGNORE_ROW_ON_DUPKEY_INDEX or CHANGE_DUPKEY_ERROR_INDEX hint.

Action: In the hint, specify a unique index that exists on the table.

ORA-38912错误代表一个必须被指定的索引却没有被指定,出现这个错误是因为你在ORACLE数据库中指定了一个IndexHint(索引指示),但是没有指定对应的索引。

具体来讲,ORA-38912错误是由下列SQL语句而引发的:

SELECT /*+ INDEX(tbl,’ ‘) */ FROM tbl;

官方解释

ORA-38912表明在索引指示中没有指定索引。必须为 INDEX、INDEX_DESC 或者 INDEX_ASC 指定一个索引。

常见案例

你可能在SELECT语句中加入了索引指示,但是没有指定一个具体的索引。在使用Index Hint的语句中,必须指定一个索引名称,如果这部分内容没有被指定,你会获得ORA-38912错误。

一般处理方法及步骤

1. 检查你的INDEX指示语句是否包含一个索引的名称,如果没有,则添加一个。比如:

SELECT /*+ INDEX(tbl,’index_name’) */ FROM tbl;

2.确定表tbl中有一个叫index_name的索引,如果没有,则需要创建一个新索引。

3.如果你不确定要使用什么索引,可以使用Oracle Explain Plan工具来给出最佳建议。

4. 也可以使用Oracle优化器自动挑选一个最佳的索引,只需保留INDEX操作,但将索引名改为FIRST_ROWS。

你可能感兴趣的