我们的产品环境存在问题。突然间,异常开始显现。
ORA-01654: unable to extend index EMA.TRANSFERI2 by 128 in tablespace SYSTEM
作为问题的解决方案,我的同事添加了新的数据文件。但问题是,为什么自动扩展机制不起作用?我不是DBA,但我检查了配置,对我来说似乎没问题。它只发生在prod环境中,所以我宁愿避免试验。
我们已经知道系统表空间中的表应该移动到用户表空间。但无论如何,autoextend也应该在系统tablepsace上工作。这是我的表,数据文件和表空间的配置
TABLESPACE_NAME | PCT_FREE | PCT_USED | INITIAL_EXTENT | NEXT_EXTENT | MIN_EXTENTS | MAX_EXTENTS | PCT_INCREASE SYSTEM | 10 | 40 | 65536 | 1048576 | 1 | 2147483645 | null
FILE_NAME | FILE_ID | TABLESPACE_NAME | BYTES | BLOCKS | STATUS | RELATIVE_FNO | AUTOEXTENSIBLE | MAXBYTES | MAXBLOCKS | INCREMENT_BY | USER_BYTES | USER_BLOCKS | ONLINE_STATUS /u01/app/oracle/oradata/XE/system.dbf | 1 | SYSTEM | 629145600 | 76800 | AVAILABLE | 1 | YES | 629145600 | 76800 | 1280 | 628097024 | 76672 | SYSTEM /u01/app/oracle/oradata/XE/system2.dbf | 5 | SYSTEM | 1048576000 | 128000 | AVAILABLE | 5 | YES | 2147483648 | 262144 | 25600 | 1047527424 | 127872 | SYSTEM
TABLESPACE_NAME | BLOCK_SIZE | INITIAL_EXTENT | NEXT_EXTENT | MIN_EXTENTS | MAX_EXTENTS | MAX_SIZE | PCT_INCREASE | MIN_EXTLEN | STATUS | CONTENTS | ALLOCATION_TYPE | SEGMENT_SPACE_MANAGEMENT | BIGFILE SYSTEM | 8192 | 65536 | null | 1 | 2147483645 | 2147483645 | 65536 | ONLINE | PERMANENT | LOCAL | SYSTEM | MANUAL | NO
答案 0 :(得分:2)
system.dbf
文件的MAXBYTES值设置为629145600,因此当您的文件大小达到该限制时,无法进一步扩展。它已自动扩展到该点,但不会超出为文件指定的软限制。使用the autoextend MAXSIZE clause创建表空间时设置。
由于底层文件系统的大小,可能已设置限制,在失控/意外增长的情况下导致错误,无意中或由于现在只知道设置数据库的任何其他原因。
作为添加第二个数据文件的替代方法,您的DBA可能会使用alter database
增加现有文件的软限制。但两者都不应该轻易做到;原始限制的原因应该被理解(特别是如果文件系统由于增加而空间不足),也应该检查增长的原因。