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