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

  • 正在更改数据的人
  • 是什么类型的操作 (I, U, D)
  • 操作时间

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

    最佳答案

  • 首先你的审计应该通过设置你的 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;
    


  • Dbms_Session.Set_Identifier 将 session 的 client id 设置为
    给定的值。此值可用于标识 session v$session 通过 v$session.client_identifier 。它也可以
    用于通过以下方式识别 session 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 View 的 client_infomodule 列进行监视也很有用。
  • 关于针对特定表的 Oracle 11g 审计跟踪,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49648418/

    10-12 04:52