You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何利用统一审计跟踪审计Oracle 19C指定Schema的所有DDL操作?

Oracle 19C 审计指定Schema所有DDL操作的统一审计方案

一、确认统一审计已启用

Oracle 19C默认启用统一审计,可通过以下语句验证:

SELECT VALUE FROM V$OPTION WHERE PARAMETER = 'Unified Auditing';

返回结果为TRUE则表示统一审计已启用;若未启用,需按照Oracle官方文档完成配置(通常需重启数据库)。

二、创建针对指定Schema的DDL审计策略

使用ON SCHEMA关键字可直接覆盖目标Schema下所有现有及未来创建的对象,无需逐个指定表/视图,完美解决新建对象的审计覆盖问题。

创建审计策略

CREATE AUDIT POLICY MYSCHEMA_DDL_AUDIT
ACTIONS ALL DDL ON MYSCHEMA;

ALL DDL包含以下核心操作:

  • 表:CREATE、ALTER、DROP、TRUNCATE
  • 视图:CREATE、ALTER、DROP
  • 存储过程/函数/包:CREATE、ALTER(含编译)、DROP
  • 其他DDL操作:如创建同义词、序列、触发器等(若需排除特定操作,可参考下文修改策略)

激活审计策略

AUDIT POLICY MYSCHEMA_DDL_AUDIT;

三、自定义审计范围(可选)

若需排除部分DDL操作(例如不审计同义词创建),可修改策略:

ALTER AUDIT POLICY MYSCHEMA_DDL_AUDIT
EXCEPTIONS CREATE SYNONYM, DROP SYNONYM ON MYSCHEMA;

四、查询审计结果

通过UNIFIED_AUDIT_TRAIL视图查询审计记录,示例语句:

SELECT 
  EVENT_TIMESTAMP  AS 操作时间,
  DBUSERNAME       AS 执行用户,
  ACTION_NAME      AS 操作类型,
  OBJECT_SCHEMA    AS 对象所属Schema,
  OBJECT_NAME      AS 对象名称,
  SQL_TEXT         AS 执行SQL
FROM UNIFIED_AUDIT_TRAIL
WHERE OBJECT_SCHEMA = 'MYSCHEMA'
  AND ACTION_TYPE = 'DDL'
ORDER BY EVENT_TIMESTAMP DESC;

也可通过指定具体ACTION_NAME来缩小查询范围,例如只看表的TRUNCATE操作:

SELECT * FROM UNIFIED_AUDIT_TRAIL
WHERE OBJECT_SCHEMA = 'MYSCHEMA'
  AND ACTION_NAME = 'TRUNCATE TABLE';

五、权限说明

  • 创建/修改审计策略:需拥有AUDIT_ADMIN角色
  • 查询审计记录:需拥有SELECT ANY DICTIONARY权限或直接授予SELECT ON SYS.UNIFIED_AUDIT_TRAIL权限

内容的提问来源于stack exchange,提问作者nightmare637

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 06:40:15