如何正确清理 SYSAUX 表空间中的审计表?

前言

做 Oracle DBA 的同学,大概率遇到过 SYSAUX 表空间异常增长 的问题 —— 其中一个常见 “元凶” 就是审计记录。Oracle 的审计记录(无论是传统审计的AUD$表,还是 12c + 统一审计的UNIFIED_AUDIT_TRAIL表)默认存储在SYSAUX表空间,若长期不清理,轻则导致表空间满、影响数据库性能,重则触发 “表空间不足” 错误,中断业务。

但审计记录又不能随便删 —— 金融、医疗等行业有明确的合规要求(如等保 2.0、SOX),审计记录需保留 3-7 年,删错或删早都可能引发合规风险。因此,“正确清理” 的核心是:在符合合规要求的前提下,安全释放空间,不影响数据库稳定性

本文将分「传统审计」和「统一审计」两种场景,详细讲解 SYSAUX 表空间中审计表的清理方法,适用于 Oracle 11g/12c/19c 等主流版本。

一、先明确:你用的是哪种审计?

Oracle 的审计体系分两类,清理方法完全不同,必须先区分清楚:

审计类型核心存储表适用版本默认存储位置
传统审计SYS.AUD$11g 及更早,12c + 兼容SYSAUX
统一审计SYS.UNIFIED_AUDIT_TRAIL12c 及以后(推荐)SYSAUX

如何判断当前审计类型?执行以下 SQL:

-- 1. 查看是否启用统一审计(12c+)
SELECT VALUE FROM V$OPTION WHERE PARAMETER = 'Unified Auditing';
-- 返回TRUE:统一审计;FALSE:传统审计

-- 2. 若为传统审计,确认AUD$表位置
SELECT TABLE_NAME, TABLESPACE_NAME, NUM_ROWS 
FROM DBA_TABLES 
WHERE TABLE_NAME IN ('AUD$', 'UNIFIED_AUDIT_TRAIL');

二、清理前的 3 个核心前提(必做!)

无论哪种审计,清理前必须完成以下 3 步,避免踩坑:

1. 确认审计记录保留周期

先查公司 / 行业的合规要求(如金融行业通常需保留 3 年),只清理超过保留期的历史记录。示例:若要求保留 1 年,只清理 “1 年前及更早” 的记录。

2. 备份审计记录(合规证据,不能少!)

审计记录是合规审计的核心证据,清理前必须全量备份,备份方式推荐两种:

方式 1:数据泵导出(EXPDP,推荐)
# 1. 创建导出目录(需DBA权限)
sqlplus / as sysdba
CREATE DIRECTORY audit_backup_dir AS '/u01/oracle/backup/audit';
GRANT READ, WRITE ON DIRECTORY audit_backup_dir TO system;
exit

# 2. 导出审计表(传统审计导出AUD$,统一审计导出UNIFIED_AUDIT_TRAIL)
# 传统审计示例:
expdp system/Password123! 
directory=audit_backup_dir 
dumpfile=audit_20250101.dmp 
logfile=audit_export.log 
tables=sys.aud$ 
query='WHERE NTIMESTAMP#
从10g开始,Oracle引进了SYSAUX表空间作为SYSTEM的辅助表空间,用来存放EM相关的内容,以及统计信息、AWR快照、审计信息等数据。默认情况下,随着时间推移,SYSAUX表空间会越来越大,达到分配的最大配额时,使用该表空间数据库功能可能会失败或异常[^1]。以下是一些清理Oracle SYSAUX表空间的方法: ### 清理AWR快照 AWR(Automatic Workload Repository)快照会占用SYSAUX表空间。可以通过减少快照保留时间或减少快照生成频率来释放空间。 ```sql -- 查看当前AWR快照保留时间 SELECT retention FROM dba_hist_wr_control; -- 修改AWR快照保留时间为7天(单位:分钟) EXEC DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(retention => 7*24*60); -- 查看当前AWR快照生成间隔 SELECT interval FROM dba_hist_wr_control; -- 修改AWR快照生成间隔为2小时(单位:分钟) EXEC DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(interval => 120); ``` ### 清理审计信息 如果启用了审计功能,审计信息也会占用SYSAUX表空间。可以根据需要清理旧的审计信息。 ```sql -- 删除90天前的审计记录 DELETE FROM dba_audit_trail WHERE timestamp < SYSDATE - 90; COMMIT; ``` ### 清理EM相关数据 EM(Enterprise Manager)相关的数据也存储在SYSAUX表空间中。可以清理EM历史数据。 ```sql -- 清理EM历史数据 EXEC SYSMAN.MGMT_REMOVE_HISTORY(older_than => 30); ``` ### 收缩表空间 在完成上述清理操作后,可以尝试收缩SYSAUX表空间。 ```sql -- 检查SYSAUX表空间的数据文件 SELECT file_name FROM dba_data_files WHERE tablespace_name = 'SYSAUX'; -- 收缩SYSAUX表空间的数据文件 ALTER DATABASE DATAFILE '/path/to/sysaux01.dbf' RESIZE 1024M; ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值