我过去使用的一个简单方法是创建第二个表,其结构与我要审计的表相同,并在主表上创建更新/删除触发器。在记录被更新/删除之前,通过触发器将当前状态保存到审核表中。
虽然这种方法有效,但是审核表中的数据不是最有用或最容易报告的。我想知道是否有更好的方法来审计数据更改?
这些记录的更新不应该太多,但由于它们是高度敏感信息,因此客户认为必须对所有更改进行审计并轻松地进行报告。
我过去使用的一个简单方法是创建第二个表,其结构与我要审计的表相同,并在主表上创建更新/删除触发器。在记录被更新/删除之前,通过触发器将当前状态保存到审核表中。
虽然这种方法有效,但是审核表中的数据不是最有用或最容易报告的。我想知道是否有更好的方法来审计数据更改?
这些记录的更新不应该太多,但由于它们是高度敏感信息,因此客户认为必须对所有更改进行审计并轻松地进行报告。
您预计对该表的写入和读取有多少需求?
我使用了一个单一的审计表,其中包含表格、列、旧值、新值、用户和更改日期时间等列,足够通用以适应数据库中的任何其他更改。尽管有大量数据被写入到该表中,但对该数据的报告较为稀疏,因此可以在低使用期间运行报告。
补充: 如果数据量与报告相比是一个问题,审计表可以被复制到只读数据库服务器上,这样您就可以在必要时运行报告而不会拖慢主服务器的工作。
是否有任何内置的审计软件包?Oracle有一个不错的软件包,甚至可以将审核更改发送到一个独立的服务器上,超出任何修改SQL的坏人的访问范围。
他们的示例非常棒...它展示了如何警报任何修改审计表的人。