建立三層次自動備份機制:
EXPORT 邏輯備份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
./Oracle/ora-env
# 初始化 Oracle 環境
rq=`date +"%m%d"`
# 取得當天日期 (MMDD)
rm /backup/*
# 清空備份目錄
exp test/test file=/backup/xx$rq.dmp log=/backup/xx$rq.log
# 導出 test 用戶,檔名含日期如 xx1210.dmp
tar rvf /dev/rmt/0n /backup/*
參數說明: r 追加不覆寫、v 顯示進度、f 指定裝置、n 不倒帶。/dev/rmt/0 為第一台磁帶機。
machine host2
login oracle
password oracle
macdef init
bin
lcd /backup
cd /pub
mput *
bye
設定權限 chmod 600 .netrc,確保僅擁有者可讀。FTP 執行時會自動讀取此檔完成無人值守傳輸。
以 oracle 用戶執行 crontab -e 編輯:
0 23 * * * /Oracle/ora-backup
# 每日 23:00 備份資料庫
0 2 * * * /Oracle/tar-backup
# 每日 02:00 磁帶備份
0 4 * * * ftp -i host2
# 每日 04:00 異地備份
/backup 目錄舊檔