我需要收集执行每晚批处理后发生的数据库数据更改或架构更改。例如,有一个表雇员有两个记录。在夜间批处理后,假设插入一条记录并更新一条记录。我想捕获更新的记录和插入的记录。我正在使用Oracle数据库。我正在寻找一个脚本来执行此操作,因为我们有一些问题需要获得执行此任务的新工具的许可证。那么任何人都可以建议如何以编程方式或使用Oracle 11g内置函数来完成此操作?非常感谢任何示例代码。由于我们有大量的表,我正在寻找一种通用的方法来实现这一点。
由于
答案 0 :(得分:3)
我建议对要捕获的更改使用触发器,并将该信息插入另一个捕获这些更改的表中。 stackoverflow the best way to track data changes in oracle
中有一些信息如果触发器不是一个可行的选项,请查看一次INSERT到2个表中,一个是您的目标表,另一个是您记录/更改捕获表。 这是stackoverflow上的一个例子
Oracle INSERT into two tables in one query
第三种选择是表审核。请参阅stackoverflow上的以下内容
答案 1 :(得分:0)
在OLTP系统中,您可以在表create_date,update_date或last_modified_time,transaction_type中添加审计列。
使用create_date,update_date - 您可以将默认sysdate设置为create_date,然后需要修改应用程序逻辑以更新update_date。触发器也可以工作,而不是以较低的性能成本更改代码。
使用last_modified_time,transaction_type - 您需要在插入或更新时更新这两个字段作为应用程序逻辑的一部分或使用触发器。