实例恢复:
当数据库突然崩溃,而还没有来得及将buffer cache里的脏数据块刷新到数据文件里,同时实例崩溃时正在运行着的事务被突然中断,则事务为中间状态,也就是既没有提交也没有回滚,这时数据文件里的内容不能体现实例崩溃的状态,这样关闭数据库是不一致的。
- 下次启动实例时,oracle会由smon进程自动进行实例恢复,实例启动时,smon进程会去检查控制文件所记录的每个在线的、可读写的数据文件STOP SCN 号,数据库正常运行过程,该STOP SCN 为空,而当数据库正常关闭时,会进行完全检查点,并将检查点SCN 号更新到 STOP SCN中,实例崩溃时 oracle 来不及更新STOP SCN ,则STOP SCN 为空,当smon发现STOP SCN 是空值时,就知道实例上次没有正常关闭,因此由smon进程开始实例恢复,
前滚:SMON 实例恢复时,会从控制文件中找到每3秒触发的增量检查点,检查点队列的第一个脏数据块检查点所对应的RBA地址,于是,smon进程到联机文件中找到该检查点RBA地址,然后从该位置开始往下应用