Oracle SQL表历史记录

时间:2015-01-12 20:18:33

标签: sql oracle timestamp

所以这就是问题,我有一个Oracle表,只是一个普通表,让我们说300行数据。

我需要弄清楚这些数据至少在100天之前是如何形成的,谁做出了更改,时间戳也会很好。 事实是,我确实有一个计划备份,但我相信有人更改了数据并删除了备份,因此我试图找出系统记录的这一变化。

我确实谷歌了,我现在得到的结果,我没有得到我需要的东西。

  • 从dba_hist_sqltext中选择* - 它仅为我提供当前会话的结果
  • SELECT SCN_TO_TIMESTAMP(ORA_ROWSCN) - 指定的号码不是有效的系统更改号码

Oracle SQL信息 - Java(TM)Platform 1.7.0_51 Oracle IDE 4.0.0.13.80 版本控制支持4.0.0.13.80

你们有其他想法吗? 提前谢谢

1 个答案:

答案 0 :(得分:2)

您可以使用闪回:Using Oracle Flashback Technology

使用它,您可以使用AS OF TIMESTAMP子句进行查询,如下所示:

SELECT * FROM yourtable
  AS OF TIMESTAMP TO_TIMESTAMP('2004-04-04 09:30:00', 'YYYY-MM-DD HH:MI:SS');

这必须启用,并且有一定的(可配置的)大小限制,因此无法保证您仍然可以查询100天前的那些记录。在繁忙的数据库中,历史记录可能只需几分钟。