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。