文档解释
ORA-13145: failed to generate range list
Cause: This is an internal error.
Action: Contact Oracle Support Services.
ORA-13145: failed to generate range list 是一个由 Oracle 引擎抛出的错误,通常报告给用户,其错误消息指出:针对一些指定的表或表列,在 Oracle 中创建索引时出错了。例如,当调用 CREATE INDEX 等句时,很可能发生此错误消息。
官方解释
常见案例
1、索引列中包含不允许排序的类型,以致无法使用,例如,将一个四位整数加入一个日期类型的索引;
2、包含保留字,比如将“Null”或“Not Null”作为索引;
3、索引里有冗余列,比如在一个索引中填写了一个没有任何数据的列。
正常处理方法及步骤
1、确认索引是否有冗余列,并且确认添加的每列的类型都是可以排序的;
2、重新检查索引的真实意图,底层表的每一列的数据类型是否存在问题,会不会抛出类似的 Oracle 错误;
3、如果不能解决问题,可以尝试重建索引,但需要根据需求,明确需要什么样的新索引,以及不需要被保留的索引或列;
4、在发出 DROP INDEX 命令之前,请务必备份数据库,并确认新索引和不需要保留的列是否正确;
5、在下一次登录 Oracle 时,尝试再次创建索引;
6、如果在创建索引时还报错,检查数据表中是否出现新的不可预知的问题,并使用如修复表(repair table)等可以解决此问题的 Oracle 命令;
7、如果出现结构性问题,例如类型不匹配,请查看完整的 CREATE INDEX 语句,并得出解决方案;
8、仔细检查代码和索引是否具有明确的执行计划;
9、最后,执行 Create Index 命令,重建索引,使用新索引的特性。