将dba_fga_audit_trail链接到v $ session或session of history

时间:2013-10-30 16:35:49

标签: oracle oracle11g audit

我想找出审核已启动的程序模块。 因此,例如,如果使用 SQL开发人员 Toad 完成了insert语句。 我在dba_fga_audit_trail中记录了该语句 但我似乎无法找到audsid的链接,因此我可以找到有关会话的更多信息。

是否可以通过加入一些表来创建此链接?

2 个答案:

答案 0 :(得分:3)

SESSION_ID

dba_fga_audit_trail表示审核会话ID号。确实是会话ID,您也可以通过查询v $ session表中的AUDSID列找到该会话ID。尽管如此,您应该知道v$session显示每个当前会话的会话信息,而不是过去的会话信息,所以如果您有兴趣获取过去事件的此类信息,那么您就无法拥有它。话虽如此,有一种方法可以通过使用Oracle产品Audit Vault and Database Firewall来获取发生事件的客户端程序(f.e:SQL Developer)。在审计报告中,您可以非常轻松地获得此类information

答案 1 :(得分:0)

有一种可能的方法是通过为此建立登录触发器来将审计跟踪与 ASH 相关联。 审计跟踪中的 LOGOFF 记录(如果 AUDIT SESSION 处于活动状态)也记录来自 v$Session 的 Client_Identifier。 因此,为 v$Session.Client_Identifier 提供所需的信息允许从 DBA_Audit_Trail.Client_ID 中检索它。

这个登录触发器可以做到:

CREATE OR REPLACE TRIGGER Client_ID AFTER LOGON ON DATABASE
-- Put unique session identifier into client-id to have it also in DBA_AUDIT_TRAIL.Client_ID for LOGOFF-records
-- works than as missing link between Active Session History and Audit Trail
-- Peter Ramm, OSP Dresden, 2021-01-05
BEGIN
  -- Use alternative public package instead of SYS_CONTEXT to get the serial#
  sys.DBMS_SESSION.Set_Identifier('SID = '||DBMS_DEBUG_JDWP.CURRENT_SESSION_ID||', Serial# = '||DBMS_DEBUG_JDWP.CURRENT_SESSION_SERIAL);
END;
/