| 時間 | 任務 | 工具/腳本 | 目的 |
|---|---|---|---|
| 23:00 | 邏輯導出 | exp + ora_backup.sh | 每日增量/全量導出至磁碟 |
| 02:00 | 磁帶歸檔 | tar + tar_backup.sh | 離線媒體保存,防磁碟損壞 |
| 04:00 | 異地同步 | FTP + .netrc 自動登入 | 跨機房容災,防單點故障 |
ora_env.sh#!/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
ora_backup.sh#!/bin/ksh
. /Oracle/ora_env.sh
# 日期變數 MMDD
RQ=`date +%m%d`
# 清空舊備份目錄
rm -f /backup/*
# 執行導出(用戶模式)
exp test/test file=/backup/xx${RQ}.dmp log=/backup/xx${RQ}.log
tar_backup.sh#!/bin/ksh
# r=append, v=verbose, f=device, n=no-rewind
tar rvf /dev/rmt/0n /backup/
/dev/rmt/0 為第一台磁帶機,n 尾碼表示不倒帶,利於多次追加。
.netrcmachine host2
login oracle
password oracle
macdef init
bin
lcd /backup
cd /pub
mput *
bye
chmod 600 .netrcinit 巨集/pub 目錄,建議同一 LAN 內千兆網路# 以 oracle 用戶執行 crontab -e
0 23 * * * /Oracle/ora_backup.sh
0 2 * * * /Oracle/tar_backup.sh
0 4 * * * ftp -i host2
/backup 歷史檔案,保留近 7 天imp 還原測試,記錄 RTO/RPO三層備份體系(磁碟即時、磁帶歸檔、異地容災)配合 Crontab 全自動化,將 DBA 從繁瑣手工操作釋放。核心在於腳本冪等性、權限最小化、驗證常態化三大工程化原則。