The First part of question:
据我所知,Oracle DB中的RedoLog用于保护数据库免受数据丢失.据我所知,RedoLog的一个例子就是在事务中断后恢复数据.例如,如果意外关闭电力.但我无法理解数据库应用程序更改重做日志DB下次唤醒后直接?数据库提交是否在redoLog中直接更改为DataFiles.或者它只是启动事务并更改缓冲区中的块并将它们标记为脏?但谁将这些脏块提交给DB文件?我怎么能继续被中断的交易?
Second part of the question:
如果我有这个DML in transacion:
让我们假设对于id = 1,a = 1
UPDATE test_table
SET a = (SELECT a FROM test_table WHERE id = 1) + 1
WHERE id = 1;
我只是在TEST_TABLE中增加了A.因此,如果事务失败,并且我的DML语句被写入RedoLog,则下次打开DB时将恢复它.但是,如果A的值随数据文件中的另一个数据库实例而改变,该怎么办? RedoLog中的重做更改向量是什么(实际上可能会发生,可能是在ORACLE RCA中吗?)它会增加旧值还是新值?
我为我糟糕的英语道歉.将欣赏任何答案.