问题描述
你好,
我创建了一个闪回数据存档,并将其保留期定为一年。
现在,我已经为一个测试表启用了闪回归档。
我的问题是, minvalue并不像我预期的那样工作。我的期望是,指定的查询将返回闪回归档中存在的所有值。实际上,它只返回过去15分钟的数据。
这行为正确吗?如果是,如何使用查询查询查询行的所有以前版本?
给定的示例显示了测试对象的DDL ,以及执行时带有时间戳的示例查询。抱歉,没有使用LiveSQL ,但我无法在那里重新创建问题。
我创建了一个闪回数据存档,并将其保留期定为一年。
现在,我已经为一个测试表启用了闪回归档。
我的问题是, 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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




