手工建库时,未将表空间数据文件设置为自动扩展引起的错误:ORA-01653: unable to extend * in tablespace * 的解决:
查看数据库alert日志文件时,发现出现大量如下的错误:
Sun Dec 01 10:00:42 2013
ORA-1653: unable to extend table SYS.SCHEDULER$_EVENT_LOG by 8 in tablespace SYSAUX
Errors in file /u01/app/oracle/product/11.2.0/dbhome_1/log/diag/rdbms/bys3/bys3/trace/bys3_j000_15569.trc:
ORA-01653: unable to extend table . by in tablespace
ORA-01653: unable to extend table SYS.SCHEDULER$_EVENT_LOG by 8 in tablespace SYSAUX
Sun Dec 01 11:00:27 2013
ORA-1653: unable to extend table SYS.WRI$_ADV_PARAMETERS by 128 in tablespace SYSAUX
Sun Dec 01 12:00:32 2013
ORA-1653: unable to extend table SYS.WRI$_ADV_PARAMETERS by 128 in tablespace SYSAUX
Sun Dec 01 13:00:36 2013
ORA-1653: unable to extend table SYS.WRI$_ADV_PARAMETERS by 128 in tablespace SYSAUX
Sun Dec 01 14:00:40 2013
ORA-1653: unable to extend table SYS.SCHEDULER$_EVENT_LOG by 8 in tablespace SYSAUX
ORA-1653: unable to extend table SYS.SCHEDULER$_EVENT_LOG by 8 in tablespace SYSAUX
Sun Dec 01 14:00:41 2013
ORA-1653: unable to extend table SYS.WRI$_ADV_PARAMETERS by 128 in tablespace SYSAUX
Sun Dec 01 15:00:45 2013
ORA-1653: unable to extend table SYS.WRH$_IOSTAT_FILETYPE by 8 in tablespace SYSAUX
MMON Flush encountered SYSAUX out of space error(1653).
MMON (emergency) purge of WR snapshots (188) and older
Sun Dec 01 15:00:49 2013
从报错信息可以很直观的看出:SYSAUX表空间中的表无法扩展,
原因一般为:数据文件空间不足且未设置autoextend on属性或者用户磁盘限额不足导致用户的表无法扩展。
验证数据文件使用率及属性如下:
SYS@ bys3>col file_name for a40
SYS@ bys3>select file_name
,autoextensible,increment_by from
dba_data_files; 查数据文件是否设置autoextend on属性
要从 dba_data_files 查
FILE_NAME AUT INCREMENT_BY
---------------------------------------- --- ------------
/u01/oradata/bys3/system01.dbf NO 0
/u01/oradata/bys3/sysaux01.dbf
NO 0
/u01/oradata/bys3/undotbs01.dbf NO 0
/u01/oradata/bys3/user01.dbf NO 0
SYS@ bys3>
select TABLESPACE_NAME,sum(bytes/1024/1024) from dba_free_space group by tablespace_name; 通过这语句查各表空间使用率,因SYSAUX没有FREE SPACE,在这没显示。
TABLESPACE_NAME SUM(BYTES/1024/1024)
------------------------------ --------------------
UNDOTBS1 58.0625
USERS 48.6875
SYSTEM 155.375
确定问题后,解决方法:将sysaux表空间的数据文件属性改为自动扩展 autoextend on
SYS@ bys3>alter tablespace sysaux autoextend on;
---此语句只能修改大文件表空间时使用。
alter tablespace sysaux autoextend on
*
ERROR at line 1:
ORA-32773: operation not supported for smallfile tablespace SYSAUX
SYS@ bys3>
alter database datafile '/u01/oradata/bys3/sysaux01.dbf' autoextend on;
--使用此语句修改数据文件的属性
Database altered.
SYS@ bys3>select file_name,autoextensible,increment_by from dba_data_files;
---修改后查询数据文件属性,已经更改为autoextend on
FILE_NAME AUT INCREMENT_BY
---------------------------------------- --- ------------
/u01/oradata/bys3/system01.dbf NO 0
/u01/oradata/bys3/sysaux01.dbf YES 1
/u01/oradata/bys3/undotbs01.dbf NO 0
/u01/oradata/bys3/user01.dbf NO 0
SYS@ bys3>select TABLESPACE_NAME,sum(bytes/1024/1024) free_mb from dba_free_space group by tablespace_name;
--修改后查询表空间剩余,SYSAUX已经自动扩展了一个区--64K. 详见:http://blog.csdn.net/q947817003/article/details/11370881
TABLESPACE_NAME FREE_MB
------------------------------ ----------
SYSAUX .0625 ---这里即扩展了一个extent,
UNDOTBS1 58.0625
USERS 48.6875
SYSTEM 155.375
到这里,问题就已经得到解决!
可以将SYSTEM及user表空间的数据文件都设置为autoextend on
SYS@ bys3>alter database datafile '/u01/oradata/bys3/system01.dbf' autoextend on;
Database altered.
SYS@ bys3>alter database datafile '/u01/oradata/bys3/user01.dbf' autoextend on;
Database altered.
SYS@ bys3>select file_name,bytes/1024/1024 total_MB,user_bytes/1024/1024 user_mb,AUTOEXTENSIBLE from dba_data_files;
FILE_NAME TOTAL_MB USER_MB AUT
---------------------------------------- ---------- ---------- ---
/u01/oradata/bys3/system01.dbf 500 499 YES
/u01/oradata/bys3/sysaux01.dbf 325 324 YES
/u01/oradata/bys3/undotbs01.dbf 200 199 NO
/u01/oradata/bys3/user01.dbf 50 49 YES