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

Oracle 匯出備份 Shell 腳本實戰:完全、累積、增量三級策略與 Crontab 自動化

     編輯:Oracle 資料庫基礎

傳統 exp 工具雖已被 Data Pump (expdp) 取代,但在舊版本維護或簡單邏輯備份場景仍具參考價值。本文提供三層級備份腳本範本與排程配置,採用 system/manager 預設帳密(生產環境請務必替換為專用備份帳號並啟用 Wallet 儲存密碼)。

三層級備份腳本

1. 完全備份 exp_comp.sh

#!/bin/bash
# 完全備份:每月 1 號凌晨 2 點執行
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/bash
# 累積備份:週六凌晨 2:45 執行(含自上次完全備份以來所有變更)
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/bash
# 增量備份:週一至週五凌晨 2:30 執行(僅含自上次備份以來變更)
rq=$(date +"%m%d")
su - oracle -c "exp system/manager full=y inctype=incremental file=/Oracle/export/db_incr${rq}.dmp"

Crontab 自動化排程

以 root 身分編輯 /var/spool/cron/crontabs/root (或執行 crontab -e):

# 完全備份:每月 1 號 02:00
0 2 1 * * /Oracle/exp_comp.sh

# 增量備份:週一至週五 02:30
30 2 * * 1-5 /Oracle/exp_incr.sh

# 累積備份:週六 02:45
45 2 * * 6 /Oracle/exp_cumu.sh

關鍵說明與最佳實踐

  • 備份類型關係:完全 > 累積 (含上次完全後所有) > 增量 (含上次任意備份後)。還原順序:完全 → 最新累積 → 後續增量序列。
  • 安全性強化:禁止明文密碼,建立專用備份使用者並授予 EXP_FULL_DATABASE,使用 orapwd + Wallet 或 / 身分驗證 (OS 認證)。
  • 路徑與權限:確保 /Oracle/export 目錄存在且 oracle 使用者可寫,磁碟空間足夠。
  • 日誌與監控:腳本應重導向標準輸出/錯誤至日誌檔,並整合監控系統 (Zabbix/Prometheus) 檢查備份完成狀態與檔案大小合理性。
  • 遷移建議:新專案請直接使用 expdp + DBMS_DATAPUMP API,支援並行、壓縮、加密、網路模式等企業級特性。

恢復演練提醒

「沒測試過的備份不是備份」。建立季度恢復演練機制,驗證:

  1. 完全備份單獨還原可行性
  2. 完全 + 累積 + 增量鏈式還原時間點一致性
  3. 還原後資料完整性校驗 (行數、檢查和、關鍵業務查詢)

此腳本框架可直接套用至 9i/10g/11g 環境,配合現代化監控與加密儲存,構建合規的邏輯備份體系。

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