Oracle Query跟踪特定日期的表更改

时间:2018-08-22 15:38:01

标签: sql oracle

我有以下查询,它给我表中最后一次DML操作发生的时间,我希望对其进行一些修改以跟踪一整天,以便无论上下文发生了什么变化,我都能获得完整的历史记录当天的特定表格,所以请让我知道如何在查询下方修改此内容

SELECT SCN_TO_TIMESTAMP(MAX(ORA_ROWSCN)) from mytablename;

1 个答案:

答案 0 :(得分:1)

scn_to_timestamp有一个同伴,可以在给定时间内为您提供SCN;因此,可以查看今天ora_rowscn行的数据:

select * from table_a where ora_rowscn >= timestamp_to_scn(trunc(sysdate));

在我的头顶上有一些警告。首先,by default ora_rowscn is the same for all rows in a block,即使在不同时间修改了行。如果该表是使用rowdependencies创建的,则它将仅显示实际修改的行。

第二,SCN到时间戳的转换仅在“重做/闪回”窗口中可用,尽管您应该在120个小时内保持正常状态,所以如果您在同一天或之后查看,则应该确定。 See this for a bit more info.

第三,您需要注意何时以及如何查询数据。如果更改是在午夜之前进行的,但是直到午夜之后才提交,并且您恰好在午夜运行查询以查看当天的最后更改,那么您将看不到未提交的更改。而且,如果您稍后再查询,那么您将看不到它,因为昨天它已更改。

see this