?
?
第四部分Standby之選擇數(shù)據(jù)保護(hù)模式? 2007.12.18
??? 關(guān)于有三模同學(xué)的光榮事跡大家應(yīng)該都聽(tīng)說(shuō)了,有不認(rèn)識(shí)的請(qǐng)自覺(jué)重溫"名詞先混個(gè)臉熟"篇,下面讓三思就有三模同學(xué)的高超本領(lǐng)為大家做個(gè)展示。
??? 為了便于大家更好的理解,我們先畫(huà)一個(gè)表,表中描述了不同保護(hù)模式下LOG_ARCHIVE_DEST_n 參數(shù)應(yīng)該設(shè)置的屬性:
|
最大保護(hù)
|
最高可能用
|
最高性能
|
REDO 寫(xiě)進(jìn)程
|
LGWR?
|
LGWR?
|
LGWR 或ARCH
|
網(wǎng)絡(luò)傳輸模式
|
SYNC?
|
SYNC?
|
LGWR 進(jìn)程時(shí)SYNC 或ASYNC,ARCH 進(jìn)程時(shí)SYNC
|
磁盤(pán)寫(xiě)操作
|
AFFIRM
|
AFFIRM
|
AFFIRM 或NOAFFIRM
|
是否需要standby redologs?
|
YES?
|
YES?
|
可沒(méi)有但推薦有
|
?
??? 提示:
??? 上面中的各項(xiàng)需求都是滿(mǎn)足該保護(hù)模式的最低需求,這些需求都是據(jù)其特性而定的,同時(shí)你也一定要理解,這些需求僅只是保證你完成data guard 保護(hù)模式的設(shè)置,如果你真正理解其特性的需求所希望滿(mǎn)足的原因,你還需要做不少其它必要的工作。比如對(duì)于最高可用性而言,其根本目地是為了在某一臺(tái)甚至多臺(tái)主或備庫(kù)癱瘓時(shí),數(shù)據(jù)庫(kù)仍能夠在極短時(shí)間內(nèi)恢復(fù)服務(wù),這就不僅需要你將最高可用性保護(hù)模式的參數(shù)配置正確,還需要你擁有足夠多的standby 數(shù)據(jù)庫(kù)。聽(tīng)明白了沒(méi)?啥,木有?555555555,你在打擊俺語(yǔ)言描述的能力~~~
??? 另外再?gòu)?qiáng)調(diào)一遍:最大保護(hù)和最高可用性都要求standby 數(shù)據(jù)庫(kù)配置standby redo logs(當(dāng)然如果考慮角色切換的話(huà),主庫(kù)肯定也是需要配置的),關(guān)于standby redo logs 的故事你可以參考第二部分的第一章1.3。
?
??? 下面我們進(jìn)入實(shí)踐將一個(gè)data guard 配置從最高性能模式改為最高可用性模式:
1、首先查看當(dāng)前的保護(hù)模式---primary 數(shù)據(jù)庫(kù)操作
??? SQL> select protection_mode,protection_level from v$database;
??? PROTECTION_MODE ???? PROTECTION_LEVEL
??? -------------------- --------------------
??? MAXIMUM PERFORMANCE MAXIMUM PERFORMANCE
?
2、修改初始化參數(shù)--primary 數(shù)據(jù)庫(kù)操作
??? SQL> alter system set log_archive_dest_2='SERVICE=jsspdg
?????? 2 OPTIONAL LGWR SYNC AFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)
?????? 3 DB_UNIQUE_NAME=jsspdg';
??? 系統(tǒng)已更改。
?
3、設(shè)置新的數(shù)據(jù)保護(hù)模式并重啟數(shù)據(jù)庫(kù)--primary 數(shù)據(jù)庫(kù)操作
??? 語(yǔ)句非常簡(jiǎn)單,如下:
??? SQL> alter database set standby database to maximize availability;
??? 數(shù)據(jù)庫(kù)已更改。
?
??? 提示:maximize 后可跟{PROTECTION | AVAILABILITY | PERFORMANCE},分別對(duì)應(yīng)最大保護(hù),最高可用性及最高性能。
??? Down 掉數(shù)據(jù)庫(kù),重新啟動(dòng)
??? SQL> shutdown immediate
??? 數(shù)據(jù)庫(kù)已經(jīng)關(guān)閉。
??? 已經(jīng)卸載數(shù)據(jù)庫(kù)。
??? ORACLE 例程已經(jīng)關(guān)閉。
??? SQL> startup
??? ORACLE 例程已經(jīng)啟動(dòng)。
??? Total System Global Area 167772160 bytes
??? Fixed Size 1289484 bytes
??? Variable Size 121635572 bytes
??? Database Buffers 37748736 bytes
??? Redo Buffers 7098368 bytes
??? 數(shù)據(jù)庫(kù)裝載完畢。
??? 數(shù)據(jù)庫(kù)已經(jīng)打開(kāi)。
?
4、看一下當(dāng)前的保護(hù)模式--primary 數(shù)據(jù)庫(kù)操作
??? SQL> select protection_mode,protection_level from v$database;
??? PROTECTION_MODE ???? PROTECTION_LEVEL
??? -------------------- --------------------
??? MAXIMUM AVAILABILITY MAXIMUMAVAILABILITY
?
5、修改standby 初始化參數(shù)設(shè)置(主要考慮角色切換,如果只測(cè)試的話(huà)本步可跳過(guò)) ---standby 數(shù)據(jù)庫(kù)操作
??? SQL> alter system set log_archive_dest_2='SERVICE=jssweb OPTIONAL LGWR SYNC AFFIRM
?????? 2 VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=jssweb';
??? 系統(tǒng)已更改。
?
??? 查看當(dāng)前的保護(hù)模式
??? SQL> select instance_name from v$instance;
??? INSTANCE_NAME
??? ----------------
??? jsspdg
??? SQL> select protection_mode,protection_level from v$database;
??? PROTECTION_MODE PROTECTION_LEVEL
??? -------------------- --------------------
??? MAXIMUM AVAILABILITY MAXIMUMAVAILABILITY
?
??? 配置成功,正面順便再測(cè)試一下。
6、停掉standby 數(shù)據(jù)庫(kù),再查看primary 數(shù)據(jù)庫(kù)狀態(tài)
??? SQL> select protection_mode,protection_level from v$database;
??? PROTECTION_MODE PROTECTION_LEVEL
??? -------------------- --------------------
??? MAXIMUM AVAILABILITY RESYNCHRONIZATION
?
??? Standby 數(shù)據(jù)庫(kù)shutdown 后,primary 數(shù)據(jù)庫(kù)保護(hù)級(jí)別切換為待同步。
?
?
?