triggers - 创建一个监听多个表的全局触发器

标签 triggers oracle11g audit-trail

我想在 Oracle 11g 中创建一个全局触发器。可用于审计大约 100 个表。多个表可以触发单个触发器。如果是,那么我怎样才能做到这一点?

最佳答案

I want to create a global trigger in oracle 11g ,which can be used for auditing of around 100 tables



你有什么理由想重新发明轮子吗?为什么不利用 Oracle 的内置审计?

Oracle Base提供有关如何开始审计的一些基本信息:

Auditing can enabled by setting the AUDIT_TRAIL static parameter, which has the following allowed values.


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 调出审计日志。

进一步阅读:
  • Auditing
  • Fine grained auditing
  • Configuring and administering auditing
  • 关于triggers - 创建一个监听多个表的全局触发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8922032/

    相关文章:

    php - MySQL触发器问题

    sql - 通过表触发器捕获存储过程参数

    sql - 没有数据时删除空假脱机文件

    postgresql - 如何在 postgresql 中记录数据变化?

    mongodb - 如何在事务期间从 MongoDB 创建操作检索 id?

    asp.net - AsyncPostBackTrigger 和 PostBackTrigger 有什么区别?

    mysql 触发器不再正常工作

    sql - 为什么根据此条件更改 where 子句会如此大幅度地减少执行时间?

    oracle - 如何使用 dbms_scheduler 安排工作在特定时间运行

    php - 记录 php 调用后从 mysql 发回的数据量