访问在触发器主体内触发触发器的插入语句

Raj*_*ena 1 oracle

我有一些表,我已经启用了对这个表的审计。目前,我正在收集有关谁在何时插入记录的数据。现在我还想记录他/她用来插入记录的确切查询是什么。我创建了一个触发器,目前只记录用户和日期来审计数据收集表。这是触发器的代码:

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)

如何使用相同的触发器访问插入语句并将该语句插入到审计表中?甚至有可能吗?

Yas*_*irA 6

您可以使用标准数据库审计细粒度审计满足您的所有要求。

要使标准审计也捕获 SQL 语句,您可以将AUDIT_TRAIL初始化参数设置为DB,EXTENDEDXML,EXTENDED(请参阅AUDIT_TRAIL数据库安全指南中的“初始化参数设置”)。审计记录将包括时间戳和 SQL 文本,SYS.AUD$如果AUDIT_TRAILvalue 设置为DB,EXTENDEDor可以从table查询DB,或者如果AUDIT_TRAIL设置为XML,EXTENDEDor从 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.