java - 数据库审计表

标签 java oracle audit

我有一个正在使用的现有应用程序,并且客户已经定义了他们想要的审计日志的表结构。它具有以下列:

storeNo 
timeChanged
user 
tableChanged 
fieldChanged 
BeforeValue 
AfterValue

通常,我只在每个表上有简单的审计列,提供 userChanged 和 timeChanged 值。将写入这些表的应用程序是一个 java 应用程序,并且通过 jdbc 在 Oracle 数据库上进行调用。我的问题是获取之前/之后值的最佳方法是什么。我讨厌比较对象来查看填充此表所做的更改,这不会有效。如果在一次更新中多个列发生更改,则该新表将具有多个条目。或者oracle有没有办法做到这一点?其他人过去做了什么不仅可以跟踪变化,还可以跟踪变化的值?

最佳答案

传统上这就是预言机触发器的用途。每次插入或更新都会触发一个存储过程,该存储过程可以访问“之前和之后”的数据,您可以随意处理这些数据,例如将旧值记录到审核表中。它对应用程序是透明的。

http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:59412348055

关于java - 数据库审计表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1704393/

相关文章:

hadoop - HDFS审核日志格式和说明

mysql - 如何跟踪 MySQL 数据库中 bool 列的更改?

java - 寻找有关适配器模式使用的反馈

java - 如何在类定义本身中创建对象?

oracle - 如果我不使用随机数据对 Oracle 11g 进行压力测试有什么关系吗

oracle - 使用 `SELECT` 调用函数

mysql - 需要 MySQL 5.1 中的抽象触发器来更新审计日志

java - 配置 Apache Cayenne 以与 Vertx 异步方式使用

java - 如何获取主体属性的值作为对象而不是字符串?

oracle - Grails-使用VARCHAR2字段作为表标识符-外键关系失败