0%

关闭Oracle审计日志,解决因AUD$数据过大,导致SYSTEM表空间暴涨的问题

生产服务器报错,system表空间满了,拓展了表空间重启服务后正常,但是很好奇system表空间怎么会增长这么快?业务数据默认存放在USERS表空间和TEMP临时表空间中。

查询一下system表空间中占用空间最大的表

1
2
3
4
5
6
7
SELECT *
FROM (SELECT SEGMENT_NAME, SUM(BYTES) / 1024 / 1024 MB
FROM DBA_SEGMENTS
WHERE TABLESPACE_NAME = 'SYSTEM'
GROUP BY SEGMENT_NAME
ORDER BY 2 DESC)
WHERE ROWNUM < 10;

查询一下system空间占用比

1
2
3
4
5
6
7
SELECT B.TABLESPACE_NAME "表空间",
 B.BYTES / 1024 / 1024 "大小M",
 (B.BYTES - SUM(NVL(A.BYTES, 0))) / 1024 / 1024 "已使用M",
 SUBSTR((B.BYTES - SUM(NVL(A.BYTES, 0))) / (B.BYTES) * 100, 1, 5) "利用率"  FROM DBA_FREE_SPACE A,
DBA_DATA_FILES B  WHERE A.FILE_ID = B.FILE_ID AND B.TABLESPACE_NAME = 'SYSTEM'  GROUP BY B.TABLESPACE_NAME,
B.FILE_NAME,
B.BYTES ORDER BY B.TABLESPACE_NAME;

查询AUD$占用空间

1
2
3
SELECT SEGMENT_NAME, BYTES / 1024 / 1024 "占用空间M"
FROM DBA_SEGMENTS
WHERE SEGMENT_NAME = 'AUD$';

查看aud审计策略

1
show parameter audit_trail

发现数据库启用了DB级别的审计功能,相关审计级别如下:
None:是默认值,不做审计;
DB:将audit trail 记录在数据库的审计相关表中,如aud$,审计的结果只有连接信息;
DB,Extended:这样审计结果里面除了连接信息还包含了当时执行的具体语句;
OS:将audit trail 记录在操作系统文件中,文件名由audit_file_dest参数指定;

截断数据

1
truncate table aud$;  

修改spfile启动文件,关闭审计功能

1
2
3
SQL> alter system set audit_trail=NONE scope=spfile;
SQL> shutdown immediate;
SQL> startup


参考链接:
https://blog.csdn.net/melody_mr/article/details/41208849
https://blog.csdn.net/lwei_998/article/details/7394638