当前位置:  开发笔记 > 数据库 > 正文

Oracle记录历史记录使用范围内的时间戳

如何解决《Oracle记录历史记录使用范围内的时间戳》经验,为你挑选了1个好方法。

我最近了解到oracle有一个对我来说非常有用的功能 - 因为设计人员/实现者并不关心数据历史 - 我可以在oracle缓存中查询记录的历史状态,如下所示:

select * 
  from ( select * 
           from sometable where some_condition ) 
as of timestamp sysdate-1 

但现在我需要检查范围内的历史数据.无论如何,使用缓存是否可能?



1> Tony Andrews..:

是的,像这样:

SQL> select sal from emp where empno=7369;

       SAL
----------
      5800

SQL> update emp set sal = sal+100 where empno=7369;

1 row updated.

SQL> commit;

Commit complete.

SQL> update emp set sal = sal-100 where empno=7369;

1 row updated.      

SQL> commit;

Commit complete.

SQL> select empno, sal, versions_starttime,versions_xid
  2  from emp
  3  versions between timestamp sysdate-1 and sysdate
  4  where empno=7369;

     EMPNO        SAL VERSIONS_STARTTIME                                                          VERSIONS_XID
---------- ---------- --------------------------------------------------------------------------- --
      7369       5900 11-DEC-08 16.05.32                                                          0014001300002A74
      7369       5800 11-DEC-08 16.03.32                                                          000D002200012EB1
      7369       5800

请注意,你可以走多远的地方受到UNDO_RETENTION参数的限制,通常是几小时而不是几天.

推荐阅读
罗文彬2502852027
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有