aix oracle 10g實現資料庫的遠端自動備份

wdacky發表於2014-09-21
[ 實施目標]
實現資料庫的遠端自動備份
[ 專案環境]
作業系統  AIX5.3
主機名  AIX229
資料庫版本  oracle 10.2.0
例項名  prod
[ 前期工作進展]
清理環境
一、解除安裝原來系統中 RAC 環境
1、解除安裝資料庫
用 dbca 自動刪庫
2、解除安裝 ORACLE 軟體
手工刪除資料庫軟體:
(1)先刪除/u01/app 下的/oracle 資料夾
rm -fr /u01/app/oracle
(2)刪除/usr/local/bin 下的 coraenv dbhome oraenv
rm -fr /usr/local/bin/coraenv
rm -fr /usr/local/bin/dbhome 
rm -fr /usr/local/bin/oraenv
(3)刪除/etc 下的帶 ora 的
ls /etc |grep ora
rm -fr /etc/ora*
(4)刪除/opt 下的 ORCLfmap
rm -fr /opt/ORCLfmap/
(5)刪除/u01 下與 oracle 相關的
rm –rf /u01/ora*
(6)刪除/var 下與 oracle 相關的
rm –rf /var/ora*
3、解除安裝叢集軟體
(1)在所有節點停止 nodeapps 
#srvctl stop nodeapps -n aix229
#srvctl stop nodeapps -n aix230
#stopsrc -s clsmuxpdES
#stopsrc -s clstrmgrES
(2)刪除 crs 自動啟動程式 
rm /etc/init.cssd
rm /etc/init.crs
rm /etc/init.crsd
rm /etc/init.evmd
rm /etc/rc.d/rc2.d/K96init.crs
rm /etc/rc.d/rc2.d/S96init.crs
rm -rf /etc/oracle/scls_scr
rm -rf /etc/oracle/oprocd
rm /etc/inittab.crs
cp /etc/inittab.orig /etc/inittab
(3)kill css/crs/evm 程式,並重啟
ps -ef | grep css/crs/evm
kill -9 processid
(4)刪除其他相關檔案
rm -rf /tmp/.oracle
rm -rf /var/tmp/.oracle
rm -rf /etc/oracle/orc.loc
rm -rf /opt/ORCLcluster
rm -rf /tmp/Ora*
rm -rf /tmp/CVU*
(5)刪除 crs 安裝目錄 
rm -rf /u01/crs_1
rm -rf /u01/app/oracle/oraInventory
二、解除安裝 HACMP 
1、修改/etc/inittab 檔案以防止刪除 hacmp 後自動重啟
#vi /etc/inittab
註釋以下語句
clcomdES:2:once:startsrc -s clcomdES >/dev/console 2>&1
hacmp6000:2:wait:/usr/es/sbin/cluster/etc/rc.cluster -boot  -b 
h1:2:respawn:/etc/init.evmd run >/dev/null 2>&1 h2:2:respawn:/etc/init.cssd fatal >/dev/null 2>&1 h3:2:respawn:/etc/init.crsd run >/dev/null 2>&1 2、使用 smit 刪除 hacmp
#stopsrc -s clcomdES
#  smit remove
刪除 cluster 相關的檔案
#lslpp -l |grep cluster
確保沒有殘留 
三、刪除 RAC 共享的磁碟
1、先刪除 VG 上的 LV
#lspv
#smit reducevg
2、再將 hdisk1 從系統中刪除
#varyonvg racvg
#rmdev -l hdisk1 –d
3、最後在陣列中把共享磁碟刪除
volslice list
volslice remove aix229_230
[ 實施步驟]
一、構建單例項庫環境
1、安裝 oracle 10.2.0 軟體
2、從陣列上劃分一塊 20G 的磁碟給系統
A、在陣列上:建立一塊 20G 的磁碟
vol list
volslice list
volslice create aix229 -z 20gb v01 
volslice list 
B、在主機上:讀取主機網路地址程式碼
#lscfg -vpl fcs0
Network Address.............10000000C95C8BC8 
C、在陣列上:使主機與陣列上的 lun 相關聯
volslice list
lun perm lun 14 rw wwn 10000000C95C8BC8
lun perm list 
D、在主機上:使系統識別陣列的相關聯的磁碟
#cfgmgr -v
3、構建 3 個檔案系統
A、建立 datavg
#smit mkvg
B、建立、掛載檔案系統
#smit fs #建立 /disk1 /disk2 /disk3 三個檔案系統
#lsvg -l datavg
#mount -a #掛載新建立的三個檔案系統
#chown -R oracle:dba /disk1
#chown -R oracle:dba /disk2
#chown -R oracle:dba /disk3   #修改使用者和組
4、dbca 建庫將 datafile、redo logfile、archive logfile 儲存在不同的
檔案系統
datafile-------?/disk3
redo logfile---?/disk1 /disk2
controlfile ---?/disk1 /disk2 
archive logfile?/disk2
啟用塊跟蹤
SQL>alter  database  enable  block  change  tracking  using   file 
'/home/oracle/rman_bak/tracking.log';
二、將備份伺服器共享目錄 mount 到本地檔案系統
1、建立掛載目錄
#mkdir /backup
2、修改 hosts 資訊
#vi /etc/hosts
192.168.8.152 rehl152
#showmount -e rehl152
3、利用 smit nfs 將備份伺服器共享目錄 mount 到本地檔案系統
4、修改檔案系統資訊
#vi /etc/filesystems
/backup:
dev = /backup/cuug03/storage05
vfs = nfs
nodename = rhel152
mount = true
options     = rw,bg,hard,intr,rsize=65536,wsize=65536,
time=600,vers=3,sec=sys
account = false
5、新增系統啟動資訊以保證開機自動掛載
#vi /etc/rc.d/rc2.d/Src.local
nfso -o nfs_use_reserved_ports=1
mount -o rw,bg,hard,intr,rsize=65536,wsize=65536,
time=600,vers=3,
sec=sys rhel152:/backup/cuug03/storage05 /backup
三、配置 rman 引數
CONFIGURE RETENTION POLICY TO REDUNDANCY 2;  #冗餘度為 2
CONFIGURE BACKUP OPTIMIZATION ON;  #開啟備份優化
CONFIGURE CONTROLFILE AUTOBACKUP ON;  #開啟自動備份控制檔案
CONFIGURE  CONTROLFILE  AUTOBACKUP  FORMAT  FOR  DEVICE  TYPE  DISK  TO 
'/home/oracle/backup/control/%F';  #備份控制檔案路徑
CONFIGURE DEVICE TYPE DISK PARALLELISM 2 BACKUP TYPE TO COMPRESSED 
BACKUPSET;    #併發度為 2,壓縮備份
四、建立 rman 備份指令碼
1、差異增量備份 0 級  /home/oracle/script/bin/dif_bak_0.sql
#!/bin/bash
export ORACLE_SID=prod
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
export PATH=$ORACLE_HOME/bin:/usr/bin:/usr/sbin:/usr/ucb:/usr/bin/X11:
/sbin:/home/oracle/script/bin.
rman target / < run{
sql 'alter system switch logfile';
allocate channel c1 type disk;
allocate channel c2 type disk;
backup  incremental  level  0  database  format 
'/backup/prod/rman_bak/hot_bak/data_%s_%p_hot_0.bak'
include  current  controlfile  plus  archivelog  format 
'/backup/prod/rman_bak/hot_bak/arch_%U_0.bak'
filesperset 3;
delete noprompt obsolete;
sql 'alter system switch logfile';
}
quit
EOF
2、差異增量備份 1 級  /home/oracle/script/bin/dif_bak_1.sql
#!/bin/bash
export ORACLE_SID=prod
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
export PATH=$ORACLE_HOME/bin:/usr/bin:/usr/sbin:/usr/ucb:/usr/bin/X11:
/sbin:/home/oracle/script/bin.
rman target / < run{
sql 'alter system switch logfile';
allocate channel c1 type disk;
allocate channel c2 type disk;
backup  incremental  level  1  database  format 
'/backup/prod/rman_bak/hot_bak/data_%s_%p_hot_1.bak'
include  current  controlfile  plus  archivelog  format 
'/backup/prod/rman_bak/hot_bak/arch_%U_1.bak'
filesperset 3;
delete noprompt obsolete;
sql 'alter system switch logfile';
}
quit
EOF
五、通過 crontab 建立備份計劃
編輯 crontab 指令碼
整點執行 di_bak_0.sh 實現 0 級增量備份 
每 15 分鐘、30 分鐘或 45 分鐘執行 dif_bak_1.sh 實現 1 級增量備份
$crontab -e
0  *  *  *  *  sh  /home/oracle/script/bin/dif_bak_0.sh  > 
/home/oracle/script/log/backup0.log 2>&1
15,30,45  *  *  *  *  sh  /home/oracle/script/bin/dif_bak_1.sh  > 
/home/oracle/script/log/backup1.log 2>&1
[ 專案驗收] 
經過多次測試,專案成功實現:
1、集中備份到備份伺服器
2、整點做 0 級備份
3、非整點每 15 分鐘做 1 級備份
4、備份同時記錄日誌
5、備份刪除 obsolete 備份 

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

相關文章