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

實現Oracle數據庫的每天的自動備份

2013-11-13 16:21:38  來源: Oracle 

  相信為數不少的系統管理員每天都在做著同一樣的工作——對數據進行備份一旦哪一天疏忽了而這一天系統又恰恰發生了故障需要進行數據恢復那麼此時就無能為力了假如每天設定一個固定的時間系統自動進行備份那該多好啊!下面筆者結合實踐經驗談一談UNIX環境下Oracle數據庫的自動備份以起到拋磚引玉的作用
  
  我們計劃讓數據庫在晚上點做export導出備份在凌晨點將備份文件拷貝到磁帶上在凌晨點將備份文件拷貝到另一台UNIX機器上為此我們可進行如下操作
  
  導出數據庫
  export命令將數據庫中的數據備份成一個二進制文件它通常有三種模式用戶模式表模式和整個數據庫模式本文擬采用用戶模式備份之前應先建立一個備份目錄以容納備份文件比如可建一個/backup目錄接著我們可在UNIX的Oracle目錄下(也可以是其它目錄)分別建立兩個文件ora—backuptar—backup需要說明的是前一個文件需要對Oracle的參數進行初始化為了方便起見我們不妨將初始化命令放到一個文件中(文件名姑且定為ora—env)再由第一個文件調用它
  
   ora—env文件對Oracle的參數進行初始化其內容如下
  
  ORACLE—HOME=$ORACLE—HOME;export ORACLE—HOME
  
  ORACLE—SID=ora;export ORACLE—SID
  
  ORACLE—TERM=sun;export ORACLE—TERM
  
  LD—LIBRARY—PATH=$ORACLE—HOME/lib;export LD—LIBRARY—PATH
  
  ORA—NLS=$ORACLE—HOME/ocommon/nls/admin/data;export ORA—NLS
  
  PATH=:/usr/ccs/bin:/usr/ucb:$ORACLE—HOME/bin:$PATH;export PATH
  
  DISPLAY=host:;export DISPLAY
  
  NLS—LANG=american—americazhscgb;export NLS—LANG
  
   ora—backup文件對數據庫做export導出導出的文件名可以任意定本文定為字母xx加當天日期即假如當天日期是則導出的文件名為xxdmp以區別於其它日期的備份文件
  
  ora—backup文件內容
  
  /oracle/ora—env
  
  #初始化Oracle數據庫
  
  rq=′date +″%m%d″ ′
  
  #把當天日期賦予變量rq
  
  rm /backup/
  
  # 清空 /backup目錄
  
  exp test/test file=/backup/xx$rqdmp log=/backup/xx$rqlog
  
  本命令用於在$提示符下導出test用戶的數據(其口令亦為test)導出文件及日志均放在/backup目錄下
  
  磁帶備份
  tar—backup文件將用export命令導出的數據文件拷貝到磁帶上
  
  tar—backup文件內容
  
  tar rvf /dev/rmt/n/backup/
  
  本命令可將/backup目錄下當天產生的文件備份到磁帶上本文件中tar命令使用了三個參數其中r選項表示向磁帶上拷入文件而不破壞磁帶原來內容v選項表示在拷貝過程中顯示文件信息f選項後面加上磁帶設備名指定文件向何處拷貝n選項表示磁帶機不倒帶/dev/rmt/表示UNIX主機第一個磁帶驅動器同理/dev/rmt/則表示UNIX主機第二個磁帶驅動器依此類推
  
  ora—envora—backuptar—backup文件編寫完成後分別使用下述命令
  
  chmod ora—env
  
  chmod ora—backup
  
  chmod tar—backup
  
  這樣三個文件就都變成了可執行文件
  
  異地備份
  我們知道通常可用FTP命令在兩台主機間傳輸數據但一般是通過交互方式實現的即需要手工輸入目標主機的IP地址用戶名口令等顯然這不符合自動備份的要求所幸的是我們可以通過編寫一rc的文件來達到目標這一文件必須命名rc且必須存放在啟動FTP命令的機器上的用戶注冊目錄中該文件的權限應禁止組內或其它用戶進行讀訪問這樣當用戶使用FTP命令的時候系統將會在該用戶的注冊目錄中尋rc文件如果能夠尋找到將會首先執行該文件否則會交互式地提示用戶輸入用戶名口令等
  
  在使用FTP命令之前應先在另一台作備份用的UNIX機器上建一目錄以容納備份文件本文建的目錄是/pub 需要指出的是為了加快備份速度兩台主機之間的傳輸速率應盡可能的高最好位於同一局域網上
  
 rc文件內容如下
  
  machine host
  
  # host為作備份用的主機名
  
  login oracle
  
  #oracle為備份主機上的一個用戶
  
  password oracle
  
  #oracle用戶的口令為oracle
  
  macdef init
  
  #定義一個名為init的宏它將在自動注冊進程的最後被執行
  
  bin
  
  #文件的傳輸方式設為二進制
  
  lcd /backup
  
  # 進入本地工作目錄/backup
  
  cd /pub
  
  # 進入備份主機目錄/pub
  
  mput 
  
  # 將/backup目錄下的所有文件傳輸至備份主機
  
  bye
  
  #退出FTP會話進程
  
 rc文件編寫完成後使用下述命令
  
  chmod rc
  
  這樣rc文件就只能被該用戶所訪問
  
  啟動備份進程
  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命令來查看
  
  Oracle文件內容
  
      /oracle/ora—backup
  
  # 每天點對數據庫執行備份
  
      /oracle/tar—backup
  
  # 每天點將文件備份到磁帶上
  
      ftp -i host
  
  # 每天點將文件備份到另一台主機上
  
  經過以上的操作後系統每天晚上將自動產生一個備份並且自動將備份文件分別拷貝到磁帶上和另一台主機上系統管理員需要做的是隔幾天換一盤磁帶(更換磁帶的周期取決於備份文件的大小和磁帶的容量)和清理備份目錄這樣他們就可以從備份數據的繁瑣中解脫出來去做其它更有意義的工作而數據庫既實現了磁帶備份又實現了異地備份相應的安全性也大大提高了
From:http://tw.wingwit.com/Article/program/Oracle/201311/18204.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.