最近遇到一个报错
ORA-1654: unable to extend index SYS.TEST_N3 by 6815744 in tablespace SYSTEM
查询文档发现有挺多种情况会导致这个问题,整理一下排查思路
1. 查报错表空间使用率,看是否已满
发现system表空间使用率只有70%左右,剩余20多G
2. 查对应表空间最大连续可用空间
SELECT max(bytes) FROM dba_free_space WHERE tablespace_name = '<tablespace name>';
发现远大于6.8M
3. 查对应表空间NEXT_EXTENT size
select d.FILE_NAME,
d.AUTOEXTENSIBLE,
d.BYTES / 1024 / 1024 MB,
d.INCREMENT_BY * 8 / 1024 INCREMENT_MB,
d.MAXBYTES / 1024 / 1024 max_mb
from dba_data_files d
where d.tablespace_name = 'SYSTEM'
注意INCREMENT_BY字段单位是blocks,即8KB
发现NEXT_EXTENT并不大,只有100M
4. 查报错索引NEXT_EXTENT size
select d.owner,
d.index_name,
d.tablespace_name,
d.next_extent / 1024 / 1024 next_extent_MB,
d.pct_increase
from dba_indexes d
where d.index_name='xxx';
发现NEXT_EXTENT居然有26G....刚好超出了system表空间剩余空间。这么大主要是因为没设置固定大小而设了pctincrease 100。。。瑟瑟发抖
各种情况对应解决方法参考:
Troubleshooting Guide - 'Unable to Extend / Create' Errors (文档 ID 1025288.6) Overview Of ORA-01654: Unable To Extend Index %s.%s By %s In Tablespace %s (文档 ID 146595.1) |