首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

UNIX 環境下 Oracle 資料庫自動化備份全攻略:Export 導出、磁帶歸檔、異地 FTP 傳輸與 Crontab 排程

     編輯:Oracle 資料庫基礎

背景與目標

手動備份繁瑕且易疏漏,本文提供一套完整的 Shell 腳本方案,實現 Oracle 資料庫在 UNIX 系統上的全自動備份流程:每晚 23:00 執行 Export 導出,凌晨 02:00 寫入磁帶,凌晨 04:00 透過 FTP 傳輸至異地備份主機。

一、資料庫 Export 導出腳本

1. 環境變數初始化腳本 (ora_env)

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

2. 備份主腳本 (ora_backup)

#!/bin/sh
. $ORACLE_HOME/ora_env          # 載入環境變數
rq=`date +%m%d`                 # 取得 MMDD 格式日期
rm -rf /backup/*                # 清空備份目錄
exp test/test file=/backup/xx${rq}.dmp log=/backup/xx${rq}.log

說明:以用戶模式導出 test 用戶,檔名含日期區分,日誌同目錄。

二、磁帶備份腳本 (tar_backup)

#!/bin/sh
tar rvf /dev/rmt/0n /backup/

參數解析:r追加不覆蓋、v顯示進度、f指定裝置、n不倒帶。/dev/rmt/0為第一台磁帶機。

三、異地 FTP 傳輸配置

1. 建立 .netrc 自動登入檔

machine host2
login oracle
password oracle
macdef init
bin
lcd /backup
cd /pub
mput *
bye

權限設定:chmod 600 .netrc,僅擁有者可讀寫,確保密碼安全。

2. 前置條件

  • 遠端主機建立 /pub 目錄接收檔案。
  • 雙主機建議同處一區域網路,確保傳輸速度。

四、Crontab 排程啟動

以 Oracle 用戶編輯 crontab -e,寫入:

0 23 * * * /oracle/ora_backup      # 每日 23:00 導出
0 2  * * * /oracle/tar_backup      # 每日 02:00 寫磁帶
0 4  * * * ftp -i host2            # 每日 04:00 異地傳輸

確保 job_queue_processes 參數非零,否則排程不會自動執行。

五、維護建議

  • 定期更換磁帶(視備份量與容量而定)。
  • 定期清理 /backup 目錄舊檔案。
  • 監控 sys.dba_jobs 的 failures 欄位,失敗 16 次或間隔超過設定值會標記為中斷,需手工排查後用 dbms_job.run(job_no) 重跑。

部署完成後,系統將每日自動完成導出、磁帶歸檔、異地傳輸三重保障,DBA 僅需定期換帶與清理,大幅降低運維負擔並提升資料安全等級。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved