本文主要是介绍闪回版本,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
oracle闪回版本查询提供了审计行数据变化的功能 ,可以跟踪一条记录在一段时间内的变化情况,即一条记录的多个提交版本信息(一个事物对应一条记录的操作结果就是该记录的一个版本),从而为数据的等级恢复提供了可能。在闪回版本查询中,返回的行数据中可以包括与已提交事物相关的伪列(ORA-ORWSCN),通过这些伪列可以了解数据库中的哪个事物何时对该行数据进行了哪些操作。
步骤1:在scott用户下创建test表,并进行相关的dml操作
SQL> conn scott/tiger
Connected.
SQL> drop table test purge;
Table dropped.
SQL> create table test (id number,ip number,ic number,iq number);
Table created
SQL> insert into test values(1,2,3,4);
1 row created.
SQL> insert into test values(4,4,3,4);
1 row created.
SQL> insert into test values(2,2,2,2);
1 row created.
SQL> commit;
Commit complete.
SQL> select * from test;
ID IP IC IQ
---------- ---------- ---------- ----------
1 2 3 4
4 4 3 4
2 2 2 2
SQL> update test set id=100 where iq=4;
2 rows updated.
SQL> commit;
Commit complete.
SQL> select * from test;
ID IP IC IQ
---------- ---------- ---------- ----------
100 2 3 4
100 4 3 4
2 2 2 2
步骤2:查询roa_rowsc号,并获取更多历史信息
SQL> select ora_rowscn, id,ip,ic,iq from test;
ORA_ROWSCN ID IP IC IQ
---------- ---------- ---------- ---------- ----------
1163292 100 2 3 4
1163292 100 4 3 4
1163292 2 2 2 2
SQL> set linesize 1000
SQL> Select versions_xid,versions_startscn,versions_endscn,DECODE(versions_operation,'I','Insert','U','Update','D','Delete', 'Original') "Operation", id,ip,ic,iq from test versions between scn minvalue and maxvalue;
VERSIONS_XID VERSIONS_STARTSCN VERSIONS_ENDSCN Operatio ID IP IC IQ
---------------- ----------------- --------------- -------- ---------- ---------- ---------- ----------
06001F0095040000 1163292 Update 100 2 3 4
06001F0095040000 1163292 Update 100 4 3 4
05000E00DE030000 1163209 Insert 2 2 2 2
05000E00DE030000 1163209 1163292 Insert 4 4 3 4
05000E00DE030000 1163209 1163292 Insert 1 2 3 4
当然也可以在给定的范围时间内查询:
SELECT versions_startscn, versions_starttime, versions_endscn, versions_endtime, versions_xid, versions_operation, id
FROM test
VERSIONS BETWEEN TIMESTAMP
TO_TIMESTAMP('2016-09-15 10:00:00', 'YYYY-MM-DD HH24:MI:SS')
AND TO_TIMESTAMP('2016-09-15 10:15:00', 'YYYY-MM-DD HH24:MI:SS')
WHERE iq = '4';
如果需要,可以将数据恢复到某个时刻的状态
这篇关于闪回版本的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!