文档解释
ORA-10655: Segment can be shrunk
Cause: Error message returned when called in probe mode by OEM
Action: None
ORA-10655是一个段缩小错误,当引擎试图从一个段中删除数据,而该段没有得到正确的支持时,它会发生。
官方解释
ORA-10655:段无法缩小。
此消息指示无法缩小数据段,因为它受到约束(例如,没有内容的内部/抛出块、重叠空闲空间、左右定界块)。
常见案例
如果您使用ALTER SEGMENT 命令试图缩小一个表空间上的段,例如要缩小一个索引,然后您可能会收到ORA-10655错误。这通常发生在当在表空间末尾没有可空间收缩时报告此错误。
正常处理方法及步骤
1.确定段收缩是否受限。
可以通过使用后台获得结果的SQL命令来实现:
SELECT * FROM DBA_SEGMENTS
WHERE SEGMENT_NAME = ‘segment_name’;
关注shrinkable_blks字段的值。如果它是0,则表明段收缩受限。
2.确定受限的原因。
可以通过使用后台获得结果的SQL命令来实现:
SELECT * FROM DBA_EXTENTS
WHERE SEGMENT_NAME = ‘segment_name’;
关注freelist_groups和pct_free字段的值。如果它们不完全等于0,则表明段收缩受限。
3.如果受限,请查询并解决受限原因。
例如,如果freelist_groups=1,则可以删除freelists组:
ALTER TABLE table_name NOLOGGING DROP STORAGE(FREELISTS 1);
4.收缩段。
ALTER SEGMENT segment_name SHRINK SPACE;