|
请大虾详细解释啊
检查点之后的修改,即使对应的Buffer cache中的块已经被写进了磁盘中,它仍然要被应用重做记录,重做修改一次。
ORACLE日志的机制,就是无论应用多少遍日志,都不会对数据的准确性有影响。
---------------------
这个基本理论应当没有问题
但是过于抽象,回到小弟的举例
例如有这样一个事务(伪代码哦)
begin transaction
update table1 set col1 =5 where col1=3
commit;
end transaction;
修改之前col1中值为3,修改后为5
这个事务在checkpoint和故障点之间发生
并且成功提交,DB_Buffer中的修改也成功写入数据库
那么现在要恢复,按照书上的说法,我的理解
首先要
begin transaction
update table1 set col1 =3 where col1=5
commit;
end transaction;
然后再
begin transaction
update table1 set col1 =5 where col1=3
commit;
end transaction;
请问大虾,Oracle是这样处理的吗?
对于更新还可以有前后值来定位
可是对于增加
如果 检查点到故障点之间成功插入了一条记录 到数据库,
如果现在恢复
那么不会发生重复插入啊
请大虾出手解释啊
----------------------- |
|