我想找出审核已启动的程序模块。
因此,例如,如果使用 SQL开发人员或 Toad 完成了insert语句。
我在dba_fga_audit_trail
中记录了该语句
但我似乎无法找到audsid
的链接,因此我可以找到有关会话的更多信息。
是否可以通过加入一些表来创建此链接?
答案 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;
/