我想提交一个关于为Oracle 11g数据库上的特定表创建审计跟踪的问题。我们希望跟踪用户在某些特定表上的更改,即记录已从应用程序(前端)更改。当然,我们提出的第一个想法是手动创建审计表并设置触发器来跟踪:
但是我读到Oracle具有可以处理审计跟踪的内置机制,但此时我还不知道它是如何工作的任何细节。因此,主要问题是:"什么是最好/最优雅,可以轻松,清晰地访问数据,执行审计跟踪的方式?"
答案 0 :(得分:1)
首先,您应该通过设置audit_trail
进行审核
有效值的参数,例如DB
,DB_EXTENDED
,XML
,
XML_EXTENDED
或OS
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_info
和module
列。