我想在 Oracle 11g 中创建一个全局触发器。可用于审计大约 100 个表。多个表可以触发单个触发器。如果是,那么我该如何实现呢?
问问题
6627 次
1 回答
8
我想在 oracle 11g 中创建一个全局触发器,可用于审计大约 100 个表
你有理由重新发明轮子吗?为什么不使用 Oracle 的内置审计功能?
Oracle Base提供了一些关于如何开始审计的基本信息:
可以通过设置 AUDIT_TRAIL 静态参数来启用审计,该参数具有以下允许值。
AUDIT_TRAIL = { none | os | db | db,extended | xml | xml,extended }
以下列表提供了每个设置的说明:
none or false - Auditing is disabled.
db or true - Auditing is enabled, with all audit records stored in the database audit trial (SYS.AUD$).
db,extended - As db, but the SQL_BIND and SQL_TEXT columns are also populated.
xml- Auditing is enabled, with all audit records stored as XML format OS files.
xml,extended - As xml, but the SQL_BIND and SQL_TEXT columns are also populated.
os- Auditing is enabled, with all audit records directed to the operating system's audit trail.
启用对数据库审计跟踪的审计启用对数据库的审计
SQL> ALTER SYSTEM SET audit_trail=db,extended SCOPE=SPFILE;
System altered.
关闭并重新启动数据库
SQL> SHUTDOWN
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> STARTUP
ORACLE instance started.
现在要按用户审核SELECTS
, INSERTS
, UPDATES
,执行以下操作:DELETES
cube
CONNECT sys/password AS SYSDBA
AUDIT ALL BY cube BY ACCESS;
AUDIT SELECT TABLE, UPDATE TABLE, INSERT TABLE, DELETE TABLE BY cube BY ACCESS;
审计后的日志可以通过查询调出DBA_AUDIT_TRAIL
进一步阅读:
于 2012-01-19T07:01:28.207 回答