一步一步學DataGuard(22)Standby之選擇資料保護模式

junsansi發表於2008-04-04

關於有三模同學的光榮事蹟大家應該都聽說了,有不認識的請自覺重溫"名詞先混個臉熟"篇,下面讓三思就有三模同學的高超本領為大家做個展示。

為了便於大家更好的理解,我們先畫一個表,表中描述了不同保護模式下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 MAXIMUM AVAILABILITY

5、 修改standby初始化引數設定(主要考慮角色切換,如果只測試的話本步可跳過)   ---standby資料庫操作

SQL> alter system set log_archive_dest_2='SERVICE=jssweb OPTIONAL LGWR SYNC AFFIR M

  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 MAXIMUM AVAILABILITY

配置成功,正面順便再測試一下。

6、 停掉standby資料庫,再檢視primary資料庫狀態

SQL> select protection_mode,protection_level from v$database;

PROTECTION_MODE      PROTECTION_LEVEL

-------------------- --------------------

MAXIMUM AVAILABILITY RESYNCHRONIZATION

Standby資料庫shutdown後,primary資料庫保護級別切換為待同步。

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

相關文章