oracle ora1555 system,Oracle 8i中回滚段使用和ORA-1555

5. Read the Transaction Table using the Transaction ID. If the transaction has been committed and has a System Commit Number less than the querys System Change Number, update the status of the block (block cleanout) and start over at step 1.

第5步细分

---IF 在Transaction Table 中根据Transaction ID 找到transaction

-----------IF transaction 已经commit

----------------------IF query scn>commit scn

------------------------------------则接受该块,进行clean out,返回1

------------------------ELSEIF query scn

-------------------------------------则进行一致性读,从第6步向后执行

------------ELSEIF transaction 没有commit

------------------------也进行一致性读,从第6步向后执行

---ELSEIF 在Transaction Table 中没有找到transaction(undo header中的transaction slot被覆盖了,也说明事务已经提交,因为只有提交后所在的transaction slot才能被覆盖。这样query scn则去比较control scn。在该回滚段上control scn以前的transaction都已经被提交,也就是事务表中所能找到的最小的commit scn了)

------------IF query scn

-----------------------则无法知道query scn和commit scn得大小关系,出现ORA-01555错误

------------IF query scn>control scn

-----------------------则query scn肯定>commit scn

------------------------------------则接受该块,进行clean out,并将block 中ITL标记上“U”,表示“upper bound commit” ,并返回1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值