Oracle數據庫備份主要分為邏輯備份(Data Pump)和物理備份(RMAN、冷備份/熱備份),以下是具體步驟:
邏輯備份通過expdp(導出)和impdp(導入)工具實現,適用于導出表結構、數據和存儲過程等邏輯對象,適合跨數據庫版本遷移或選擇性恢復。
sqlplus以sysdba身份登錄數據庫:sqlplus / as sysdba;/backup/oracle_exp):CREATE DIRECTORY exp_dir AS '/backup/oracle_exp';
③ 執行導出命令(全量導出示例):expdp system/password@ORCL DIRECTORY=exp_dir DUMPFILE=full_backup.dmp LOGFILE=exp_full.log FULL=Y
參數說明:DIRECTORY指向邏輯目錄對象,DUMPFILE指定備份文件名,LOGFILE記錄導出日志,FULL=Y表示全量導出。物理備份直接復制數據庫文件(數據文件、控制文件、歸檔日志等),分為冷備份(數據庫關閉時)和熱備份(數據庫運行時,需開啟歸檔模式)。
SHUTDOWN IMMEDIATE;
② 復制數據庫文件到備份目錄(如/backup/oracle_cold):cp -R $ORACLE_HOME/dbs /backup/oracle_cold/
cp -R $ORACLE_BASE/oradata/ORCL /backup/oracle_cold/
③ 啟動數據庫:STARTUP;
冷備份恢復時直接覆蓋原文件即可,但無法實現時間點恢復。ALTER DATABASE ARCHIVELOG;并重啟數據庫)。ALTER TABLESPACE USERS BEGIN BACKUP;
② 復制數據文件到備份目錄(如/backup/oracle_hot):cp -R $ORACLE_BASE/oradata/ORCL/Users01.dbf /backup/oracle_hot/
③ 結束備份模式:ALTER TABLESPACE USERS END BACKUP;
④ 備份歸檔日志(可選但推薦,用于時間點恢復):ALTER SYSTEM ARCHIVE LOG CURRENT;
熱備份恢復時需結合歸檔日志,可實現恢復到特定時間點。RMAN(Recovery Manager)是Oracle原生物理備份工具,支持全量、增量、累積備份及壓縮,適合生產環境。
rman target /
BACKUP DATABASE FORMAT '/backup/oracle_rman/full_%U.bak';
rman target /
BACKUP INCREMENTAL LEVEL 1 DATABASE FORMAT '/backup/oracle_rman/incr_%U.bak';
rman target /
BACKUP ARCHIVELOG ALL DELETE INPUT FORMAT '/backup/oracle_rman/arch_%U.bak';
參數說明:FORMAT指定備份路徑(%U為自動生成的唯一標識符),DELETE INPUT備份后刪除歸檔日志以節省空間。恢復流程需根據備份類型選擇對應工具,以下是常見場景的恢復步驟:
適用于邏輯備份損壞或需要遷移數據到其他數據庫的場景。
CREATE DIRECTORY imp_dir AS '/backup/oracle_imp';
② 執行導入命令(全量恢復示例):impdp system/password@ORCL DIRECTORY=imp_dir DUMPFILE=full_backup.dmp LOGFILE=imp_full.log FULL=Y
③ 若需覆蓋現有數據,可添加REMAP_TABLESPACE(重映射表空間)或TABLE_EXISTS_ACTION=REPLACE(替換已有表)參數。SHUTDOWN IMMEDIATE;
② 覆蓋原數據庫文件(將備份目錄中的文件復制到原路徑,如$ORACLE_BASE/oradata/ORCL):cp -R /backup/oracle_cold/ORCL/* $ORACLE_BASE/oradata/ORCL/
③ 啟動數據庫:STARTUP;
冷備份恢復后數據庫會回到備份時的狀態,無法恢復備份后的數據。ALTER TABLESPACE USERS BEGIN BACKUP;
② 覆蓋數據文件(從熱備份目錄復制到原路徑):cp -R /backup/oracle_hot/Users01.dbf $ORACLE_BASE/oradata/ORCL/
③ 結束恢復模式:ALTER TABLESPACE USERS END BACKUP;
④ 恢復歸檔日志(若有):RECOVER DATABASE USING BACKUP CONTROLFILE UNTIL CANCEL;
⑤ 打開數據庫:ALTER DATABASE OPEN RESETLOGS;
RESETLOGS會清空重做日志,生成新的日志序列,適用于不完全恢復。rman target /
RESTORE DATABASE;
RECOVER DATABASE;
rman target /
RESTORE DATABASE;
RECOVER DATABASE;
RMAN會自動識別增量備份文件并應用。2025-09-20 10:00:00),需添加UNTIL TIME參數:rman target /
RESTORE DATABASE;
RECOVER DATABASE UNTIL TIME "TO_DATE('2025-09-20 10:00:00', 'YYYY-MM-DD HH24:MI:SS')";
ALTER DATABASE OPEN RESETLOGS;
時間點恢復需確保歸檔日志完整,否則無法恢復到指定時間。SYSDBA權限,備份目錄存在且有讀寫權限(如chmod -R 777 /backup/oracle_*)。ALTER DATABASE ARCHIVELOG;),可通過ARCHIVE LOG LIST命令檢查。RMAN VALIDATE BACKUPSET;驗證備份文件的完整性,避免備份失效。crontab設置定時任務(如每天凌晨2點執行RMAN備份),減少人工干預:0 2 * * * /usr/bin/rman target / <<EOF
BACKUP DATABASE FORMAT '/backup/oracle_rman/full_%U.bak';
BACKUP ARCHIVELOG ALL DELETE INPUT FORMAT '/backup/oracle_rman/arch_%U.bak';
EXIT;
EOF