Oracle 12c统一审计如何查看SQL语句的参数值?
Oracle 12c统一审计查看绑定变量实际值的方法
默认情况下,Oracle 12c的统一审计(Unified Auditing)不会捕获SQL语句中的绑定变量实际值,仅记录带占位符的SQL文本。要查看这些参数值,可通过以下方式实现:
修改审计策略,启用绑定变量捕获
创建或修改审计策略时,添加INCLUDE BINDINGS子句,让审计日志记录绑定变量的值:- 新建策略示例:
CREATE AUDIT POLICY audit_customer_tables ACTIONS SELECT, INSERT, UPDATE, DELETE ON customer, orders -- 替换为你需要审计的表 INCLUDE BINDINGS; - 修改已有策略示例:
ALTER AUDIT POLICY existing_audit_policy INCLUDE BINDINGS;
- 新建策略示例:
解析审计日志中的绑定变量值
启用绑定捕获后,UNIFIED_AUDIT_TRAIL视图的BINDINGS列会以XMLType格式存储绑定变量数据。可通过XML函数解析获取实际值:- 单绑定变量场景查询:
SELECT sql_text, EXTRACTVALUE(bindings, '/bindings/binding/value') AS bind_value FROM unified_audit_trail WHERE object_name IN ('CUSTOMER') -- 目标表名 AND sql_text LIKE '%customer_id = :%'; - 多绑定变量场景查询(用XMLTABLE批量解析):
SELECT uat.sql_text, x.bind_name, x.bind_value FROM unified_audit_trail uat, XMLTABLE('/bindings/binding' PASSING uat.bindings COLUMNS bind_name VARCHAR2(30) PATH '@name', bind_value VARCHAR2(200) PATH 'value') x WHERE uat.object_name IN ('CUSTOMER', 'ORDERS');
- 单绑定变量场景查询:
注意:启用绑定变量捕获会增加审计日志的存储开销,同时可能对系统性能产生轻微影响,建议在生产环境中评估后再启用。
内容的提问来源于stack exchange,提问作者Landon Statis
相关产品推荐
相关产品推荐

