oracle实例恢复 详解理论知识

oracle实例恢复 详解理论知识_第1张图片

实例恢复

当数据库突然崩溃,而还没有来得及将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地址,然后从该位置开始往下应用,应用所有的redo 条目到ON DISK RBA(检查点队列的最后一个RBA) 就是联机日志文件的最后一条redo。从而buffer cache 里又恢复了实例崩溃那个时间的状态。这个过程叫前滚

前滚完毕之后,buffer cache里既有崩溃时已经提交还没有写入数据文件里的脏数据块,也还有事务被突然终止,而没有提交又没有回滚的事务所脏的数据块,前滚完毕后,smon进程立即打开数据库,但是,这时的数据库中还含有那些中间状态的,既没有提交又没有回滚的脏数据块,这种脏数据块是不能存在数据库中的,因为他们没有被提交必须回滚,打开数据库以后,Smon 进程会在后台进行回滚。

oracle database 10g 会从实例错误中自动进行恢复,DBA所需要执行的操作就是正常启动实例。实例会装载控制文件,然后尝试打开数据文件。如果发现数据文件在关闭过程中不同步,则使用重做日志组中包含的信息将数据文件前滚到关闭时的状态,然后回退所有未提交的事务处理(因为还原表空间也已前滚)。

· 原因是尝试打开的数据库中的文件在关闭时不同步

· 是自动执行的

· 使用重做日志组中存储的信息来同步文件

· 涉及到两个不同的操作

- 前滚:数据文件还原到出现实例错误之前所处的状态。

- 回退: 已执行但尚未提交的更改会返回到初始状态。

实例恢复阶段:

要使实例打开一个数据文件,数据文件头中包含的系统更改号(SCN)必须也数据库控制文件中存储的当前SCN匹配。

如果编号不匹配,实例会应用联机重做日志中的redo 数据,并按顺序“重做”事务处理,直到数据文件处于最新状态。所有数据文件与控制文件同步后,就会打开数据库,此时用户可登陆

应用重做日志后,会应用所有事务处理,使数据库返回到出现错误时的状态。这通常包含正在进行但尚未提交的事务处理。打开数据库之后,会回退那些未提交的事务处理。在实例恢复的回退阶段结束时,数据文件只包含提交的数据。

1.数据文件不同步

2.前滚(利用redo)

3.文件中的提交和未提交数据

4.回退(还原)

5.文件中提交数据


优化实例恢复(FAST_START_MTTR_TARGET是指允许DBA指定数据库进行崩溃恢复需要的秒数)

在实例为事务处理返回 commit complete (提交完成)之前,在重做日志组中会始终记录事务处理信息。重做日志组中的信息确保了在出现错误时可恢复事务处理。另外,事务处理信息还需要写入数据文件。由于数据文件写过程比重做写过程要慢很多,因此,数据文件写操作通常发生在重做日志组记录了信息之后。(数据文件随机写过程比重做日志文件连续写过程要慢)

每隔三秒,检查点进程会在控制文件中记录关于重做日志中检查点位置的信息。因此,oracle 数据库认为此时间点之前记录的所有重做日志项对数据库恢复来说都是不需要的。

实例恢复所需的时间指的是将数据文件由其最后一个检查点返回到控制文件中记录的最新SCN所需的时间。管理员通过设置MTTR(Mean Time To Recovery)目标 (以秒为单位)并通过重做日志组的大小可控制这个时间。检查点位置与重做日志末尾之间的距离,永远不能大于最小重做日志组的90%

· 在实例恢复期间,必须将检查点位置与重做日志末尾之间的事务处理应用到数据文件

· 通过控制检查点位置与重做日志末尾之间的差异可优化实例恢复。图中:有条纹的块未写入磁盘


oracle实例恢复 详解理论知识_第2张图片



oracle进行备份的需要了解的知识:

oracle常见的故障类型:http://blog.csdn.net/wanghui5767260/article/details/20696235

oracle四个重要的后台进程(DBWR / LGWR / ARCH / CKPT):http://blog.csdn.net/wanghui5767260/article/details/20715809

oracle物理备份和逻辑备份理解:http://blog.csdn.net/wanghui5767260/article/details/20627639

你可能感兴趣的:(oracle实例恢复,实例恢复理论基础)