oracle多版本控制/读一致性和非阻塞读(1)

SCN:system Change Number /system commit number : 系统修改号/系统提交号,scn是oracle内部时钟,每次发生提交的时候,这个时钟(scn)都会自动滴答(递增更新),这个scn很容易得到:

declare
v_scn number;
begin
exec v_scn:= dbms_flashback.get_system_change_number;
dbms_put.put_line('scn:' || v_scn);
end;

 

有了scn,我们就可以告诉oracle我们要查询的时间点,以后查询的时候,就可以只看这个时间点上的数据:

select count(0) from t_name;
count(0)
--------------
       100

 

然后我们把这个表的数据给删掉,并且进行提交:

delete from t_name;
commit;
select count(0) from t_name;
count(0)
--------------
       0

 

不过使用闪回查询(as of scn /as of timestamp)可以让oracle告诉我们,这个时间点上的数据:

 select  count(*), :v_scn then_scn,dbms_flashback.get_system_change_number now_scn from t_name as of scn :v_scn;

count(*)   then_scn  now_scn
-------------------------------------
  100             65465     65466

 通过scn时间点的查询,能获取到那个时间点上版本的数据 count=100;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值