Ubuntu下Oracle數據庫備份策略
物理備份是Oracle數據庫備份的核心,通過復制數據庫物理文件(數據文件、控制文件、重做日志文件、歸檔日志文件)實現,確保數據的物理一致性。常見類型包括:
LOG_ARCHIVE_DEST_n
指定的目錄),是熱備份和增量備份的關鍵補充,用于恢復到指定時間點。邏輯備份通過導出數據庫對象(表、視圖、存儲過程、用戶等)的結構和數據實現,適用于跨平臺遷移或細粒度恢復(如單個表恢復)。常用工具:
expdp system/password@dbname directory=dpump_dir dumpfile=full.dmp logfile=full.log
(全庫導出);impdp system/password@dbname directory=dpump_dir dumpfile=full.dmp logfile=full.log
(全庫導入)。Oracle內置的物理備份工具,支持全量、增量、歸檔日志備份,具備壓縮、加密、塊變更跟蹤(Block Change Tracking)等功能,可自動化管理備份策略(如保留周期、過期備份清理)。示例命令:
-- 配置保留策略(30天內可恢復)
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 30 DAYS;
-- 配置自動備份控制文件
CONFIGURE CONTROLFILE AUTOBACKUP ON;
-- 執行全量熱備份(帶歸檔日志)
RUN {
ALLOCATE CHANNEL ch1 DEVICE TYPE disk;
BACKUP AS COMPRESSED BACKUPSET DATABASE PLUS ARCHIVELOG;
RELEASE CHANNEL ch1;
}
適用于需要跨平臺遷移或細粒度恢復的場景,支持并行導出(PARALLEL
參數)、壓縮(COMPRESSION
參數),備份文件存儲在DIRECTORY
對象指定的目錄(需提前創建并授權)。
通過crontab定時任務實現定期自動執行備份腳本,避免人工遺漏。示例:
/home/oracle/rman_full.sh
。0 2 * * 0 /home/oracle/rman_full.sh
/home/oracle/rman_incr.sh
。0 2 * * 1-6 /home/oracle/rman_incr.sh
/home/oracle/exp_backup.sh
。0 3 * * * /home/oracle/exp_backup.sh
注:腳本需賦予執行權限(
chmod +x /home/oracle/*.sh
),并通過crontab -e
編輯定時任務。
RECOVERY WINDOW OF 30 DAYS
,保留30天內可恢復的備份集,自動清理過期備份(通過DELETE NOPROMPT OBSOLETE
命令)。find /backup/exp -type f -mtime +7 -exec rm {} \;
命令清理)。/u01/dbbak
),建議使用獨立分區,避免磁盤空間不足。rsync
或scp
將備份文件同步到異地服務器(如rsync -avz /u01/dbbak/ user@remote:/backup/oracle/
),防范本地災難(如火災、磁盤損壞)。RECOVER DATABASE
命令應用歸檔日志,直到達到恢復點。ALTER DATABASE OPEN RESETLOGS
;若為冷備份,直接ALTER DATABASE OPEN
。oracle
用戶執行,確保具有數據庫SYSDBA
權限和操作系統目錄讀寫權限。crontab -l
查看定時任務狀態,通過tail -f /var/log/cron
查看日志,設置郵件報警(如使用mail
命令)通知備份失敗。