如何查找更新中受影响的行列表?

时间:2015-01-14 18:29:37

标签: sql oracle

昨天我在生产环境中的Oracle表中进行了数据更正。但后来我发现,然而我的选择命令取了62行,显然在相同条件下64行得到了更新。由于我没有在该更新中受影响的行列表,因此我无法比较所选行的列表以及稍后更新的行列表。那么有没有办法找到在该表上特定时间更新的行列表,比如从16:20到16:21? Oracle是否会跟踪给定表的哪些行更新的时间?

2 个答案:

答案 0 :(得分:1)

如果在数据库上启用了闪回,则可以在数据库中的特定时间检查数据。

SELECT * FROM table
AS OF TIMESTAMP 
TO_TIMESTAMP('2015-01-14 13:33:00', 'YYYY-MM-DD HH:MI:SS')
WHERE column = 'your value';

使用此功能,您可以检查您怀疑的记录之前和之后的数据。 如果您无法找到记录,则可以使用

SELECT SCN_TO_TIMESTAMP(ORA_ROWSCN) FROM table where <<your condition>>

但是,只能为最近更新的少数记录获取SCN_TO_TIMESTAMP(ORA_ROWSCN)。您只能转换为系统维护的重做/闪回窗口中的SCN。一旦更改老化,映射就会丢失。

答案 1 :(得分:0)

尝试并使用oracle FLASHBACK功能(以防万一您的数据库按闪回实用程序配置)

如果启用,它会在过去的任何给定时间点显示您的表格数据。

有关详情,请点击http://docs.oracle.com/cd/E11882_01/appdev.112/e41502/adfns_flashback.htm#ADFNS01001