上午接到开发部门说数据库报错如下:
很明显,ORA-01653 unable to extend table”的错误指向SYSTEM表空间不能分配新的空间,并且指向AUD$审计占用了大部分表空间。
发生ORA--01653基本有两种原因:
一、表空间空间不足
二、未开启自动增长导致
三、根据如上报错,可以基本判断是因为审计(AUD$)过大导致SYSTEM表空间不足。 SYSTEM表空间主要存储一下数据库动态视图、基表、数据字典等。
排查及解决方法如下:
一、查看表空间使用率,发现SYSTEM表空间使用率已达到99.7%。
二、是否开启AUDIT审计功能(Oracle 11g 默认开启审计功能)
SQL> show parameter audit (AUDIT_TRAIL有值时为开启状态)
三、查看AUD$基表大小及数据量(发现AUD$表占用了SYSTEM表空间9.3G的空间)
=========从dba_segments中找出占用SYSTEM表空间排名前10的大对象
select * from (select SEGMENT_NAME,sum(bytes)/1024/1024 sx from dba_segments
where tablespace_name='SYSTEM' group by segment_name) where sx>100 order by sx desc;
四、清空AUD$表
SQL> truncate table SYS.AUD$;
五、再次检查表空间使用率,发现SYSTEM表空间使用率降低为7.7%
=========建议其他解决方法:
1、Oracle 11g 默认开启AUDIT功能,如SYSTEM表空间自增会不断增大空间使用,所以建议根据业务实际需求开启/关闭AUDIT功能,方法如下。
SQL>alter system set audit_trail=none scope=spfile;
直接使用spfile文件中的审计功能参考audit_trail为none,即关闭审计功能。
执行完后,重启数据库。
启动后查看:
SQL> show parameter audit_trail
2、增加数据文件
SQL>alter tablespace SYSTEM add datafile '/****' size 100m autoextend on next 32m maxsize 1024m;