SQL触发器审计表数据量过大如何清理

夏宇吖_4370

夏宇吖_4370

2026-08-25

933人浏览

原创

必须用dbms_audit_mgmt清理sys.aud$,因其为受保护系统表,直接delete或truncate会报ora-00942或ora-01031错误,且破坏审计一致性;清理后需手动shrink space或move段释放空间。

sql触发器审计表数据量过大如何清理

sys.aud$ 表清理必须用 DBMS_AUDIT_MGMT,不能直接 DELETE

Oracle 审计表 sys.aud$ 是系统级表,位于 SYSTEM 或 SYSAUX 表空间,普通用户甚至 DBA 都无法直接对它执行 DELETE 或 TRUNCATE —— 会报 ORA-00942: table or view does not exist 或权限拒绝。官方唯一支持的清理方式是调用 DBMS_AUDIT_MGMT 包,否则可能破坏审计一致性或引发 ORA-600 错误。

常见错误现象:

  • 用 DELETE FROM sys.aud$ WHERE ntimestamp# 报错退出
  • 误删后发现 SELECT * FROM DBA_AUDIT_TRAIL 查询变慢或缺失历史记录
  • 手动 TRUNCATE TABLE sys.aud$ 导致后续审计开关失败(audit_trail 参数失效)

实操要点:

  • 必须用 SYS 用户登录执行,且需具备 EXECUTE_CATALOG_ROLE 权限
  • 清理前先确认归档时间戳:SELECT * FROM dba_audit_mgmt_last_arch_ts,只允许删「已归档」的数据
  • 首次使用前必须运行 init_cleanup 初始化,否则 clean_audit_trail 会静默失败

清理前务必设置 last_archive_timestamp,否则 clean_audit_trail 不生效

DBMS_AUDIT_MGMT.clean_audit_trail 不接受日期参数,它只按 last_archive_time 标记来判断哪些数据可删。这个标记是独立于物理数据的逻辑开关,不设就等于“没授权删任何数据”,命令会跑完但 sys.aud$ 行数纹丝不动。

典型误操作:

  • 跳过 set_last_archive_timestamp 直接跑 clean_audit_trail,日志显示成功,实际零删除
  • 传入的时间早于 dba_audit_mgmt_last_arch_ts 中记录的归档时间,触发 ORA-46275 错误
  • 用 SYSDATE - 7 但未考虑时区,导致跨天偏差(尤其在 RAC 环境中)

正确写法(清理 7 天前已归档数据):

BEGIN
  sys.DBMS_AUDIT_MGMT.set_last_archive_timestamp(
    audit_trail_type => sys.DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD,
    last_archive_time => SYSTIMESTAMP - 7
  );
END;

注意:SYSTIMESTAMP 比 SYSDATE 更可靠,它带时区信息,避免跨节点时间漂移。

IOPaint
IOPaint

IOPaint是基于最新人工智能技术的图像修复工具。

下载

清理后空间不释放?要手动 shrink 或 move segment

clean_audit_trail 只是逻辑删除:把行标记为“可覆盖”,并不回收磁盘空间。你执行完后查 dba_segments,AUD$ 的 BYTES 值几乎不变,SYSAUX 表空间使用率也不会降——这是正常行为,不是清理失败。

释放空间必须额外两步:

  • 如果是非 RAC 单实例,且 AUD$ 在 SYSAUX 中,运行 ALTER TABLE sys.aud$ SHRINK SPACE CASCADE(需表启用行移动)
  • 更稳妥的做法是 ALTER TABLE sys.aud$ MOVE TABLESPACE sysaux,强制重建段并压缩空块
  • 若表空间快满,可先 ALTER DATABASE DATAFILE '...sysaux01.dbf' AUTOEXTEND OFF 防止写满宕机

风险提示:MOVE 操作期间审计功能仍可用,但会短暂阻塞新审计记录写入(通常

自动化清理脚本必须加熔断和校验,别信“一次配好永不动”

生产环境曾有案例:定时任务每小时调用 clean_audit_trail,但某次归档时间戳被误设为 SYSTIMESTAMP - 30,结果连续删掉近一个月审计数据,导致安全合规审计失败。

防误删关键措施:

  • 脚本开头加校验:SELECT COUNT(*) FROM sys.aud$ WHERE ntimestamp# ,若结果 > 100 万行,自动暂停并发邮件告警
  • 每次清理后执行 ANALYZE TABLE sys.aud$ COMPUTE STATISTICS,防止后续查询因统计信息陈旧而走全表扫描
  • 硬编码保留底线,例如在 set_last_archive_timestamp 中写死 last_archive_time => GREATEST(SYSTIMESTAMP - 7, DATE '2025-01-01')

最易被忽略的一点:DBMS_AUDIT_MGMT 的清理是异步的,命令返回成功 ≠ 数据已删完。真正完成要看后台进程 ora_q00x_* 的日志,高峰期可能延迟数分钟。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
数据分析工具有哪些
数据分析工具有哪些

数据分析工具有Excel、SQL、Python、R、Tableau、Power BI、SAS、SPSS和MATLAB等。详细介绍:1、Excel,具有强大的计算和数据处理功能;2、SQL,可以进行数据查询、过滤、排序、聚合等操作;3、Python,拥有丰富的数据分析库;4、R,拥有丰富的统计分析库和图形库;5、Tableau,提供了直观易用的用户界面等等。

2023.10.12

4163

8

SQL中distinct的用法
SQL中distinct的用法

SQL中distinct的语法是“SELECT DISTINCT column1, column2,...,FROM table_name;”。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.27

891

4

SQL中months_between使用方法
SQL中months_between使用方法

在SQL中,MONTHS_BETWEEN 是一个常见的函数,用于计算两个日期之间的月份差。想了解更多SQL的相关内容,可以阅读本专题下面的文章。

2024.02.23

1089

5

SQL出现5120错误解决方法
SQL出现5120错误解决方法

SQL Server错误5120是由于没有足够的权限来访问或操作指定的数据库或文件引起的。想了解更多sql错误的相关内容,可以阅读本专题下面的文章。

2024.03.06

6041

10

sql procedure语法错误解决方法
sql procedure语法错误解决方法

sql procedure语法错误解决办法:1、仔细检查错误消息;2、检查语法规则;3、检查括号和引号;4、检查变量和参数;5、检查关键字和函数;6、逐步调试;7、参考文档和示例。想了解更多语法错误的相关内容,可以阅读本专题下面的文章。

2024.03.06

2923

4

oracle数据库运行sql方法
oracle数据库运行sql方法

运行sql步骤包括:打开sql plus工具并连接到数据库。在提示符下输入sql语句。按enter键运行该语句。查看结果,错误消息或退出sql plus。想了解更多oracle数据库的相关内容,可以阅读本专题下面的文章。

2024.04.07

6020

11

sql中where的含义
sql中where的含义

sql中where子句用于从表中过滤数据,它基于指定条件选择特定的行。想了解更多where的相关内容,可以阅读本专题下面的文章。

2024.04.29

8081

6

sql中删除表的语句是什么
sql中删除表的语句是什么

sql中用于删除表的语句是drop table。语法为drop table table_name;该语句将永久删除指定表的表和数据。想了解更多sql的相关内容,可以阅读本专题下面的文章。

2024.04.29

1110

5

sql中删除一列的命令是什么
sql中删除一列的命令是什么

在sql中,使用alter table语句可以删除一列,语法为:alter table table_name drop column column_name。想了解更多sql的相关内容,可以阅读本专题下面的文章。

2024.04.29

972

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程