Rman-ORACLE資料庫RMAN實現自動備份

tangyunoracle發表於2012-04-26
1.備份方式:
在M模組資料庫各節點使用nfs方式掛載10.30.1.12的/billbak4/MDSPDBbak目錄,作為備份儲存空間,可以滿足RAC架構資料庫備份的需求。
2.配置NFS伺服器(以下操作需要有root 使用者許可權):
2.1使用以下命令檢查NFS服務是否啟動:
# service nfs status
# chkconfig –list nfs
# service nfs restart
2.2.配置檔案中指定共享目錄(生產環境中要對應修改為12個節點的IP)
# vi /etc/exports
/orabk 172.30.4.26(rw,async,no_root_squash)
/orabk 172.30.4.27(rw,async,no_root_squash)
2.3生效新的exports 內容。
# exportfs –rv
3.Oracle 伺服器上掛載nfs共享目錄(以下操作在M模組的每個節點上都要執行)
3.1.建立本地備份目錄,如 /rmanbk。
3.2使用mount命令進行掛載。
# mount -t nfs -o rw,bg,hard,nointr,rsize=32768,wsize=32768,tcp,actimeo=0,
vers=3,timeo=600 172.30.1.78:/u01/rmanbk /rmanbk
3.3修改備份目錄的許可權:
#chown oracle:oinstall /rmanbk
#chmod 755 /rmanbk
3.4修改fstab檔案,設定NFS自動掛載
# vi /etc/fstab
172.30.1.78:/u01/rmanbk /rmanbk nfs rw,hard,nointr,tcp,noac,vers=3,timeo=600,rsize=32768,wsize=32768 0 0[@more@]

ORACLE資料庫RMAN實現自動備份:
1.備份方式:
在M模組資料庫各節點使用nfs方式掛載10.30.1.12的/billbak4/MDSPDBbak目錄,作為備份儲存空間,可以滿足RAC架構資料庫備份的需求。
2.配置NFS伺服器(以下操作需要有root 使用者許可權):
2.1使用以下命令檢查NFS服務是否啟動:
# service nfs status
# chkconfig –list nfs
# service nfs restart
2.2.配置檔案中指定共享目錄(生產環境中要對應修改為12個節點的IP)
# vi /etc/exports
/orabk 172.30.4.26(rw,async,no_root_squash)
/orabk 172.30.4.27(rw,async,no_root_squash)
2.3生效新的exports 內容。
# exportfs –rv
3.Oracle 伺服器上掛載nfs共享目錄(以下操作在M模組的每個節點上都要執行)
3.1.建立本地備份目錄,如 /rmanbk。
3.2使用mount命令進行掛載。
# mount -t nfs -o rw,bg,hard,nointr,rsize=32768,wsize=32768,tcp,actimeo=0,
vers=3,timeo=600 172.30.1.78:/u01/rmanbk /rmanbk
3.3修改備份目錄的許可權:
#chown oracle:oinstall /rmanbk
#chmod 755 /rmanbk
3.4修改fstab檔案,設定NFS自動掛載
# vi /etc/fstab
172.30.1.78:/u01/rmanbk /rmanbk nfs rw,hard,nointr,tcp,noac,vers=3,timeo=600,rsize=32768,wsize=32768 0 0
4.編寫RMAN 備份指令碼(以下在其中的一個節點上執行,其它節點上會看到共享的指令碼檔案)
4.1在其中一個節點上建立備份指令碼和備份日誌的存放目錄
$ mkdir /rmanbk/script
$ mkdir /rmanbk/logs
$ cd /rmanbk/script

4.2編寫0級備份指令碼(oracle使用者進行):
注:以下指令碼中用到的節點名字及檔案路徑在生產環境都應按照實際情況進行修改。
$ cat rman_level_0.rman
run{
allocate channel d1 device type disk MAXPIECESIZE=8G connect ;
allocate channel d2 device type disk MAXPIECESIZE=8G connect ;
backup incremental level 0 database format '/rmanbk/db_%d_%s_%c_%p_%t.dbf'
plus archivelog delete all input format '/rmanbk/arc_%d_%s_%c_%p_%t.dbf';
crosscheck backupset;
delete noprompt expired backupset;
delete noprompt obsolete;
release channel d1;
release channel d2;
}

run
{
allocate channel d1 device type disk connect ;
delete archivelog all backed up 1 times to device type disk like '/arch1/%.dbf';
release channel d1;
}
run
{
allocate channel d2 device type disk connect ;
delete archivelog all backed up 1 times to device type disk like '/arch2/%.dbf';
release channel d2;
}

4.3編寫1級增量備份指令碼(oracle使用者進行):
$ cat rman_level_1.rman
run{
allocate channel d1 device type disk MAXPIECESIZE=8G connect ;
allocate channel d2 device type disk MAXPIECESIZE=8G connect ;
backup incremental level 1 database format '/rmanbk/db_%d_%s_%c_%p_%t.dbf'
plus archivelog delete all input format '/rmanbk/arc_%d_%s_%c_%p_%t.dbf';
crosscheck backupset;
delete noprompt expired backupset;
delete noprompt obsolete;
release channel d1;
release channel d2;
}
run
{
allocate channel d1 device type disk connect ;
delete archivelog all backed up 1 times to device type disk like '/arch1/%.dbf';
release channel d1;
}
run
{
allocate channel d2 device type disk connect ;
delete archivelog all backed up 1 times to device type disk like '/arch2/%.dbf';
release channel d2;
}

4.4編寫0級shell指令碼(oracle使用者進行):
$ vi backup_level_0.sh
#!/bin/bash
DATE=`date +%Y%m%d`
DATE_BEGIN_BACKUP=`date +%Y-%m-%d" "%H:%M:%S`
echo "------------- Start at " $DATE_BEGIN_BACKUP "--------------------"
export PATH=/u01/app/oracle/product/10.2.0/db_1/bin:/bin:/sbin:/usr/css/bin:/usr/local/bin
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1
export TERM=linux
export NLS_LANG=american_america.zhs16gbk
export LD_LIBRARY_PATH=/u01/app/oracle/product/10.2.0/db_1/lib
export HOME=/home/oracle
export ORACLE_SID=sid_name
rman target / log=/rmanbk/logs/$DATE.log append cmdfile=/rmanbk/script/rman_level_0.rman <end
#DATE_END_BACKUP=`date +%Y-%m-%d" "%H:%M:%S`
echo ""
#echo "------------- End at " $DATE_END_BACKUP "--------------------"

4.5編寫1級shell指令碼(oracle使用者進行):
$ cat backup_level_1.sh
#!/bin/bash
DATE=`date +%Y%m%d`
DATE_BEGIN_BACKUP=`date +%Y-%m-%d" "%H:%M:%S`
echo "------------- Start at " $DATE_BEGIN_BACKUP "--------------------"
export PATH=/u01/app/oracle/product/10.2.0/db_1/bin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/X11R6/bin
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1
export TERM=linux
export NLS_LANG=american_america.zhs16gbk
export LD_LIBRARY_PATH=/u01/app/oracle/product/10.2.0/db_1/lib
export HOME=/home/oracle
export ORACLE_SID=klir2
rman target / log=/orabk/logs/$DATE.log append cmdfile=/orabk/script/rman_level_1.rman <end
DATE_END_BACKUP=`date +%Y-%m-%d" "%H:%M:%S`
echo ""
echo "------------- End at " $DATE_END_BACKUP "--------------------"
5.在一個節點上編寫oracle的crontab指令碼,啟動定時備份操作:
$ crontab -e
0 2 * * 0 /rmanbk/script/backup_level_0.sh
0 2 * * 1,2,3,4,5,6 /rmanbk/script/backup_level_1.sh
6. 設定增量備份的trace檔案,
SQL> ALTER DATABASE ENABLE BLOCK CHANGE TRACKING USING FILE '/orabk/a.f' REUSE;

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

相關文章