3.1.2 Oracle
恢复
Oracle
恢复机制由
ACID
模型驱动,其宗旨是在发生故障后实现数据完整性和一致
性。三种重要的故障类型是事务、实例和介质故障。本节重点介绍实例和介质恢复。
1.
实例恢复
在数据库实例出现故障时,即系统全局区
(System Global Area
,
SGA)(
或更确切地讲,
是缓冲区高速缓存
)
的内容丢失,将进行实例恢复。发生实例故障后的恢复由
ORL
文件
驱动,该文件已经持久保存了更改信息
(ACID
的持久性
)
。崩溃恢复只是另一种实例恢复
情形,当单节点数据库崩溃并重启或
RAC
数据库的所有实例出现故障时,将进行崩溃恢
复。启动的第一个实例将启动崩溃恢复。实例恢复和崩溃恢复的机制是相同的。
下面的输出信息来自数据库的
alert.log
,说明了上次崩溃后数据库打开时的恢复进度。
ALTER DATABASE OPEN
Beginning crash recovery of 1 threads
Started redo scan
Completed redo scan
94354 redo blocks read, 2982 data blocks need recovery
Started redo application at
Thread 1: logseq 62, block 427
Recovery of Online Redo Log: Thread 1 Group 2 Seq 62 Reading mem 0
Mem# 0: +DATA/Matrix/redo_02a.log
Mem# 1: +DATA/Matrix/redo_02b.log
Completed redo application
Completed crash recovery at
Thread 1: logseq 62, block 94781, scn 678972
2982 data blocks read, 2982 data blocks written, 94354 redo blocks read
Mon Jul 07 21:44:34 2008
注意,打开数据库后,崩溃恢复首先扫描一个或多个故障实例的重做线程,然后按
SCN
读取和合并,从每个线程上一个增量检查点的日志顺序开始。扫描过程生成一个需
要恢复的块列表。从此时间点开始恢复,将恢复重做数据应用于这些块。在恢复完毕后,
会将重做块读取和数据块读取的摘要信息写入警报日志中。
线 程 合 并
执行重做记录的线程合并
(
Thread merging)
是为了确保按顺序对数据库进行更新,以
便按原来的更改顺序执行所有更改。第
8
章将详细讨论线程合并。
2.
介质恢复
当一个或多个数据库数据文件或整个数据库丢失时,将执行介质恢复。一旦还原了
必需的数据库数据文件,就需要将数据库恢复到指定的时间点,或恢复到故障前的时间
点。一个需要注意的要点是,恢复使整个数据库
(
所有联机数据文件
)
进入同一个一致时
Oracle Data Guard 11
g
完全参考手册
102
间点或
SCN
。介质恢复由归档重做日志驱动。因为物理备用架构基于介质恢复构建,这
里将对其进行重点介绍。
以下来自数据库
alert.log
的摘要信息显示备用数据库的介质恢复。
Completed: ALTER DATABASE RECOVER MANAGED STANDBY DATABASE
THROUGH ALL SWITCHOVER DISCONNECT USING CURRENT LOGFILE
Wed Jul 23 08:43:54 2008
评论