環境:一主一備,雙 Sun Solaris。備份方式:Oracle EXP 完整資料庫模式(Full)+ 完全備份。自動化鏈路:Shell 腳本產生 DMP → .netrc 自動 FTP → Crontab 定時觸發。
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(表級)。置於 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 * 上傳備份目錄所有檔案。以 oracle 用戶執行 crontab -e:
10 23 * * * /export/home/oracle/testbackup
30 23 * * * ftp -i 192.168.1.100
testbackup(含環境變數初始化、清空舊備份、exp 導出)。-i 關閉互動提示,自動讀取 .netrc 完成傳輸。#!/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,防止密碼洩露。IMP 還原,驗證備份可用性。