为什么 Oracle XE 上的自动扩展不起作用
Why autoextend on Oracle XE not worked
我们的产品环境有问题。突然开始出现异常
ORA-01654: unable to extend index EMA.TRANSFERI2 by 128 in tablespace SYSTEM
作为问题的解决方案,我的同事添加了新的数据文件。但问题是,为什么自动扩展机制不起作用?我不是 DBA,但我检查了配置,对我来说似乎没问题。它只发生在产品环境中,所以我宁愿避免试验。
我们在系统 table 空间中有 table,我已经知道,应该移至用户 table 空间。但无论如何,autoextend 也应该在系统 tablepsace 上工作。这是我的 table、数据文件和 tablespace
配置
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
您的 system.dbf
文件的 MAXBYTES 值设置为 629145600,因此当您的文件大小达到该限制时,无法进一步扩展。它已经自动扩展到那个点,但不会超出为文件指定的软限制。这是在创建 tablespace 时设置的,使用 the autoextend MAXSIZE clause.
限制可能是由于底层文件系统的大小而设置的,在 runaway/unexpected 增长的情况下导致错误,无意中,或者由于现在只有设置数据库的人知道的一些其他原因向上。
作为添加第二个数据文件的替代方法,您的 DBA 可以使用 alter database
增加现有文件的软限制。但是两者都不应该掉以轻心。应该理解最初限制的原因(特别是如果文件系统由于增加而可能 运行 超出 space)并且也应该检查增长的原因。
我们的产品环境有问题。突然开始出现异常
ORA-01654: unable to extend index EMA.TRANSFERI2 by 128 in tablespace SYSTEM
作为问题的解决方案,我的同事添加了新的数据文件。但问题是,为什么自动扩展机制不起作用?我不是 DBA,但我检查了配置,对我来说似乎没问题。它只发生在产品环境中,所以我宁愿避免试验。
我们在系统 table 空间中有 table,我已经知道,应该移至用户 table 空间。但无论如何,autoextend 也应该在系统 tablepsace 上工作。这是我的 table、数据文件和 tablespace
配置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
您的 system.dbf
文件的 MAXBYTES 值设置为 629145600,因此当您的文件大小达到该限制时,无法进一步扩展。它已经自动扩展到那个点,但不会超出为文件指定的软限制。这是在创建 tablespace 时设置的,使用 the autoextend MAXSIZE clause.
限制可能是由于底层文件系统的大小而设置的,在 runaway/unexpected 增长的情况下导致错误,无意中,或者由于现在只有设置数据库的人知道的一些其他原因向上。
作为添加第二个数据文件的替代方法,您的 DBA 可以使用 alter database
增加现有文件的软限制。但是两者都不应该掉以轻心。应该理解最初限制的原因(特别是如果文件系统由于增加而可能 运行 超出 space)并且也应该检查增长的原因。