oracle linux rman 指令碼

zhengbao_jun發表於2009-11-05

針對PRD系統的安全性及資料的可靠性,做出了一下的備份策略和指令碼。

環境:
作業系統:linux Enterprise SERVER 3
資料庫:  ORACLE 9I

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

1)系統備份(file level)
   對於整個檔案系統的備份,它的初衷就是當系統檔案丟失、伺服器硬體的物理損壞造成的系統無法正常執行時,採用
通過系統的備份檔案來快速恢復損壞的系統,使作業系統在最短的時間修復。根據上面的分析,系統的備份可以在系統
硬體或軟體發生改變時進行備份,無須定製備份計劃。也可以定期手工備份(如3個月)。

備份指令碼檔名:system_bck.sh
指令碼內容如下:
#!/bin/sh
cd /
tar cvf rman:/dev/st0 . --ignore-failed-read

說明:a.rman 是遠端的LINUX操作平臺的備份機,這樣可以把資料直接存至異地。

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

2)資料庫備份(database level -- exp/imp)
   對於資料庫的備份有很多種,比如:資料庫的線上熱備份、離線的冷備份,ORACLE exp/imp的工具備份,Rman備份和
第三方的備份軟體的備份。在對PRD系統進行分析後,決定首先採取exp/imp對ORACLE 資料庫進行計劃性的邏輯備份,這樣
可以節省本地的硬碟空間,也是ORACLE的一種有效的備份工具。

備份指令碼檔名:exp_full.sh
指令碼內容如下:
#!/bin/tcsh
source /usr/local/ora9i/.cshrc
setenv rq `date +%Y%m%d`
rm -fr /Oradata/backup/exp_plan/exp_full_*
exp userid=system/manager full=Y file='/Oradata/backup/exp_plan/exp_full_$rq.dmp' log='/Oradata/backup/exp_plan/exp_full_$rq.log'

說明:a.以上是做資料庫的完全資料庫匯出,檔名稱為變數 rq 的值。(如exp_full_20050311)
     b.這個邏輯匯出的檔案存放在本地伺服器,並且保留一份,也就是當天有效。因為本地磁碟採用的是RAID5陣列,所以
       沒有把這個匯出檔案在另存到異地。(由於RAID5的可靠性,異地轉存的混亂,所以沒有轉存到異地)。
     c.用crontab進行定期的執行:23 00 * * * /Oradata/backup/exp_plan/exp_full.sh

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

3)資料庫離線冷備份
  離線冷備份的備份方式是在資料庫正常關機的條件下,對資料庫的資料檔案,重做日誌檔案,控制檔案,歸檔檔案,
和伺服器引數檔案進行備份,這樣可以保留某一時間段資料的完事性,2)可以依託於3)的備份結構。

備份指令碼檔名:cool_full_bck.sh
指令碼內容如下:
#!/bin/sh
#
#本地備份目錄為
#/Oradata/backup/cool_bck/sda1  
#/Oradata/backup/cool_bck/sda2
#
export ORACLE_HOME=/usr/local/ora9i/OraHome
$ORACLE_HOME/bin/sqlplus "/as sysdba" <shutdown immediate
host "rm -fr /Oradata/backup/cool_bck/*"
host "mkdir -p /Oradata/backup/cool_bck/sda1"
host "mkdir -p /Oradata/backup/cool_bck/sda2"
host "cp -fr /Oradata/FIT_DB/FIT/* /Oradata/backup/cool_bck/sda2"
host "cp -fr /usr/local/ora9i/Oradata/FIT_DB/FIT/* /Oradata/backup/cool_bck/sda1"
host "cp -fr $ORACLE_HOME/dbs/*.ora /Oradata/backup/cool_bck"
startup
<

備份指令碼檔名:cool_tar_remote.sh
指令碼內容如下:
#!/bin/sh
#遠端備份機器名為 rman
#此指令碼為以追加方式寫入磁帶機
cd /Oradata/backup/cool_bck
tar rcvf rman:/dev/st0 .

備份指令碼檔名:cool_tar_remote.sh
指令碼內容如下:
#!/bin/sh
#遠端備份機器名為 rman
#此指令碼以覆蓋方式寫入磁帶機
cd /Oradata/backup/cool_bck
tar cvf rman:/dev/st0 .

說明: a.00 21 * * 0 /Oradata/backup/exp_plan/cool_full_bck.sh         #每週做資料庫的離線全備份
     b.30 23 * * 0 /Oradata/backup/exp_plan/cool_tar_remote.sh       #將本地的資料備份到遠端磁帶機上
     c.00 03 28 * * /Oradata/backup/exp_plan/cool_tar_remote_ow.sh   #每月的28日對磁帶機進行覆蓋備份


++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

附加方式:


資料庫備份(database level -- Rman)
  採用Rman做異地的備份,這樣也是對2)的一個補充,在異地伺服器安裝RMAN catalog,磁帶機,建立指令碼;並對指令碼定
期的執行。這樣本地有exp/imp的匯出檔案和RAID5的安全性,遠端有Rman的磁帶備份,可以說是對資料的雙重保護。在資料
量增大時,可以考慮第三方備份軟體,如:veritas netbackup, Ca ,legato等備份軟體。

備份指令碼檔名:ora_bck
指令碼內容如下:
{configure default device type to "sbt_tape" parallelism 3;
configure exclude for tablespace temp;
allocate ch01 device type "sbt_tape";
allocate ch02 device type "sbt_tape";
allocate ch03 device type "sbt_tape";
backup database;
backup current controlfile;
backup archivelog all;
}

說明 :a.這備份方式可以做為與3)方式的可選項,見議備份方式不要太多,以免造成混亂。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/235507/viewspace-618212/,如需轉載,請註明出處,否則將追究法律責任。

相關文章