ORA-01664: Transaction which has expanded the Sort Segment has aborted

文档解释

ORA-01664: Transaction which has expanded the Sort Segment has aborted

Cause: Internal Error.

Action: Contact Oracle Support.

ORA-01664错误表示事务已经因增加索引而中止。

官方文档:ORA-01664 说明了一个事务已经因为尝试增加排序段而中止。

常见案例

正常处理方法及步骤

1.确定错误的原因。是一次失败的DDL操作,还是由一个查询调用的?是不是索引建立的速率太高?有了这些信息,就可以找到问题的源头,从而进一步解决错误。

2.最大限度地增加索引段:如果是由于事务涉及到索引段太大导致ORA-01664错误,建议尝试最大限度地增加索引段。这样可以消除这个错误,但是需要在系统表空间上投入更多的内存来维持索引。

3.精简索引:如果有多个不相关的字段放在同一个索引中,建议尽可能精简索引结构,尤其是在每次查询时不使用的字段。这样可以减少索引段的大小,从而避免ORA-01664错误。

4.改善DDL语句:如果异常发生在重新建立一个索引时,可以使用ALTER INDEX…REBUILD语句,而不是使用DROP + CREATE的方法去建立索引。使用ALTER INDEX…REBUILD,可以节省DDL中用到的时间。

5.限制查询规模:一些查询一次产生大量数据,尤其是时间范围很大的查询,这些操作会极大地承受ORA-01664错误。如果可以,请尝试将这个查询分割到多个小范围内,以避免错误发生。

6.更改查询诸如排序,统计等:由于某些查询排序操作,统计函数更多的行,这些操作也会导致ORA-01664的错误发生。如果有索引可以保存,请尽量调整这些查询,以便利用索引减少更大的排序操作。

你可能感兴趣的