目標:每日零人工介入完成三層備份——
EXP 邏輯備份至磁碟TAR 封存至磁帶FTP 異地傳輸至備援主機#!/bin/ksh ORACLE_HOME=$ORACLE_HOME; export ORACLE_HOME ORACLE_SID=ora73; export ORACLE_SID ORACLE_TERM=sun; export ORACLE_TERM LD_LIBRARY_PATH=$ORACLE_HOME/lib; export LD_LIBRARY_PATH ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data; export ORA_NLS33 PATH=.:/usr/ccs/bin:/usr/ucb:$ORACLE_HOME/bin:$PATH; export PATH DISPLAY=host1:0; export DISPLAY NLS_LANG=american_america.zhs16cgb231280; export NLS_LANG
#!/bin/ksh
. /oracle/ora-env
rq=`date +%m%d` # MMDD 格式日期
rm -rf /backup/* # 清空備份目錄
exp test/test file=/backup/xx${rq}.dmp log=/backup/xx${rq}.log
test schemaxx1210.dmp#!/bin/ksh tar rvf /dev/rmt/0n /backup/
r:附加不覆蓋;v:顯示進度;f:指定裝置;n:不倒帶/dev/rmt/0 第一台磁帶機,/dev/rmt/1 第二台...建立 ~/.netrc (權限 600):
machine host2 login oracle password oracle macdef init bin lcd /backup cd /pub mput * bye
macdef init:FTP 連線成功後自動執行的巨集mput *:上傳 /backup 所有檔案/pub 目錄,雙方最好同一 LAN 確保傳輸速度# 編輯:crontab -e (必須在 Oracle 用戶下) # 檢視:crontab -l 0 23 * * * /oracle/ora-backup # 23:00 EXP 備份 0 2 * * * /oracle/tar-backup # 02:00 磁帶備份 0 4 * * * ftp -i host2 # 04:00 異地傳輸
* 代表所有值;1-5 範圍;1,3,5 列表/backup 與備援主機 /pub 過期檔案/var/cron/log 或 syslog)lsdev -Cc tape (AIX) / mt -f /dev/rmt/0 status此腳本方案適用 Oracle 7/8i 早期環境。現代 (9i+) 強烈建議遷移至:
自動化備份的核心不是腳本本身,而是**「排程可靠、分層冗余、定期驗證、演練恢復」**。這套 Crontab+EXP+TAR+FTP 組合雖屬經典,但完整體現了備份自動化的四大鐵律,值得每位 DBA 內化為肌肉記憶。