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

Oracle 資料庫異地自動備份實戰:Export + FTP + Crontab 零成本方案

     編輯:Oracle 資料庫基礎

場景:大型商業應用的異地容災備份

模擬環境:雙 Sun Solaris 主機 (一主一備),使用 Oracle 原生 exp 邏輯備份,結合 .netrc 自動化 FTP 傳輸,crontab 排程實現全自動無人值守異地備份。

核心指令詳解

1. exp (Export)

exp userid=username/password file=/path/exp_$(date +%m%d).dmp log=/path/exp_$(date +%m%d).log
# 參數說明:
# userid: 必須為第一參數,格式 user/pass[@tns]
# file: 匯出檔路徑 (含日期變數)
# log: 匯出日誌
# 預設模式:FULL=Y (整個資料庫),亦可指定 OWNER= / TABLES=

2. ftp + .netrc (自動化傳輸)

.netrc 放於執行 ftp 的用戶家目錄 ($HOME/.netrc),權限 600。

machine <備份主機IP>
login oraclebk
password testbk2
macdef init
bin
lcd /export/home/oracle/backup
cd /data/oradata/backup
mput *
bye
  • macdef init:定義自動執行的巨集 (連線成功後自動跑)。
  • bin:二進位模式傳輸 (dmp 檔必須)。
  • mput *:上傳本地備份目錄所有檔案。

3. crontab (排程)

# 編輯 oracle 用戶的 crontab
crontab -e

# 內容:
10 23 * * * /export/home/oracle/testbackup.sh   # 每日 23:10 執行備份腳本
30 23 * * * ftp -i <備份主機IP>                 # 每日 23:30 啟動 FTP 傳輸 (讀 .netrc 自動執行)

欄位:分 時 日 月 週 命令。* 表所有值。

完整備份腳本 testbackup.sh

#!/bin/ksh
ORACLE_HOME=/export/home/oracle/815; export ORACLE_HOME
ORACLE_SID=ora815; export ORACLE_SID

# 清空舊備份 (視保留策略調整)
rm -f /export/home/oracle/backup/*

# 日期變數 (MMDD)
rq=$(date +"%m%d")

# 執行完整匯出
$ORACLE_HOME/bin/exp mistest/test \
  file=/export/home/oracle/backup/exp${rq}.dmp \
  log=/export/home/oracle/backup/exp${rq}.log

記得 chmod +x testbackup.sh。

部署檢查清單

項目驗證方式
Export 正常手動跑腳本,檢查 .log 無錯誤,.dmp 大小合理
.netrc 權限ls -l $HOME/.netrc → -rw------- (600)
FTP 自動化手動 ftp -i 觀察是否自動登入、上傳、離開
Crontab 生效crontab -l 確認內容;/var/spool/cron/crontabs/oracle 存在
備份主機磁碟空間預留 ≥ 3 倍單次備份大小,配合輪替刪除腳本
網路連通性主機互 Ping、FTP 埠 (21) 通、防火牆放行

進階增強建議

  • 改用 RMAN:支援增量備份、區塊變更追蹤、壓縮、加密、備份驗證,效能遠優於 exp (exp 10g+ 已除役)。
  • 加密傳輸:改用 sftp/scp (SSH Key 認證) 或 ftp over SSL/TLS。
  • 備份驗證:排程定期在備份端 imp 還原測試 (或 RMAN VALIDATE),確保可用性。
  • 監控告警:腳本回傳碼非 0 → 發送 Email/SMS 給 DBA;日誌關鍵字 EXP-/ORA- 觸發告警。
  • 多備份保留:日期命名 YYYYMMDD,配合 find /backup -mtime +7 -delete 自動清理。

結語

以 Oracle 內建工具 + OS 原生排程/傳輸,零授權成本即可建立可靠的異地自動備份。關鍵在於 .netrc 實現 FTP 全自動化、crontab 定時觸發、完整的驗證與監控閉環。隨業務增長,建議平滑升級至 RMAN + Data Guard 架構,獲得更強的 RPO/RTO 保證。

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