熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

Oracle自動異地遠程數據備份研究

2013-11-13 15:38:18  來源: Oracle 

  當前隨著行業改革的不斷深入數據逐步向地市公司集中業務經營政務管理對於信息系統和核心數據的依賴程度也越來越高如何保障核心數據的安全就顯得尤為重要相信很多單位均已實現了本地的磁盤與磁帶的雙備份很好的保障了對核心數據的安全管理

  但本地備份一般將數據保留在機房內當本地機房整體物理環境遭到破壞如發生火災地震等意外事件時數據有可能也會損傷美國事件讓許多公司的商務資料在瞬間毀於一旦足以證明遠程數據備份的重要性但是建立一個完備的支持實時數據恢復功能的遠程備份系統的投入是非常昂貴的本文結合工作實際充分利用縣公司機房中現有的存儲條件借助oracle自動備份和ftp自動傳輸技術實現了核心Oracle數據庫的自動遠程異地備份當本地機房物理環境遭到破壞時能最大限度的保護好我們的數據

  設計思路

  當前支撐紹興煙草營銷呼叫專賣財務OA等核心系統運行的主要是TradeCtrQueryCtrJTCWOA四個Oracle數據庫運行在兩台HP小型機上每個數據庫的備份大約為G左右考慮到今後兩年內的數據增長可能會達到G左右紹興煙草下屬四個縣公司每個公司均具備充分的存儲空間網絡實際可利用帶寬均為Mbit/s左右完成一個備份文件的數據傳輸大約需要個小時考慮到網絡帶寬傳輸時間及工作時間對業務經營的影響我們將數據備份及遠程傳輸放在星期六進行每個單位對應一個數據庫進行遠程備份備份周期為每周一次每周六下午開始備份中主要用到數據庫導出ftp自動傳輸HP UNIX 定時作業等技術下面以財務數據庫JTCW為例來說明具體實現方式

  導出數據庫

  export命令將數據庫中的數據備份成一個二進制文件它通常有三種模式用戶模式表模式和整個數據庫模式本文擬采用用戶模式備份之前應先建立一個備份目錄以在本機容納備份文件比如可建一個/localbak目錄我們將JTCW數據庫在用戶模式下備份備份保留周期為一天具體腳本如下保留在exp_JTCWsh文件中

  export EXP_HOME=/localbak  #設置環境變量EXP_HOME

  export ORACLE_SID=JTCW#設置環境變量ORACLE_SID

  exp system/password owner=hsa file=$EXP_HOME/JTCW$(LC_ALL=C date +%y%m%d)dmp log=$EXP_HOME/JTCW$(LC_ALL=C date +%y%m%d)log statistics=none#備份數據以日期方式命名

  find /oradata/cwdata/backup type f mtime  exec rm {} \;#保留周期為三天

  自動數據傳輸

  我們知道通常可用FTP命令在兩台主機間傳輸數據但一般是通過交互方式實現的即需要手工輸入目標主機的IP地址用戶名口令等顯然這不符合自動備份的要求所幸的是在HP UNIX平台下我們可以通過編寫一rc的文件來達到目標這一文件必須命名rc且必須存放在啟動FTP命令的機器上的用戶注冊目錄中該文件的權限應禁止組內或其它用戶進行讀訪問這樣當用戶使用FTP命令的時候系統將會在該用戶的注冊目錄中尋rc文件如果能夠尋找到將會首先執行該文件否則會交互式地提示用戶輸入用戶名口令等

  在使用FTP命令之前應先在對應縣公司一台作備份用的機器上開啟ftp服務並建立上傳文件目錄以容納備份文件本文建立的目錄是/remotebak為了加快備份速度rc文件內容如下

  machine host  # host為作備份用的主機名

  login ftpuser  # ftpuser為遠程備份主機上的一個用戶

  password ftpuser  # ftpuser用戶的口令為ftpuser

  macdef init  #定義一個名為init的宏它將在自動注冊進程的最後被執行

  bin  #文件的傳輸方式設為二進制

  lcd /localbak  #進入本地工作目錄/localbak

  cd /remotebak  #進入遠程備份主機目錄/remotebak

  mput *# 將/localbak目錄下的所有文件傳輸至備份主機

  bye #退出FTP會話進程

  rc文件編寫完成後使用下述命令

  chmod rc

  這樣rc文件就只能被該用戶所訪問

  啟動備份進程

  HP UNIX平台下Cron是一個永久進程它由/etc/rclocal啟動執行Cron檢查/var/spool/cron/crontabs/目錄中的文件找到所要執行的任務和執行任務的時間

  Crontab文件的每一行由六個域(minuteshoursday of monthmonthday of week command)組成域之間用空格或Tab分開其中

  minutes分鐘域值的范圍是

  hours小時域值的范圍是

  day of month日期值的范圍是

  month月份值的范圍是

  day of week星期值的范圍是星期日值為

  command所要運行的命令

  如果一個域是空表明命令可以在該域所有可能的取值范圍內執行

  如果一個域是由連字符隔開的兩個數字表明命令可以在兩個數字之間的范圍內執行(包括兩個數字本身)

  如果一個域是由逗號隔開的一系列值組成的表明命令可以在這些值組成的范圍內執行 如果日期域和星期域都有值則這兩個域都有效

  現在我們編寫一個文件用以啟動自動備份進程值得注意的是該文件只能在Oracle用戶名下用crontab e 命令來編輯否則將不會被定時執行文件名定為Oracle文件將放在/var/spool/cron/crontabs 目錄下編輯完成後可以在Oracle的$提示符下用crontab l命令來查看

  cron表中的內容如下

    * *  /oracle/product//DBA/script/exp_JTCWsh

  # 每周六上午點對數據庫執行備份

    * *  ftp i host

  # 每周六下午點啟動遠程傳輸將文件備份到另一台主機上

  經過以上的操作後系統每周六開始產生一個本地備份並在周六下午啟動遠程傳輸自動將備份文件分別拷貝到對應縣公司的遠程主機上其余三個數據庫的配置也類似從而實現了核心數據庫的自動遠程異地備份系統管理員需要做的工作是定期清理遠程備份主機的備份目錄該系統在浙江紹興煙草分公司運行近個月目前系統整體狀況良好極大提高了紹興煙草的數據安全性其實用性穩定性安全性得到充分的驗證


From:http://tw.wingwit.com/Article/program/Oracle/201311/17056.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.