Oracle數據庫備份主要分為邏輯備份(數據泵導出)和物理備份(RMAN、冷備份、熱備份),以下是具體操作步驟:
邏輯備份通過expdp
(導出)和impdp
(導入)工具實現,適用于跨平臺數據遷移或選擇性恢復。
sqlplus / as sysdba
),創建備份目錄對象(若未存在):CREATE DIRECTORY backup_dir AS '/path/to/backup/directory';
執行導出命令(替換username/password@SID
為實際信息):expdp username/password@SID DIRECTORY=backup_dir DUMPFILE=full_backup.dmp LOGFILE=export.log FULL=y
INCREMENTAL=y
(增量導出)或TABLES=(table1,table2)
(指定表導出)參數調整范圍。RMAN是Oracle官方推薦的物理備份工具,支持全量、增量、歸檔日志備份及壓縮,適合自動化管理。
rman target /
進入RMAN交互界面,執行:BACKUP DATABASE FORMAT '/backup/oracle/full_%U.bck';
或直接通過命令行(無需交互):rman target / <<EOF
BACKUP DATABASE FORMAT '/backup/oracle/full_%U.bck';
EXIT;
EOF
BACKUP INCREMENTAL LEVEL 1 DATABASE TAG 'daily_incremental' FORMAT '/backup/oracle/incr_%U.bck';
BACKUP ARCHIVELOG ALL DELETE INPUT FORMAT '/backup/oracle/arch_%U.bck';
VERIFY BACKUP
命令檢查備份集完整性:VERIFY BACKUP OF DATABASE;
冷備份需停止數據庫服務,適用于一致性要求高的場景(如版本升級前)。
SHUTDOWN IMMEDIATE;
tar
命令打包關鍵目錄(如數據文件、控制文件、重做日志文件):tar -czvf cold_backup_$(date +%F).tar.gz /u01/app/oracle/oradata/ORCL /u01/app/oracle/fast_recovery_area/ORCL
STARTUP;
熱備份無需停機,需先將數據庫切換至歸檔日志模式(若未開啟):
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE OPEN;
ALTER TABLESPACE USERS BEGIN BACKUP;
cp -R /u01/app/oracle/oradata/ORCL/Users /backup/oracle/hot_users
ALTER TABLESPACE USERS END BACKUP;
恢復流程需根據備份類型(全量/增量、邏輯/物理)選擇對應命令,以下是常見場景:
邏輯恢復用于修復邏輯錯誤(如誤刪除表)或遷移數據。
CREATE DIRECTORY restore_dir AS '/path/to/restore/directory';
執行導入命令(FULL=y
表示全量恢復):impdp username/password@SID DIRECTORY=restore_dir DUMPFILE=full_backup.dmp LOGFILE=import.log FULL=y
INCREMENTAL=y
(應用增量備份)或TABLES=(table1)
(僅恢復指定表)參數。RMAN恢復適用于物理備份損壞或數據庫崩潰場景,常見流程如下:
RESTORE DATABASE;
RECOVER
命令合并更改:RECOVER DATABASE;
RECOVER DATABASE USING BACKUP CONTROLFILE UNTIL CANCEL;
RESTORE CONTROLFILE FROM '/backup/oracle/controlfile.bck';
恢復后需重新掛載數據庫:ALTER DATABASE MOUNT;
冷備份恢復需將備份文件還原至原路徑,步驟如下:
SHUTDOWN IMMEDIATE;
tar -xzvf cold_backup_2025-10-01.tar.gz -C /
STARTUP;
熱備份恢復需結合歸檔日志,步驟如下:
RECOVER DATABASE;
ALTER DATABASE OPEN RESETLOGS; -- 若使用了增量備份或歸檔日志,需加RESETLOGS
SYSDBA
或相應權限(如BACKUP OPERATOR
)。DELETE OBSOLETE
命令實現)。RMAN REPORT NEED BACKUP
命令查看需備份的文件,通過V$BACKUP_SET
視圖監控備份狀態。