recv_scan_log_recs
scanned_lsn += data_len;
if (scanned_lsn > recv_sys->scanned_lsn){//checkpoint_lsn肯定没刷完
需要recovery;
}
if (data_len < OS_FILE_LOG_BLOCK_SIZE) {//肯定是最后一个block
finished = TRUE;
break;
}
1)scanned_lsn是checkpoint_lsn对齐后的lsn,指向checkpoint_lsn所在block的头部
2)data_len是checkpoint_lsn所在block的redo内容长度
3)recv_sys->scanned_lsn是checkpoint_lsn
recovery判断正常关闭
最新推荐文章于 2021-06-01 12:23:23 发布
本文介绍了如何在Oracle恢复过程中判断是否已正常关闭。通过分析`scanned_lsn`与`recv_sys->scanned_lsn`的关系以及`data_len`的值,确定是否需要进行日志恢复。当`scanned_lsn`超过`recv_sys->scanned_lsn`时,表明checkpoint_lsn的日志未完全处理,需进行恢复;若`data_len`小于OS_FILE_LOG_BLOCK_SIZE,则标识为最后一个日志块,恢复结束。
摘要由CSDN通过智能技术生成