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