审计级别未启用扩展模式导致查询 DBA_AUDIT_TRAIL 时 SQL_TEXT 列为空

ops/2025/2/21 4:15:09/

如果查询 DBA_AUDIT_TRAIL 时发现 SQL_TEXT 列为空,但其他字段(如 OS_USERNAMEUSERNAMETIMESTAMP 等)有数据,可能是由于以下原因之一。以下是可能的原因及解决方法:


1. 审计级别未启用扩展模式

默认情况下,Oracle 的审计功能可能不会捕获完整的 SQL 语句。需要启用扩展模式(EXTENDED)才能记录 SQL_TEXT

检查当前审计级别
sql">-- 查看当前审计级别
SHOW PARAMETER AUDIT_TRAIL;
  • 如果 AUDIT_TRAIL 的值为 DB,则只会记录基本的审计信息。
  • 如果 AUDIT_TRAIL 的值为 DB, EXTENDED,则会记录完整的 SQL 语句。
启用扩展模式
sql">-- 修改审计级别为 DB, EXTENDED
ALTER SYSTEM SET AUDIT_TRAIL=DB, EXTENDED SCOPE=SPFILE;-- 重启数据库使配置生效
SHUTDOWN IMMEDIATE;
STARTUP;
验证扩展模式是否生效
sql">-- 查看审计日志
SELECT OS_USERNAME, USERNAME, TIMESTAMP, SQL_TEXT
FROM DBA_AUDIT_TRAIL
WHERE ACTION_NAME = 'SELECT';

2. 审计策略未捕获 SQL 语句

即使启用了扩展模式,审计策略可能未配置为捕获 SQL_TEXT

检查当前审计策略
sql">-- 查看当前审计策略
SELECT * FROM DBA_STMT_AUDIT_OPTS;
启用捕获 SQL 语句的审计策略
sql">-- 启用 SELECT 审计并捕获 SQL 语句
AUDIT SELECT TABLE BY ACCESS;

3. 统一审计(Unified Auditing)未启用

如果使用的是 Oracle 12c 及以上版本,并且启用了统一审计(Unified Auditing),审计日志会写入 UNIFIED_AUDIT_TRAIL 表,而不是 DBA_AUDIT_TRAIL

检查是否启用了统一审计
sql">-- 查看是否启用了统一审计
SELECT VALUE FROM V$OPTION WHERE PARAMETER = 'Unified Auditing';
  • 如果返回 TRUE,则表示启用了统一审计。
查询统一审计日志
sql">-- 查看统一审计日志
SELECT OS_USERNAME, USERNAME, EVENT_TIMESTAMP, SQL_TEXT
FROM UNIFIED_AUDIT_TRAIL
WHERE SQL_TEXT LIKE '%SELECT%';

4. SQL 语句未触发审计

某些 SQL 语句可能不会触发审计,或者审计策略未覆盖这些语句。

检查审计日志
sql">-- 查看审计日志
SELECT * FROM DBA_AUDIT_TRAIL WHERE ACTION_NAME = 'SELECT';
确保审计策略覆盖所有 SELECT 语句
sql">-- 启用对所有用户的 SELECT 审计
AUDIT SELECT TABLE BY ACCESS;

5. 审计日志被截断或清理

如果审计日志被截断或清理,可能导致 SQL_TEXT 丢失。

检查审计日志保留策略
sql">-- 查看审计日志保留策略
SELECT * FROM DBA_AUDIT_MGMT_CONFIG_PARAMS;
调整审计日志保留策略
sql">-- 设置审计日志保留时间为 30 天
BEGINDBMS_AUDIT_MGMT.SET_LAST_ARCHIVE_TIMESTAMP(AUDIT_TRAIL_TYPE => DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD,LAST_ARCHIVE_TIME => SYSTIMESTAMP - INTERVAL '30' DAY);
END;

6. 数据库版本或配置限制

某些 Oracle 版本或配置可能对审计功能有限制。例如:

  • 标准版 Oracle 可能不支持高级审计功能。
  • 如果启用了 UNIFIED_AUDIT_TRAIL,审计日志会写入 UNIFIED_AUDIT_TRAIL 表。
检查数据库版本
sql">-- 查看数据库版本
SELECT * FROM V$VERSION;
检查统一审计配置
sql">-- 查看统一审计日志
SELECT * FROM UNIFIED_AUDIT_TRAIL WHERE SQL_TEXT LIKE '%SELECT%';

7. SQL 语句本身为空

在某些情况下,SQL_TEXT 可能为空,例如:

  • 查询系统视图(如 DBA_TABLES)。
  • 查询缓存中的数据。
检查 SQL 语句是否被审计
sql">-- 查看审计日志中是否有特定 SQL 语句
SELECT * FROM DBA_AUDIT_TRAIL WHERE SQL_TEXT IS NOT NULL;

总结

如果 DBA_AUDIT_TRAIL 中的 SQL_TEXT 为空,可以按照以下步骤排查:

  1. 启用扩展模式:确保 AUDIT_TRAIL 参数设置为 DB, EXTENDED
  2. 检查审计策略:确保已启用 SELECT 审计并捕获 SQL 语句。
  3. 检查统一审计:如果启用了统一审计,查看 UNIFIED_AUDIT_TRAIL 表。
  4. 检查审计日志保留策略:确保审计日志未被清理或截断。

如果问题仍未解决,建议联系数据库管理员(DBA)进一步排查。

注意:查询缓存中的数据或者系统视图不会触发审计,所以不是所有select语句执行完都能查到审计中的记录。


http://www.ppmy.cn/ops/160140.html

相关文章

青少年编程与数学 02-009 Django 5 Web 编程 17课题、中间件

青少年编程与数学 02-009 Django 5 Web 编程 17课题、中间件 一、中间件中间件的特点中间件的作用 二、应用场景1. **消息传递**2. **数据库管理**3. **负载均衡**4. **缓存**5. **身份验证和授权**6. **企业应用集成**7. **云计算平台** 三、Django中的中间件中间件的工作原理…

二级指针略解【C语言】

以int** a为例 1.二级指针的声明 a 是一个指向 int*(指向整型的指针)的指针,即二级指针。 通俗的讲,a是一个指向指针的指针,对a解引用会是一个指针。 它可以用于操作动态分配的二维数组、指针数组或需要间接修改指针…

macOS部署DeepSeek-r1

好奇,跟着网友们的操作试了一下 网上方案很多,主要参考的是这篇 DeepSeek 接入 PyCharm,轻松助力编程_pycharm deepseek-CSDN博客 方案是:PyCharm CodeGPT插件 DeepSeek-r1:1.5b 假设已经安装好了PyCharm PyCharm: the Pyth…

力扣-二叉树-501 二叉搜索树的众数

思路 二叉搜索树的特性就是中序遍历有序&#xff0c;所以思考时可以先按照有序数组思考 代码 class Solution { public:vector<int> result;TreeNode* pre nullptr;int count 1;int maxCount 0;void travesl(TreeNode* node){if(node nullptr) return;travesl(nod…

Linux系统:ubuntu系统几款系统界面化工具的区别(xubuntu-desktop和ubuntu-desktop和kubuntu-desktop)

‌Xubuntu-desktop、Ubuntu-desktop和Kubuntu-desktop的主要区别在于它们使用的桌面环境、系统资源占用以及用户界面设计。 主要区别 桌面环境系统资源占用用户界面设计 桌面环境 ‌Xubuntu-desktop‌&#xff1a;使用Xfce桌面环境&#xff0c;这是一个轻量级的桌面环境&#…

从 0 到 1:Spring Boot 构建高效应用指南

感兴趣的可以先收藏起来&#xff0c;还有大家在毕设选题&#xff0c;项目以及论文编写等相关问题都可以给我留言咨询&#xff0c;我会一一回复&#xff0c;希望帮助更多的人。 在当下竞争激烈且技术飞速发展的 Java 开发领域&#xff0c;各类框架层出不穷。而 Spring Boot 凭借…

负载测试工具有哪些?

Apache JMeter Apache JMeter 是一款开源的性能测试工具&#xff0c;主要用于对 Web 应用程序进行功能、负载和压力测试。JMeter 支持多种协议和技术&#xff0c;包括 HTTP, HTTPS, FTP 和 WebSocket 等。通过模拟大量并发用户访问来评估应用程序的表现1。 jmeter -n -t testp…

【鸿蒙HarmonyOS Next实战开发】lottie动画库

简介 lottie是一个适用于OpenHarmony和HarmonyOS的动画库&#xff0c;它可以解析Adobe After Effects软件通过Bodymovin插件导出的json格式的动画&#xff0c;并在移动设备上进行本地渲染。 下载安裝 ohpm install ohos/lottieOpenHarmony ohpm 环境配置等更多内容&#xff0c…