暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 19c 审计机制变化:从 DBA_AUDIT_SESSION 到统一审计

www 2025-02-10
619

在数据库管理领域,Oracle 一直处于行业领先地位,不断对其功能进行升级和优化。其中,审计机制的改进是一个重要的方面。在 Oracle 19c 中,视图DBA_AUDIT_SESSION的行为和可用性相较于 11g 发生了显著变化,这主要是因为 Oracle 引入了统一审计(Unified Auditing)机制。本文将深入探讨这些变化背后的原因和影响,并提供相应的解决方案。

一、DBA_AUDIT_SESSION 在 19c 中的变化

传统审计的废弃

DBA_AUDIT_SESSION是传统审计(Traditional Auditing)的视图,它仅在未启用统一审计时才有效。从 Oracle 12c 开始,统一审计被引入,到了 19c,这一功能得到了进一步强化并被默认推荐使用。当统一审计启用后,审计数据不再写入传统审计表(如SYS.AUD$),而是存储在统一审计视图UNIFIED_AUDIT_TRAIL中。这意味着,传统的审计方式在新的 Oracle 版本中逐渐被淘汰,数据库管理员需要适应这种新的审计数据存储方式。

视图的兼容性

如果数据库未启用统一审计(例如通过手动关闭),DBA_AUDIT_SESSION仍可显示连接和断开记录。然而,一旦启用了统一审计,该视图将为空。这是因为所有的审计数据都迁移到了新的统一审计框架中,传统视图无法再获取到最新的审计信息。这就要求管理员在使用DBA_AUDIT_SESSION视图时,首先要确认当前数据库的审计模式。

二、11g 与 19c 默认设置下的差异

Oracle 11g 的默认审计行为

在 11g 中,默认使用传统审计。此时,参数audit_trail设置为DB,审计记录会存储在SYS.AUD$表中。这使得DBA_AUDIT_SESSION可以直接查询到登录 / 登出记录,管理员可以方便地通过这个视图监控数据库的连接情况。

Oracle 19c 的默认审计行为

在 19c 中,统一审计可能默认启用(具体取决于安装选项)。一旦启用,所有的审计记录(包括连接事件)都会写入UNIFIED_AUDIT_TRAIL视图。而传统审计表(如SYS.AUD$)将不再更新,这直接导致DBA_AUDIT_SESSION无法显示数据。这种默认设置的变化,可能会让习惯了 11g 审计方式的管理员在 19c 中找不到登录记录。

三、为什么 19c 默认情况下可能看不到登录记录?

统一审计的启用

如果数据库在安装时选择启用统一审计,或者通过参数unified_auditing设置为TRUE,那么传统审计视图(如DBA_AUDIT_SESSION)将不再有效。此时,需要通过UNIFIED_AUDIT_TRAIL视图来查询登录记录。管理员需要及时了解这种变化,避免在查看登录记录时出现困惑。

审计策略的差异

统一审计要求显式定义审计策略(Audit Policy)。例如,要捕获CONNECTDISCONNECT事件,就需要创建相应的策略。否则,即使启用了统一审计,也可能会遗漏相关记录。这就要求管理员在使用统一审计时,要仔细配置审计策略,确保能够获取到所需的审计信息。

四、解决方案:如何在 19c 中查看登录记录?

检查统一审计状态

可以使用以下 SQL 语句检查统一审计是否启用:

SELECT value FROM v$option WHERE parameter = 'Unified Auditing';

如果返回TRUE,则说明统一审计已启用。

查询统一审计视图

启用统一审计后,需要使用UNIFIED_AUDIT_TRAIL视图来查询登录记录。可以使用以下 SQL 语句按条件筛选登录事件:

SELECT event_timestamp, dbusername, action_name;

FROM unified_audit_trail;

WHERE action_name IN ('LOGON', 'LOGOFF');

创建或调整审计策略

如果需要记录连接事件,就需要创建审计策略。可以使用以下 SQL 语句创建并应用审计策略:

CREATE AUDIT POLICY logon_policy ACTIONS LOGON;

AUDIT POLICY logon_policy;

五、传统审计与统一审计的迁移

从传统审计迁移

如果需要继续使用传统审计,就需要禁用统一审计。不过,这需要重新编译数据库并重启,操作较为复杂。而且,Oracle 官方建议逐步迁移到统一审计框架,以充分利用新审计机制的优势。

性能与管理优化

统一审计通过策略化配置减少了冗余审计记录,支持更细粒度的控制(如仅审计顶级语句),同时减少了SYSTEM表空间的占用问题。这使得数据库的性能和管理效率都得到了提升,也是推荐使用统一审计的重要原因。

六、总结

19c 的变化本质

Oracle 19c 通过统一审计重构了审计机制,传统审计组件(如DBA_AUDIT_SESSION)仅在未启用新框架时才有效。这种变化要求数据库管理员及时更新知识,适应新的审计方式。

默认无数据的根本原因

统一审计的启用导致传统审计表不再更新,因此需要通过UNIFIED_AUDIT_TRAIL和策略配置来获取登录记录。管理员在使用 19c 时,要特别注意这些变化,确保能够有效地进行审计工作。

通过以上分析,我们可以看到 Oracle 19c 的统一审计机制虽然带来了一些变化,但也为数据库审计提供了更强大、更灵活的功能。只要我们掌握了这些变化,就能更好地利用 Oracle 19c 的审计功能,保障数据库的安全和稳定运行。

最后修改时间:2025-02-10 10:16:51
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论