身為系統管理員,每日手動執行資料庫備份不僅繁瑣,更隱藏著人為疏失的風險。一旦在系統故障發生前恰好遺漏備份,將導致資料無法恢復,造成嚴重損失。本文將分享在 UNIX 環境下實現 Oracle 資料庫全自動備份的完整方案,涵蓋匯出備份、磁帶歸檔與異地容災三大層面,助您構建零人工介入的備份體系。
本方案採用分時段、多層次的備份架構:
建立專用環境設定檔,集中管理 Oracle 運作參數:
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_NLS32=$ORACLE_HOME/ocommon/nls/admin/data; export ORA_NLS32
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
採用用戶模式匯出,檔案命名包含日期標識(如 xx1210.dmp),便於識別與管理:
./oracle/ora-env # 載入環境變數
rq=`date +\"%m%d\"` # 取得 MMDD 格式日期
rm /backup/* # 清空備份目錄
exp test/test file=/backup/xx$rq.dmp log=/backup/xx$rq.log
關鍵點說明: 使用 test/test 作為示範帳號密碼,實際部署請替換為具備 DBA 權限的專用備份帳號;建議搭配 COMPRESS=Y 參數壓縮區段,DIRECT=Y 參數提升效能。
tar rvf /dev/rmt/0n /backup/*
參數解析:
r:附加模式寫入,不覆蓋既有磁帶資料v:顯示詳細傳輸過程f:指定磁帶裝置路徑(/dev/rmt/0 為第一台磁帶機)n:操作完成後不倒帶,利於後續續寫放置於執行 FTP 的用戶家目錄,權限必須設為 600(僅擁有者可讀寫):
machine host2 # 目標主機名稱
login oracle # 遠端登入帳號
password oracle # 遠端登入密碼
macdef init # 定義自動執行巨集
binary # 二進制傳輸模式
lcd /backup # 切換本地備份目錄
cd /pub # 切換遠端接收目錄
mput * # 上傳所有備份檔案
bye # 結束 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 異地同步
透過上述三層備份架構(本地邏輯備份 → 磁帶離線歸檔 → 異地遠端同步),系統管理員可從繁瑣的手動操作中解脫,專注於更高價值的系統優化與架構規劃工作。此方案不僅實現了備份自動化,更通過「3-2-1 備份原則」(3 份副本、2 種媒介、1 異地)顯著提升資料安全等級。