IT貓撲網:您身邊最放心的安全下載站! 最新更新|軟件分類|軟件專題|手機版|論壇轉貼|軟件發(fā)布

您當前所在位置:首頁數據庫Oracle → 自動備份Oracle數據庫

自動備份Oracle數據庫

時間:2015/6/28來源:IT貓撲網作者:網管聯(lián)盟我要評論(0)

  相信為數不少的系統(tǒng)管理員每天都在做著同一樣的工作--對數據進行備份。一旦哪一天疏忽了,而這一天系統(tǒng)又恰恰發(fā)生了故障,需要進行數據恢復,那么此時就無能為力了。假如每天設定一個固定的時間,系統(tǒng)自動進行備份,那該多好!下面筆者結合實踐經驗,談一談UNIX環(huán)境下oracle數據庫的自動備份,以起到拋磚引玉的作用。

  我們計劃讓數據庫在晚上23點做export導出備份,在凌晨2點將備份文件拷貝到磁帶上,在凌晨4點將備份文件拷貝到另一臺UNIX機器上,為此我們可進行如下操作:

  一、導出數據庫

  export命令將數據庫中的數據備份成一個二進制文件,它通常有三種模式:用戶模式、表模式和整個數據庫模式。本文擬采用用戶模式,備份之前,應先建立一個備份目錄,以容納備份文件,比如可建一個/backup目錄。接著我們可在UNIX的Oracle目錄下(也可以是其它目錄)分別建立兩個文件ora-backup,tar-backup。需要說明的是,前一個文件需要對Oracle的參數進行初始化,為了方便起見,我們不妨將初始化命令放到一個文件中(文件名姑且定為ora-env),再由第一個文件調用它。

  1. ora-env文件對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-NLS
  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文件對數據庫做export導出,導出的文件名可以任意定,本文定為字母"xx"加當天日期,即假如當天日期是12月10號,則導出的文件名為"xx1210.dmp",以區(qū)別于其它日期的備份文件。

  ora-backup文件內容:
  ./oracle/ora-env
 。3跏蓟疧racle數據庫
  rq=′date +″%m%d″ ′
  #把當天日期賦予變量rq
  rm /backup/?
 。 清空 /backup目錄
  exp test/test file=/backup/xx$rq.dmp log=/backup/xx$rq.log

  本命令用于在$提示符下,導出test用戶的數據(其口令亦為test),導出文件及日志均放在/backup目錄下。

  二、磁帶備份

  tar-backup文件將用export命令導出的數據文件拷貝到磁帶上。
  tar-backup文件內容:
  tar rvf /dev/rmt/0n/backup/?

  本命令可將/backup目錄下當天產生的文件備份到磁帶上。本文件中,tar命令使用了三個參數,其中r選項表示向磁帶上拷入文件而不破壞磁帶原來內容,v選項表示在拷貝過程中顯示文件信息,f選項后面加上磁帶設備名,指定文件向何處拷貝,n選項表示磁帶機不倒帶。/dev/rmt/0表示UNIX主機第一個磁帶驅動器,同理,/dev/rmt/1則表示UNIX主機第二個磁帶驅動器,依此類推。

  ora-env、ora-backup、tar-backup文件編寫完成后,分別使用下述命令:

  chmod 755 ora-env
  chmod 755 ora-backup
  chmod 755 tar-backup

  這樣,三個文件就都變成了可執(zhí)行文件。

  三、異地備份

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

  在使用FTP命令之前,應先在另一臺作備份用的UNIX機器上建一目錄,以容納備份文件,本文建的目錄是/pub 。需要指出的是,為了加快備份速度,兩臺主機之間的傳輸速率應盡可能的高,最好位于同一局域網上。

  .netrc文件內容如下:

  machine host2  
 。 host2為作備份用的主機名
  login oracle  
 。racle為備份主機上的一個用戶
  password oracle  
  #oracle用戶的口令為oracle
  macdef init    
 。6x一個名為init的宏,它將在自動注冊進程的最后被執(zhí)行
  bin      
  #文件的傳輸方式設為二進制
  lcd /backup  
 。 進入本地工作目錄/backup
  cd /pub    
 。 進入備份主機目錄/pub
  mput ?    
 。 將/backup目錄下的所有文件傳輸至備份主機
  bye
  #退出FTP會話進程
  .netrc文件編寫完成后,使用下述命令:
  chmod 600 .netrc

  這樣,.netrc文件就只能被該用戶所訪問。

  四、啟動備份進程

  Cron是一個永久進程,它由/etc/rc.local啟動執(zhí)行。Cron檢查/var/spool/cron/crontabs/?目錄中的文件,找到所要執(zhí)行的任務和執(zhí)行任務的時間。

  Crontab文件的每一行由六個域(minutes、hours、day of month、month、day of week、 command)組成,域之間用空格或Tab分開,其中:

   minutes:分鐘域,值的范圍是0到59
   hours:小時域,值的范圍是0到23
   day of month:日期,值的范圍是1到31
   month:月份,值的范圍是1到12
   day of week:星期,值的范圍是0到6,星期日值為0
   command:所要運行的命令

  如果一個域是?,表明命令可以在該域所有可能的取值范圍內執(zhí)行。

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

  如果一個域是由逗號隔開的一系列值組成的,表明命令可以在這些值組成的范圍內執(zhí)行。

  如果日期域和星期域都有值,則這兩個域都有效。

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

  Oracle文件內容:
  0 23 ? ? ? /oracle/ora-backup
  # 每天23點對數據庫執(zhí)行備份
  0 2 ? ? ? /oracle/tar-backup
 。 每天2點將文件備份到磁帶上
  0 4 ? ? ? ftp -i host2  
 。 每天4點將文件備份到另一臺主機上

  經過以上的操作后,系統(tǒng)每天晚上將自動產生一個備份,并且自動將備份文件分別拷貝到磁帶上和另一臺主機上。系統(tǒng)管理員需要做的是,隔幾天換一盤磁帶(更換磁帶的周期取決于備份文件的大小和磁帶的容量)和清理備份目錄。這樣,他們就可以從備份數據的繁瑣中解脫出來,去做其它更有意義的工作。而數據庫既實現(xiàn)了磁帶備份,又實現(xiàn)了異地備份,相應的安全性也大大提高了。

關鍵詞標簽:數據庫,備份,自動,文件

相關閱讀 MySQL數據庫啟動失敗1067進程意外終止的解決辦法總結誤刪Oracle數據庫實例的控制文件SQL數據庫掛馬解決方案Asp.net 備份和還原SQL Server及壓縮Access數據庫關于Mysql數據庫導致CPU很高的問題解決數據庫常用簡單SQL語句小結

文章評論
發(fā)表評論

熱門文章 Oracle中使用alter table來增加,刪除,修改列Oracle中使用alter table來增加,刪除,修改列oracle中使用SQL語句修改字段類型-oracle修oracle中使用SQL語句修改字段類型-oracle修使用低權限Oracle數據庫賬戶得到管理員權限使用低權限Oracle數據庫賬戶得到管理員權限Oracle對user的訪問控制Oracle對user的訪問控制

人氣排行 ORACLE SQL 判斷字符串是否為數字的語句Oracle中使用alter table來增加,刪除,修改列的語法ORACLE和SQL語法區(qū)別歸納(1)oracle grant 授權語句如何加速Oracle大批量數據處理Oracle刪除表的幾種方法ORACLE修改IP地址后如何能夠使用Oracle 10g創(chuàng)建表空間和用戶并指定權限