首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Oracle 邏輯備份 Shell 腳本實戰:全量、累積、增量備份與排程

     編輯:Oracle 資料庫相關知識

備份策略概覽

利用 Oracle exp 工具實現三級備份策略,配合 crontab 自動化執行:

  • 完全備份:每月 1 日凌晨 2:00 執行,基線備份
  • 增量備份:週一至週六凌晨 2:30 執行,備份自上次備份以來的變更
  • 累積備份:週日凌2:45 執行,備份自上次完全備份以來的所有變更

三大備份腳本

1. 完全備份腳本 exp_comp.sh

#!/bin/sh
rq=`date +"%m%d"`
su - oracle -c "exp system/manager full=y inctype=complete file=/oracle/export/db_comp${rq}.dmp"

2. 增量備份腳本 exp_incr.sh

#!/bin/sh
rq=`date +"%m%d"`
su - oracle -c "exp system/manager full=y inctype=incremental file=/oracle/export/db_incr${rq}.dmp"

3. 累積備份腳本 exp_cumu.sh

#!/bin/sh
rq=`date +"%m%d"`
su - oracle -c "exp system/manager full=y inctype=cumulative file=/oracle/export/db_cumu${rq}.dmp"

關鍵參數解析

參數說明
full=y完全導出模式,包含所有用戶對象
inctype備份類型:complete(完全)、cumulative(累積)、incremental(增量)
file導出檔路徑,含日期後綴避免覆蓋
su - oracle -c切換到 oracle 用戶執行,確保環境變數正確

Crontab 排程配置

編輯 /var/spool/cron/crontabs/root 加入:

0 2 1 * * /oracle/exp_comp.sh          # 每月1日 02:00 完全備份
30 2 * * 0-5 /oracle/exp_incr.sh       # 週一至六 02:30 增量備份
45 2 * * 6 /oracle/exp_cumu.sh         # 週日 02:45 累積備份

提示:時間表可根據業務恢復時間目標(RTO)與恢復點目標(RPO)調整。

最佳實踐建議

  • 導出目錄 /oracle/export 需預留足夠磁碟空間,建議掛載獨立磁碟陣列
  • 定期驗證備份檔完整性:exp system/manager file=xxx.dmp show=y
  • 異地備份:將 .dmp 檔同步至遠端存儲
  • 密碼安全:避免腳本明文密碼,可使用 Oracle Wallet 或環境變數傳遞

總結

這套 Shell 腳本結合 exp 的三種導出模式與 crontab,構建了低成本、可維護的邏輯備份體系。實際部署時請根據數據量級調整頻率與保留策略,並納入災難恢復演練計畫。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved