0

假设数据库中有 n 个表。无论在数据库中的任何表中发生什么插入、更新、删除,都必须在名为“Audit_Trail”的表中捕获,其中我们在审计跟踪表中有以下列。

Server_Name AT_date AT_time Table_name Column_name Action Old_value New_Value

需要捕获哪个表、哪个列、哪个日期和时间的服务器。此外,“操作”列跟踪操作是插入、更新还是删除,我们还必须捕获旧值和新值。

那么最好的方法是什么?我们可以创建一个数据库级触发器,它可以在任何插入、更新或删除的情况下触发触发器吗?

4

1 回答 1

0

最好的方法是使用 Oracle 自己的审计功能。

AUDIT ALL ON DEFAULT BY ACCESS;

http://docs.oracle.com/cd/E11882_01/network.112/e36292/auditing.htm#DBSEG392

回应评论...

想要审计对数据库中的表所做的每一个更改并没有什么不寻常的——因此系统中已经提供了用于执行此操作的功能。最好使用触发器,因为它不能被轻易绕过。但是,如果您想使用这种预先提供的、强大的、易于使用的功能,您可能不得不在您的特定要求上做出一些妥协,但回报将是一个卓越的解决方案,它将使用与成千上万其他相同的代码和配置甲骨文系统。

于 2013-04-11T10:43:56.167 回答