Oracle 实例恢复详解

Oracle 实例恢复详解

适用版本:Oracle Database 10g / 11g / 12c / 19c / 23ai 文档版本:v1.0 / 2026-07


1. 概述

实例恢复保证数据库一致性[1]:

详细见:Oracle 实例恢复与崩溃恢复Oracle 检查点 Checkpoint 机制详解


2. 触发场景

2.1 崩溃

- 实例崩溃
- 电源故障
- OS 故障

2.2 Shutdown abort

- 强制关闭
- 不正常
- 需要恢复

2.3 节点故障

- RAC 节点故障
- 其他节点恢复
- 透明

3. 恢复流程

3.1 启动

- STARTUP
- MOUNT
- 检查控制文件

3.2 前滚

- 应用 Redo
- 未提交事务重做
- 数据文件更新

3.3 回滚

- Undo 回滚
- 未提交事务撤销
- 一致

3.4 开放

- OPEN
- 可访问
- 完成

4. 前滚

4.1 Redo Apply

- 从最后检查点
- 应用 Redo
- SCN 推进

4.2 Online Redo

- 优先
- 未归档
- 实时

4.3 Standby Redo

- RAC
- 其他实例 Redo
- 完成

5. 回滚

5.1 Undo

- Undo 表空间
- 未提交事务
- 撤销

5.2 延迟

- 延迟回滚
- 可访问
- 后台

5.3 并行

- 并行回滚
- fast_start_parallel_rollback
- 性能

6. 检查点

6.1 检查点

- DBWn 写
- 检查点推进
- 减少恢复

6.2 MTTR

- Mean Time To Recover
- FAST_START_MTTR_TARGET
- 控制

6.3 增量检查点

- RBA
- 增量
- 优化

详细见:Oracle 检查点 Checkpoint 机制详解


7. 参数

7.1 FAST_START_MTTR_TARGET

ALTER SYSTEM SET fast_start_mttr_target = 60;
-- 60 秒恢复目标

7.2 fast_start_parallel_rollback

ALTER SYSTEM SET fast_start_parallel_rollback = HIGH;
-- 并行回滚

7.3 recovery

-- 并行恢复
ALTER SYSTEM SET recovery_parallelism = 4;

8. RAC 实例恢复

8.1 节点故障

- 一个节点故障
- 其他节点恢复
- 透明

8.2 Cache Fusion

- 融合缓存
- 恢复
- 一致

8.3 并行

- 多节点并行
- 快速
- 性能

9. 崩溃恢复

9.1 单实例

- 实例崩溃
- 启动恢复
- 自动

9.2 RAC

- 全集群崩溃
- 启动恢复
- 自动

9.3 介质恢复

- 数据文件损坏
- RMAN 恢复
- 手动

10. 监控

10.1 恢复进度

SELECT * FROM v$recovery_progress;

10.2 实例恢复

SELECT * FROM v$instance_recovery;

10.3 MTTR

SELECT mttr_target_for_estimate, estd_cache_writes, estd_cache_read_hits
FROM v$mttr_target_advice;

11. 性能

11.1 前滚

- Redo 应用
- 并行
- 性能

11.2 回滚

- Undo
- 并行
- 性能

11.3 优化

- 检查点优化
- MTTR 调整
- 监控

12. 应用场景

12.1 崩溃

- 实例崩溃
- 自动恢复
- 快速

12.2 RAC

- 节点故障
- 其他节点恢复
- 透明

12.3 维护

- 计划停机
- 快速恢复
- 业务

13. 常见问题

13.1 恢复慢

- Redo 多
- MTTR
- 优化

13.2 回滚慢

- 大事务
- 并行
- 优化

13.3 ORA-01555

- Undo 不足
- 调整
- 监控

14. 最佳实践

  1. MTTR:合理
  2. 检查点:优化
  3. 并行:启用
  4. Undo:足够
  5. 监控:进度
  6. Redo:优化
  7. RAC:利用
  8. 测试:恢复
  9. 文档:配置
  10. 演练:故障

15. 参考资料

[1] Oracle Database Concepts 19c, “Instance Recovery” https://docs.oracle.com/en/database/oracle/oracle-database/19/cncpt/