导航

Oracle失败──例程失败

Posted on 2008-08-25 09:52  毅无涯  阅读(223)  评论(0编辑  收藏  举报

Oracle Server = 例程 + DB

例程 = 后台进程 + SGA

例程失败是指与例程相关的后台进程或内存结构出现失败。

例程失败主要有以下几种情况:

  • 电源断电导致Oracle Server 不可用。
  • 因为硬件失败导致Oracle Server 不可用,如CPU 失败、内存损坏。
  • 某个必需的后台进程出现失败。(DBWR、LGWR、PMON、SMON、CKPT)

例程失败类似于执行SHUTDOWN ABORT 命令关闭DB,在解决了硬件和断电等问题后,DBA只需要执行STARTUP 命令启动例程和DB 就可以了,而不需要执行任何恢复命令。当执行STARTUP 命令启动例程并装载了DB之后,后台进程SMON 会自动执行例程恢复,最终使DB 的所有文件(数据文件、控制文件、重做日志)完全同步。

后台进程SMON 按照以下步骤执行例程恢复:

  1. 确定不同步的物理文件。通过比较数据文件头部、控件文件和重做日志的当前SCN值,后台进程SMON 可以确定哪些文件处于不同步状态。
  2. REDO。在确定了不同步的文件之后,SMON 会重新应用那些在数据文件上未执行的事务操作,并且后台进程DBWN 会将已提交的数据写入数据文件,未提交的数据写入UNDO段。在应用了REDO 之后,所有联机数据文件都会具有一致的SCN 值。
  3. 在应用了REDO 之后,后台进程SMON 会打开DB。
  4. UNDO。在应用了REDO 之后,数据文件既包含了被提交的数据,也包含了未被提交的数据。在打开DB 之后,SMON 会自动使用UNDO 段取消那些未被提交的数据。从Oracle Database 8 版本开始,Oracle Server 使用“延时回退”机制降低例程恢复时间。