首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle 邏輯備份 Shell 腳本自動化:完全、累加、增量三級策略與 Crontab 排程

     編輯:Oracle 資料庫基礎

備份策略設計

採用 Oracle Export (exp) 邏輯備份三層次:

  • 完全備份:INCTYPE=COMPLETE,基礎全量導出
  • 累加備份:INCTYPE=CUMULATIVE,自上次完全備份以來的所有變更
  • 增量備份:INCTYPE=INCREMENTAL,自上次任意備份以來的變更

配合 FULL=Y 導出整個資料庫。

三個備份 Shell 腳本

1. 完全備份 exp_comp.sh(每月 1 號)

#!/bin/ksh
rq=`date +"%m%d"`
su - oracle -c "exp system/manager FULL=Y INCTYPE=COMPLETE FILE=/oracle/export/db_comp$rq.dmp"

2. 累加備份 exp_cumu.sh(每週六)

#!/bin/ksh
rq=`date +"%m%d"`
su - oracle -c "exp system/manager FULL=Y INCTYPE=CUMULATIVE FILE=/oracle/export/db_cumu$rq.dmp"

3. 增量備份 exp_incr.sh(週一至五)

#!/bin/ksh
rq=`date +"%m%d"`
su - oracle -c "exp system/manager FULL=Y INCTYPE=INCREMENTAL FILE=/oracle/export/db_incr$rq.dmp"

Crontab 自動排程配置

編輯 root 的 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 累加備份

腳本關鍵點解析

元素說明注意事項
su - oracle -c切換至 oracle 用戶環境執行需配置 oracle 用戶無密碼 sudo 或預設環境
rq=\`date +"%m%d"\`日期標記(月日)建議改用 %Y%m%d%H%M 含時分,避免同名覆蓋
FILE=導出檔路徑確保 /oracle/export 空間足夠、權限正確
INCTYPE備份類型三類配合形成完整恢復鏈
Crontab 時間錯開執行時間避免並發導出爭用資源

恢復流程說明

  1. 找到最近的完全備份檔案
  2. 套用該完全備份後的累加備份(如有)
  3. 依序套用後續的增量備份至目標時間點
  4. 使用 imp 導入,參數對應 INCTYPE 類型

改進建議

  1. 改用 Data Pump (expdp/impdp):10g+ 並行、可壓縮、可過濾、效能優於 exp
  2. 加入壓縮:| compress > file.dmp.Z 或 expdp COMPRESSION=ALL
  3. 加入日誌與通知:導出日誌、錯誤郵件通知、備份驗證腳本
  4. 異地複製:rsync/scp 至遠端備份伺服器
  5. 遷移至 RMAN:物理備份支援區塊增量、壓縮、加密、時間點恢復,為企業級標準

適用場景

  • 中小型資料庫(< 50GB)
  • 跨版本/平台遷移需求
  • 物件級恢復需求(單表恢復)
  • 無專業 DBA,需簡單可維護方案

邏輯備份雖非大型庫首選,但配合三級策略與自動化排程,仍為中小型環境提供可靠的資料保護基線。

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