《Oracle 数据迁移与备份系列》
第三篇:《RMAN 备份与恢复指南:保障数据库安全》(RMAN)
1.概述
RMAN(Recovery Manager) 是 Oracle 数据库内置的专用备份与恢复工具,提供高效、安全的物理级数据保护机制。它支持数据库的 完整备份、增量备份、数据恢复 以及 跨平台迁移,是 DBA 进行数据库管理的重要工具。
2.RMAN介绍
2.1功能概述
-
数据库备份:支持 完整备份、增量备份 和 归档日志备份,确保数据安全。
-
数据恢复:可快速恢复数据库,包括 整库恢复、表空间恢复、数据文件恢复 等。
-
跨平台迁移:支持 跨操作系统 迁移数据库,如 Linux 迁移至 Windows。
-
备份优化:支持 压缩、去重、加密,减少备份存储占用,提高安全性。
2.2核心特性
RMAN 具有以下特性,使其成为 Oracle 官方推荐的备份与恢复工具:
备份管理
- 支持热备份:可在数据库运行时执行备份,无需停机。
- 增量备份:仅备份 自上次备份以来 发生变化的数据,提高效率。
- 自动备份控制文件与 SPFILE,防止重要元数据丢失。
数据恢复
- 块级恢复:当某个数据块损坏时,可直接修复,而无需恢复整个数据文件。
- 时间点恢复(PITR):可将数据库恢复到指定时间点,适用于误操作恢复。
- 快速故障恢复:结合 Flashback 技术,实现 回滚操作、数据库重演。
3.RMAN的优势
-
高效备份:支持 增量备份、压缩存储,减少磁盘占用。
-
快速恢复:可进行 整库、表空间、数据文件、块级别恢复,避免全库重建。
-
跨平台迁移:支持 不同架构的 Oracle 版本迁移,灵活适配业务需求。
4.RMAN数据迁移实施步骤
4.1环境准备
(1)确保主备库环境一致
- 目标服务器上的oracle版本必须与源库相同或更高。
- 目录结构尽量一致
- 如果不一致需要手动调整。
(2)开启归档模式
在主库执行:
SELECT LOG_MODE FROM V$DATABASE;
如果未显示open
状态
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE OPEN;
(3)启用强制日志模式
ALTER DATABASE FORCE LOGGING;
4.2使用RMAN全备份
- 适用于数据量适中,可接受服务器长时间停机的状况。
(1)备份数据库
在主库上,使用RMAN进行全备份:
rman target /
RUN {BACKUP DATABASE FORMAT '/u01/backup/db_%U.bkp';BACKUP CURRENT CONTROLFILE FOR STANDBY FORMAT '/u01/backup/standby_control.bkp';
}
命令解析:
-
rman target /
- 连接 RMAN,
target /
表示 直接连接本地数据库(以 Oracle 用户运行)。
- 连接 RMAN,
-
BACKUP DATABASE FORMAT '/u01/backup/db_%U.bkp';';
-
备份 整个数据库(包括数据文件)。
-
FORMAT '/u01/backup/db_%U.bkp'
指定备份文件路径:
%U
:RMAN 自动生成唯一的备份文件名,避免冲突。
-
-
BACKUP CURRENT CONTROLFILE FOR STANDBY FORMAT '/u01/backup/standby_control.bkp';
- 备份当前 控制文件,用于创建 Standby 备库。
FOR STANDBY
:指定该控制文件将用于 Data Guard 备库。
(2)传输数据文件到备库
scp /u01/backup/* oracle@<备库IP>:/u01/backup/
(3)在备库恢复数据库
rman target /
RUN {SET DBID <主库DBID>; # 可选,确保识别正确的备份STARTUP NOMOUNT;RESTORE STANDBY CONTROLFILE FROM '/u01/backup/standby_control.bkp';ALTER DATABASE MOUNT;RESTORE DATABASE;RECOVER DATABASE;
}
SET DBID <主库DBID>;
:选择数据库DBID,防止RMAN误识别数据库。STARTUP NOMOUNT
先启动实例,再恢复控制文件,符合最佳实践。ALTER DATABASE MOUNT
挂载数据库,使其进入 Standby 状态。RECOVER DATABASE
应用归档日志,确保数据一致性。
(4)启动数据库
ALTER DATABASE OPEN RESETLOGS;
4.3使用RMAN全备份
- 适用于数据量适中,可接受服务器长时间停机的状况。
(1)备份数据库
在主库上,使用RMAN进行全备份:
rman target /
RUN {BACKUP INCREMENTAL LEVEL 0 DATABASE FORMAT '/u01/backup/db_%U.bkp';BACKUP CURRENT CONTROLFILE FORMAT '/u01/backup/controlfile.bkp';
}
命令解析:
-
rman target /
- 连接 RMAN,
target /
表示 直接连接本地数据库(以 Oracle 用户运行)。
- 连接 RMAN,
-
BACKUP INCREMENTAL LEVEL 0 DATABASE FORMAT '/u01/backup/db_%U.bkp';
-
备份 整个数据库(包括数据文件)。
-
INCREMENTAL LEVEL 0
:- Level 0(全备份):相当于完整备份,备份所有数据块。
- Level 1(增量备份):仅备份 自上次 Level 0 或 Level 1 以来 发生变化的数据块。
-
FORMAT '/u01/backup/db_%U.bkp'
指定备份文件路径:
%U
:RMAN 自动生成唯一的备份文件名,避免冲突。
-
-
BACKUP CURRENT CONTROLFILE FOR STANDBY FORMAT '/u01/backup/controlfile.bkp';
- 备份当前 控制文件,用于创建 Standby 备库。
FOR STANDBY
:指定该控制文件将用于 Data Guard 备库。
(2)传输数据文件到备库
scp /u01/backup/* oracle@<备库IP>:/u01/backup/
(3)在备库恢复数据库
rman target /
RESTORE DATABASE;
RECOVER DATABASE;
(4)定期进行增量备份
在 主库 定期执行增量备份:
rman target /
BACKUP INCREMENTAL LEVEL 1 DATABASE FORMAT '/u01/backup/inc_%U.bkp';
然后传输到 目标库 并恢复:
scp /u01/backup/inc_* 目标服务器:/u01/backup/
rman target /
RECOVER DATABASE;
(5)最终切换
在主库 最后一次增量备份 并传输到目标库后,执行:
ALTER DATABASE OPEN RESETLOGS;
5.结语
至此,使用 RMAN 进行数据迁移 的流程已完成。
本文旨在为初学者提供学习参考,作者仍在不断学习和探索,若有不足之处,欢迎指正交流。如遇问题,欢迎私信或在评论区讨论,共同进步!😊