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. 最佳实践
- MTTR:合理
- 检查点:优化
- 并行:启用
- Undo:足够
- 监控:进度
- Redo:优化
- RAC:利用
- 测试:恢复
- 文档:配置
- 演练:故障
15. 参考资料
[1] Oracle Database Concepts 19c, “Instance Recovery” https://docs.oracle.com/en/database/oracle/oracle-database/19/cncpt/