如何在Oracle的统一审计跟踪中跟踪相关模块/sql信息?

ioekq8ef  于 2023-03-29  发布在  Oracle
关注(0)|答案(1)|浏览(135)

在运行脚本时,我喜欢使用SET_MODULE过程来关联审计目的的内容。例如:

EXEC DMBS_APPLICATION_INFO.SET_MODULE('RELEASE123','My_Script.sql');

好的一面是,脚本中的后续DDL命令将使用版本和脚本进行标记,从而更容易在以后使用模块和操作进行识别。但是,模块或操作都不会出现在统一审计跟踪中。我正在寻找一些我们可以做的事情,以挑选与版本相关的审计日志,甚至是与版本相关的特定脚本。而不必查询多个视图。
在Unified Audit Trail中跟踪相关审核日志的好的替代选项是什么?

xtfmy6hx

xtfmy6hx1#

Oracle的内置审计在收集信息方面相当有限。如果您需要丰富的数据,则需要实现自己的审计。
只需创建一个数据库级别的DDL触发器(CREATE TRIGGER xyz AFTER DDL ON DATABASE...),然后您可以使用它来填充您自己的审计表,其中包含来自v$sessionSYS_CONTEXT('USERENV',...)等的更丰富的数据。
您还可以(并且应该)使用DDL系统事件触发器中可用的特殊变量捕获进一步丰富的信息:

ora_dict_obj_owner
ora_dict_obj_name
ora_dict_obj_type
ora_sysevent
ora_grantee*
original_sql_txt*

最后两个 * 项返回非标量值(ora_name_list_t
注意:你需要“ADMINISTER DATABASE TRIGGER“priv来执行此操作。

相关问题