我有一些表,我已经启用了对这个表的审计。目前,我正在收集有关谁在何时插入记录的数据。现在我还想记录他/她用来插入记录的确切查询是什么。我创建了一个触发器,目前只记录用户和日期来审计数据收集表。这是触发器的代码:
create or replace trigger auditer
after insert on user01.sometab
for each row
insert into sys.auditlogs values(user,sysdate)
Run Code Online (Sandbox Code Playgroud)
如何使用相同的触发器访问插入语句并将该语句插入到审计表中?甚至有可能吗?
要使标准审计也捕获 SQL 语句,您可以将AUDIT_TRAIL
初始化参数设置为DB,EXTENDED
或XML,EXTENDED
(请参阅《AUDIT_TRAIL
数据库安全指南》中的“初始化参数设置”)。审计记录将包括时间戳和 SQL 文本,SYS.AUD$
如果AUDIT_TRAIL
value 设置为DB,EXTENDED
or可以从table查询DB
,或者如果AUDIT_TRAIL
设置为XML,EXTENDED
or从 OS files 读取XML
。在后一种情况下,您可以根据初始化参数的值确定审计文件的位置AUDIT_FILE_DEST
:
SQL> show parameter audit
NAME TYPE VALUE
-------------------- ----------- ------------------------------
audit_file_dest string /u01/app/oracle/admin/orcl/adump
Run Code Online (Sandbox Code Playgroud)
就 FGA 而言,我已经在我的另一篇文章中对其进行了描述。audit_trail
在使用DBMS_FGA.ADD_POLICY
过程创建 FGA 时,您只需要为参数设置另一个值,例如DBMS_FGA.DB_EXTENDED
.