rac環境下standby資料庫的實現

pentium發表於2007-01-17
生產環境:
作業系統:RedHat AS3.0
資料庫:Oracle 9.2.0.4 RAC
儲存:普通陣列[@more@]
一、資料庫首次同步
1.1資料檔案同步
因為生產庫的資料庫檔案是建立在裸裝置上,使用DD方式進行同步比較困難,這裡使用RMAN方式進行同步。
(以下操作在生產庫主機上)
a、在一個生產主機節點上,把生產庫啟動到MOUNT狀態,然後庫使用rman對全庫進行備份,產生的備份集piece放在/rman_bk目錄下。

b、改變/rman_bk的許可權
# chmod 777 /rman_bk

c、共享此目錄,編輯/etc/exports檔案,新增如下內容:
/rman_bk *(rw,async)
(然後重新啟動NFS服務)
#service nfs start

d、產生一個備份的控制檔案(用RMAN恢復的時候使用),產生一個STANDBY控制檔案。
SQL>ALTER DATABASE BACKUP CONTROLFILE TO '/rman_bk/control.bk';
SQL>ALTER DATABASE CREATE STANDBY CONTROLFILE AS '/rman_bk/control.stdby';

e、產生一個pfile檔案
SQL>create pfile='/rman_bk/initcuug.ora' from spfile='/oracle/product/9.2.0.4/dbs/spfilecuug.ora';

(以下操作在standby主機上)
f、在standby主機上把遠端的共享掛接上,掛接點與生產主機一樣(否則rman恢復時找不到路徑):
#mount 192.168.8.91:/rman_bk /rman_bk

g、以oracle使用者身份,把生產資料庫的初始化引數檔案複製到$ORACLE_HOME/dbs目錄下,並改名為initstdby.ora,然後遮蔽裡面的幾個引數:
#*.cluster_database=true
#cuug2.local_listener='LISTENER_CUUG2'
#cuug1.local_listener='LISTENER_CUUG1'
#*.remote_listener='LISTENERS_CUUG'

h、新增如下幾個引數:
lock_name_space=stdby
remote_archive_enable=TRUE
standby_archive_dest='/oracle/stdby_arch'
db_file_name_convert=('/oracle/oradata/cuug','/oracle/oradata/cuug')
log_file_name_convert=('/oracle/oradata/cuug','/oracle/oradata/cuug')
standby_file_management=AUTO

i、把生產庫產生的控制檔案複製到制定的目錄下,啟動stdby例項,並且掛接資料庫。

j、恢復資料檔案到standby主機中:
$rman target /
RMAN> restore database;

k、關閉例項,把控制檔案刪除,複製standby控制檔案到制定位置,並把standby控制檔案改名,然後啟動例項:
SQL> STARTUP NOMOUNT;
SQL> ALTER DATABASE MOUNT STANDBY DATABASE;
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;


(以下操作在生產庫主機上)
l、編輯生產庫的初始化引數檔案
$sqlplus '/as sysdba'
SQL>alter system set log_archive_dest_2='SERVICE=stdby';

m、重新啟動資料庫
$srvctl start database -d cuug

n、檢查各個節點上的歸檔是否正常,切換生產庫的日誌,檢視standby主機是否歸檔成功,並且是否正常recovery(透過監視警告日誌檔案來實現)


總結:如果大家以前做過單機上的standby資料庫,那麼做這個試驗就很簡單了,主要就是首次同步的方式比較重要。

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

相關文章