gpt4 book ai didi

sql - Oracle 记录历史使用截至时间戳在一个范围内

转载 作者:行者123 更新时间:2023-12-04 22:15:35 24 4
gpt4 key购买 nike

我最近了解到 oracle 有一个对我非常有用的功能 - 因为设计者/实现者不太关心数据历史 - 如果记录在 oracle 缓存中可用,我可以查询它的历史状态,像这样:

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

但是现在我需要检查一个范围内的历史数据。无论如何都可以使用缓存吗?

最佳答案

是的,像这样:

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 参数限制,通常是几小时而不是几天。

关于sql - Oracle 记录历史使用截至时间戳在一个范围内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/359733/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com