《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 進行數據遷移 的流程已完成。
本文旨在為初學者提供學習參考,作者仍在不斷學習和探索,若有不足之處,歡迎指正交流。如遇問題,歡迎私信或在評論區討論,共同進步!😊