上午接到开发部门说数据库报错如下:

       

   很明显,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;