针对特定表的Oracle 11g审计跟踪

时间:2018-04-04 10:12:21

标签: oracle audit audit-trail audit-logging

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

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

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

1 个答案:

答案 0 :(得分:1)

  • 首先,您应该通过设置audit_trail进行审核 有效值的参数,例如DBDB_EXTENDEDXMLXML_EXTENDEDOS scope=spfile并重启数据库。

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

    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列。