暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 使用闪回数据存档和最小值的闪回查询无法按预期工作

askTom 2021-09-20
339

问题描述

你好,

我创建了一个闪回数据存档,并将其保留期定为一年。
现在,我已经为一个测试表启用了闪回归档。
我的问题是, minvalue并不像我预期的那样工作。我的期望是,指定的查询将返回闪回归档中存在的所有值。实际上,它只返回过去15分钟的数据。

这行为正确吗?如果是,如何使用查询查询查询行的所有以前版本?

给定的示例显示了测试对象的DDL ,以及执行时带有时间戳的示例查询。抱歉,没有使用LiveSQL ,但我无法在那里重新创建问题。

create table test (
    tst_id number generated by default as identity,
    tst varchar2(255)
)

create flashback archive flashback_test
tablespace users_flashback
retention 1 year;

alter table test flashback archive flashback_test;

15.09.21 11:41:28,534508000 +02:00
insert into test(tst)
values('Test1');

15.09.21 11:43:15,736558000 +02:00
update test
set tst = 'Test2' 
where tst_id = 1; 

15.09.21 11:45:47,551388000 +02:00
update test
set tst = 'Test3' 
where tst_id = 1; 

select tst, versions_starttime, versions_endtime
from test
versions between scn minvalue and maxvalue
where tst_id = 1;


tst     versions_starttime      versions_endtime

15.09.21 11:48:09,833296000 +02:00
Test3   15.09.21 11:45:47 
Test2   15.09.21 11:43:22       15.09.21 11:45:47
Test1   15.09.21 11:41:22       15.09.21 11:43:22

15.09.21 11:58:20,512213000 +02:00
Test3   15.09.21 11:45:47 
Test2   15.09.21 11:43:22       15.09.21 11:45:47
Test1                           15.09.21 11:43:22

15.09.21 11:59:52,966693000 +02:00
Test3   15.09.21 11:45:47 
Test2                           15.09.21 11:45:47

15.09.21 12:04:07,629023000 +02:00
Test3  
复制



专家解答

抱歉,我有点迷路了。

如果您在创建表后只进行了两次插入和一次更新,那么这就是您在闪回归档中看到的全部内容。

一年后,同样的查询将显示过去一年中的所有更改,但是假设您刚刚创建了表和归档,那么您只看到您刚刚完成的更改。
文章转载自askTom,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论