Oracle 备份恢复怎么做?RMAN、归档日志和恢复点有什么关系?
简化版
Oracle 备份恢复常用 RMAN。完整备份保存数据文件等基础数据,归档日志记录备份之后的变化,两者结合可以把数据库恢复到故障前或指定时间点。数据库开启归档模式后,联机重做日志切换产生归档日志,才能支持更完整的介质恢复和时间点恢复。
详细版
常见概念:
- RMAN:Oracle 官方备份恢复工具;
- 全库备份:备份数据文件、控制文件等;
- 增量备份:只备份变化块;
- redo log:记录数据库修改;
- archived redo log:归档后的重做日志;
- restore:把备份文件还原回来;
- recover:应用 redo 或归档日志追平变化;
- point-in-time recovery:恢复到指定时间点。
备份不是有文件就结束,还要定期演练恢复。没有恢复验证的备份,线上价值很有限。
完整版教学
一、备份和恢复不是一回事
备份是把数据保存下来,恢复是故障后把系统拉回可用状态。很多事故不是没有备份,而是备份不可用、日志缺失、恢复流程没人演练。
Oracle 面试里问 RMAN 和归档日志,重点看你是否理解“备份 + 日志 = 可恢复到某个点”。
二、RMAN 是常用备份恢复工具
RMAN 可以备份数据库文件、归档日志、控制文件等,也能做增量备份、校验、恢复。
典型思路:
全量备份 + 增量备份 + 归档日志
全量备份提供基础数据,增量备份减少备份量,归档日志记录备份后发生的变化。
三、归档日志为什么重要
Oracle 在线 redo log 会循环使用。如果数据库处于非归档模式,日志覆盖后,旧的重做信息就没有了。
开启归档模式后,redo log 切换时会生成 archived redo log。这样即使数据文件损坏,也可以:
- restore 之前的备份;
- recover 应用归档日志和必要 redo;
- 把数据库恢复到较新的时间点。
没有归档日志,很多场景只能恢复到上一次备份时刻,数据损失会更大。
四、restore 和 recover 的区别
restore 是把备份文件还原回来,比如还原数据文件。
recover 是应用 redo 信息,把还原出来的旧数据推进到目标时间点。
可以类比:
- restore:把旧照片拿出来;
- recover:根据之后的操作记录,把照片更新到故障前状态。
面试时把这两个词区分清楚,会显得很专业。
五、时间点恢复要有完整链路
如果误删表或误更新大量数据,可能需要恢复到某个时间点。时间点恢复依赖:
- 可用备份;
- 完整归档日志;
- 控制文件或恢复目录信息;
- 明确的目标时间或 SCN;
- 可接受的恢复策略。
实际生产中,很多团队会用备库、闪回、导出备份、审计表等多种手段一起降低恢复风险。
六、备份策略要服务 RPO 和 RTO
备份方案不能只问“每天备一次够不够”,要看两个目标:
- RPO:最多能丢多少数据;
- RTO:多久必须恢复服务。
如果业务只能丢 5 分钟数据,就必须保证日志归档、备份频率和异地复制能支撑这个目标。如果业务要求 30 分钟恢复,恢复流程就要演练到足够熟练。
七、常见误区与追问
| 概念 | 做什么 | 面试高频边界 |
|---|---|---|
| RMAN backup | 备份数据文件、控制文件、归档日志等 | 备份要可校验、可恢复 |
| archived redo log | 保存 redo 历史 | 支撑介质恢复和时间点恢复 |
| restore/recover | 还原文件/应用日志 | 两个动作不能混为一谈 |
记忆钩子:备份文件只是“底座”,归档日志才是“时间线”。没有时间线,很多故障只能回到上一次备份点。
用 RPO/RTO 举例:每天 0 点做一次全量备份,如果不开归档日志,下午 3 点磁盘坏了,最多只能回到 0 点,可能丢 15 小时数据;如果有完整归档日志,就可以 restore 0 点备份,再 recover 到故障前或指定 SCN,数据损失取决于日志是否完整和恢复目标。
- 误区:有 RMAN 备份文件就一定能恢复。 控制文件、归档日志、备份集完整性、恢复步骤和演练都影响最终恢复成功率。
- 误区:restore 和 recover 是同一件事。 restore 是还原备份文件,recover 是应用 redo/归档日志把数据推进到目标点。
- 误区:归档模式只是多占磁盘。 归档日志是介质恢复、时间点恢复、备库同步和审计恢复链路的重要基础。
- 追问:为什么要做恢复演练? 备份可读不等于恢复可用,演练能验证备份链、日志完整性、权限、时间和操作流程。
- 追问:什么是时间点恢复? 将数据库恢复到某个时间或 SCN,常用于误删、误更新后回到事故前状态。
- 追问:RPO 和 RTO 如何影响备份策略? RPO 决定能丢多少数据,影响归档和备份频率;RTO 决定多久恢复,影响备份形态、备库和演练要求。
八、加强记忆
Oracle 恢复记住“备份是底座,归档日志是时间线,RMAN 是工具”。restore 把备份拿回来,recover 用日志把数据推到目标点。真正可靠的备份体系一定要围绕 RPO、RTO,并定期做恢复演练。