为什么在Oracle XE上自动扩展不起作用

时间:2015-04-15 08:18:31

标签: oracle-xe

我们的产品环境存在问题。突然间,异常开始显现。

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

1 个答案:

答案 0 :(得分:2)

system.dbf文件的MAXBYTES值设置为629145600,因此当您的文件大小达到该限制时,无法进一步扩展。它已自动扩展到该点,但不会超出为文件指定的软限制。使用the autoextend MAXSIZE clause创建表空间时设置。

由于底层文件系统的大小,可能已设置限制,在失控/意外增长的情况下导致错误,无意中或由于现在只知道设置数据库的任何其他原因。

作为添加第二个数据文件的替代方法,您的DBA可能会使用alter database增加现有文件的软限制。但两者都不应该轻易做到;原始限制的原因应该被理解(特别是如果文件系统由于增加而空间不足),也应该检查增长的原因。