【问题标题】:Oracle 11g audit trail for specific tables特定表的 Oracle 11g 审计跟踪
【发布时间】:2023-03-18 16:56:01
【问题描述】:

我想提交一个关于为 Oracle 11g 数据库上的特定表创建审计跟踪的问题。我们想跟踪用户在某些特定表上的更改,即记录已从应用程序(前端)端更改。当然,我们提出的第一个想法是手动创建审计表并设置触发器进行跟踪:

  • 谁在更改数据
  • 是什么类型的操作(I、U、D)
  • 手术时间

但我读到 Oracle 有可以处理审计跟踪的内置机制,但目前我不知道它是如何工作的任何细节。所以主要问题是:“什么是最好的/最优雅的,可以轻松清晰地访问数据,执行审计跟踪的方式?”

【问题讨论】:

    标签: oracle audit audit-trail audit-logging


    【解决方案1】:
    • 首先应该通过设置audit_trail 来启用审核 参数为有效值,如DBDB_EXTENDEDXMLXML_EXTENDEDOSscope=spfile 并重新启动数据库。

    • 接下来,您需要对要跟踪的内容使用审计命令,例如 如:

      audit drop user by access;
      audit drop any procedure by access;
      audit drop any table by access;
      audit audit system by access;
      audit grant any privilege by access;
      audit insert, update, delete on myschema.mytable by access;
      

    要通过audit-trail 跟踪会话,建议使用

    Dbms_Session.Set_Identifier( :i_client );
    

    在程序单元的连接阶段设置客户端信息。

    • Dbms_Session.Set_Identifier 将会话的 client id 设置为 给定值。该值可用于识别会话 v$session 通过v$session.client_identifier。它也可以 用于通过以下方式识别会话 sys_context('USERENV','CLIENT_IDENTIFIER')
    • 此过程可由PUBLIC 执行。

      另外;

      Dbms_Application_Info.Set_Client_Info( :i_client );
      Dbms_Application_Info.Set_Module( :i_modul,null ); 
      -- :i_modul is the name of your module or program unit from which 
      --  you are connecting to db .
      

      方法对于从gv$session 视图的client_infomodule 列进行监控也很有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-17
      • 2011-11-26
      • 1970-01-01
      • 2018-01-31
      • 2018-03-20
      • 2012-05-30
      • 2014-08-21
      • 1970-01-01
      相关资源
      最近更新 更多