oracle审计日志自动清理需严格按序执行三步:先调用dbms_audit_mgmt.init_cleanup初始化框架,再启用cleanup_os_audit_job等调度作业,最后确保clean_audit_trail参数与审计类型(db/unified/os)完全匹配,缺一不可。
oracle 审计日志不自动清理,sys.aud$ 表或 audit_file_dest 目录会持续膨胀,最终可能耗尽 system 表空间或文件系统空间——这不是“会不会”的问题,而是“多久会”的问题。自动清理必须显式启用调度作业、初始化框架、并匹配审计类型,缺一不可。
DB 模式下 CLEAN_AUDIT_TRAIL 不删数据?先查 INIT_CLEANUP 是否执行过
调用 DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAIL 却没删任何记录,最常见原因是根本没初始化审计管理框架。该函数静默失败,不报错也不清理。
- 必须先运行:
BEGIN DBMS_AUDIT_MGMT.INIT_CLEANUP(audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_DB, default_cleanup_interval => 24); END; -
default_cleanup_interval单位是小时,设为0表示禁用自动调度(只支持手动调用) - 初始化后,才能在
DBA_AUDIT_MGMT_CONFIG_PARAMS中查到配置;否则视图为空,说明框架未就绪 - 若已用统一审计(
AUDIT_TRAIL=NONE),此处必须用AUDIT_TRAIL_UNIFIED,混用类型会导致“无报错、无效果”
CLEANUP_OS_AUDIT_JOB 为什么始终 disabled?手动启用是硬性步骤
Oracle 19c 默认创建了清理作业 CLEANUP_OS_AUDIT_JOB,但它初始状态永远是 DISABLED。没人手动启用,它就永远不会跑。
- 检查状态:
SELECT job_name, enabled FROM dba_scheduler_jobs WHERE job_name = 'CLEANUP_OS_AUDIT_JOB'; - 启用命令:
BEGIN DBMS_SCHEDULER.ENABLE('CLEANUP_OS_AUDIT_JOB'); END; - 注意:作业名是
CLEANUP_OS_AUDIT_JOB,不是CLEANUP_AUDIT_JOB或其他变体 - 该作业依赖
DBMS_AUDIT_MGMT框架,所以必须先完成INIT_CLEANUP,否则启用后仍不会触发实际清理
OS 模式审计文件清理失败?权限和路径比参数更关键
设了 audit_trail=OS,但 audit_file_dest 目录里文件越积越多,往往不是策略问题,而是 Oracle 进程根本写不进、也删不了。
- 目录必须由
oracle用户拥有,且权限严格为drwxr-x---(组不能有写权,否则 Oracle 拒绝操作) - 确认路径真实存在:
SELECT value FROM v$parameter WHERE name = 'audit_file_dest';,然后ls -ld验证属主和权限 - Linux 启用 SELinux 时,需确保上下文正确:
chcon -t oracle_home_t <path></path> -
CLEAN_AUDIT_TRAIL清理 OS 文件时,AUDIT_TRAIL_TYPE必须明确指定为DBMS_AUDIT_MGMT.AUDIT_TRAIL_OS,不能省略
别碰 DELETE FROM SYS.AUD$,收缩和清理必须走标准接口
直接 DELETE FROM SYS.AUD$ 是高危操作:锁表、爆 undo、拖慢归档、甚至引发实例挂起。Oracle 明确禁止此做法。
- 清理必须用
DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAIL,它内部做分批删除+空间回收 - 清理后若需立即释放空间,可对
SYS.AUD$执行:ALTER TABLE SYS.AUD$ SHRINK SPACE CASCADE; - 但
SHRINK要求表空间使用 ASSM(自动段空间管理),且用户要有ALTER ANY TABLE权限 - 统一审计模式下,
UNIFIED_AUDIT_TRAIL是只读视图,清理只能靠CLEAN_AUDIT_TRAIL+ 调度作业,没有替代路径
真正容易被忽略的点是:初始化(INIT_CLEANUP)、启用作业(ENABLE)、审计类型匹配(AUDIT_TRAIL_DB / AUDIT_TRAIL_UNIFIED / AUDIT_TRAIL_OS)这三步必须严格按顺序执行,且每一步都有独立验证方式——漏掉任意一个,清理就形同虚设。











