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

Oracle 異地自動備份方案:Export + FTP + Crontab 實戰全記錄

     編輯:Oracle 資料庫相關知識

架構概覽

環境:一主一備,雙 Sun Solaris。備份方式:Oracle EXP 完整資料庫模式(Full)+ 完全備份。自動化鏈路:Shell 腳本產生 DMP → .netrc 自動 FTP → Crontab 定時觸發。

關鍵命令詳解

1. exp 參數

exp userid=mistest/test file=/export/home/oracle/backup/exp$(date +%m%d).dmp log=.../exp$(date +%m%d).log
  • userid:必須為第一參數,格式 user/pass。
  • file:備份檔路徑,檔名內嵌日期變數 $(date +%m%d) 區分每日備份。
  • 模式:FULL=Y(完整庫)、OWNER(用戶級)、TABLES(表級)。

2. FTP 自動化:.netrc 檔案

置於 Oracle 用戶家目錄 /export/home/oracle/.netrc,權限 600。

machine 192.168.1.100 login oraclebk password testbk2
macdef init
binary
lcd /export/home/oracle/backup
cd /data/oradata/backup
mput *
bye
  • macdef init 定義自動執行巨集,FTP 連線成功後自動執行後續指令。
  • binary 確保二進位傳輸不損壞 DMP。
  • mput * 上傳備份目錄所有檔案。

3. Crontab 定時任務

以 oracle 用戶執行 crontab -e:

10 23 * * * /export/home/oracle/testbackup
30 23 * * * ftp -i 192.168.1.100
  • 每日 23:10 執行備份腳本 testbackup(含環境變數初始化、清空舊備份、exp 導出)。
  • 每日 23:30 啟動 FTP,-i 關閉互動提示,自動讀取 .netrc 完成傳輸。

完整備份腳本 testbackup 範例

#!/bin/ksh
ORACLE_HOME=/export/home/oracle/815; export ORACLE_HOME
ORACLE_SID=ora815; export ORACLE_SID
rm -f /export/home/oracle/backup/*
rq=$(date +%m%d)
/export/home/oracle/815/bin/exp mistest/test file=/export/home/oracle/backup/exp${rq}.dmp log=/export/home/oracle/backup/exp${rq}.log

授權:chmod +x testbackup。

安全與維運提醒

  • .netrc 必須 chmod 600,防止密碼洩露。
  • 備份目錄定期清理舊 DMP,避免磁碟爆滿。
  • 異地備份機器需配置足夠存儲與網路頻寬。
  • 定期演練 IMP 還原,驗證備份可用性。
  • 生產環境建議改用 RMAN 增量備份 + Data Guard,本方案適用中小型、非 7×24 系統。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved