我在DB中有大约500个表。如果在该表上执行任何DML操作,则应触发触发器以捕获这些dml活动,并将其加载到审计表中。我不想写500个单独的触发器。有没有简单的方法来实现这个目标?
答案 0 :(得分:2)
切换所有表的DML语句的所有高级审核:
AUDIT INSERT TABLE, UPDATE TABLE, DELETE TABLE;
我们可以管理哪些对象取决于我们拥有的权限。 Find out more
AUDIT会将基本信息写入审计线索。目的地取决于the AUDIT_TRAIL parameter的值。如果参数设置为db
,则输出将写入数据库表:我们可以在USER_AUDIT_TRAIL中查看我们的跟踪,或者DBA_AUDIT_TRAIL中的所有内容(如果我们有权限)。
审计跟踪是高级别的,这意味着它记录用户FOX
更新了EMP
表,但没有告诉我们哪些记录或实际更改是什么。我们可以通过创建细粒度审计策略来实施粒度审计。这需要我们做更多的工作,所以我们可能决定不为我们所有的表启用它。 Find out more
答案 1 :(得分:0)
触发器仅用于表,而不是整个数据库。忽略维护不同数据类型,数据使用,各种表的上下文及其使用的复杂性,您正在寻找的内容将非常复杂,而RDBMS在数据库级别没有解决这些问题。
此链接有一些关于触发器的信息:
https://docs.oracle.com/cd/A57673_01/DOC/server/doc/SCN73/ch15.htm
您可以在调用相同过程的每个表上放置一个触发器......但随后所有这些复杂性都会起作用。