我想提交一个关于为 Oracle 11g 数据库上的特定表创建审计跟踪的问题。我们想跟踪用户在某些特定表上的更改,即记录已从应用程序(前端)端更改。当然,我们想到的第一个想法是手动创建审计表并设置触发器来跟踪:
但是我读到 Oracle 具有可以处理审计跟踪的内置机制,但目前我不知道它是如何工作的任何细节。所以主要问题是:“什么是最好/最优雅的,可以轻松清晰地访问数据,执行审计跟踪的方法?”
最佳答案
audit_trail
参数为有效值,如 DB
、 DB_EXTENDED
、 XML
,XML_EXTENDED
或 OS
与 scope=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_info
和 module
列进行监视也很有用。 关于针对特定表的 Oracle 11g 审计跟踪,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49648418/