闪回版本

本文介绍了Oracle数据库中闪回版本查询的功能及使用方法,通过示例展示了如何跟踪记录的变化历史,包括不同版本的生成和查询特定时间范围内的数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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';

如果需要,可以将数据恢复到某个时刻的状态

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值