Data Guard保護模式解析及演示

    在一些場合,一些業務是不能容忍丟失數據的。而在另外的場合,數據庫的可用性可能比數據的丟失更加重要。一些應用要求數據庫的性能最大化,並且可以容忍少許數據的丟失。以下是三種不同數據保護模式的描述總結。

以下兩張圖三種模式的特點,下面將逐一進行分析:

wKiom1LT1Pmwy9DYAAGCLd7SykM307.jpg

wKioL1LT1OzjMuLkAADkV-6UrWM349.jpg

 

1、最大保護模式(Maximum protection)

這個保護模式確保在主庫發生故障的時候,沒有數據的丟失。爲了提供這種級別的保護,重做日誌涉及的事務必須寫入本地online redo logstandby databasestandby redo log之後(假設有多個備庫,至少寫入其中的一個即可),纔可以提交事務。爲了保證數據的不丟失,如果發生了一個故障阻止了redo流可以寫入至少一個事務一致的standby database,主數據庫將關閉。

由以上即可知,要配置最大保護模式,我們需要在備庫建立standby redo log,使用LGWR寫日誌,SYNC同步日誌,AFFIRM

參數配置實例:

alter system set log_archive_dest_2='SERVICE=db_phystdby LGWR SYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=PHYSTDBY AFFIRM ';

2、最高可用性(Maximum availability)

這種保護模式在不影響主庫的可用性情況下,提供最高級別的數據保護。與最大保護模式一樣,重做日誌涉及的事務必須寫入本地online redo logstandby databasestandby redo log之後(假設有多個備庫,至少寫入其中的一個即可),纔可以提交事務。不過與最大保護模式不同的是,如果發生故障阻止redo流寫入遠程的standby redo log中,主庫不會關閉。取而代之的是,主庫運轉在最高性能模式下,直到故障消除以及redo log 文件的gaps(裂縫)解決掉。當所有的gaps解決掉,主庫自動恢復運行至最高可用模式。

這種模式保證在主庫故障的時候不會發生數據丟失,但是僅僅在第二個故障沒有阻止完整的redo data從主庫發送至最少一個備庫中。

採用這種模式,同最大保護模式一樣,需要在備庫建立standby redo log,使用LGWR寫日誌,SYNC同步日誌,AFFIRM

參數配置實例:

alter system set log_archive_dest_2='SERVICE=db_phystdby LGWR SYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=PHYSTDBY AFFIRM ';

3、最高性能(Maximum performance)

最高性能模式是默認的保護模式,這種模式在不影響主庫性能的前提下提供最高級別的數據保護。這種模式事務提交是不受限制的。主庫的redo data流同樣要求寫入至少一個standby database,但是redo 流與創建redo data的事務相對而言是不同步的。

當網絡帶寬足夠使用時,這種模式提供了類似於最高可用模式的數據庫保護,但是對於主庫的性能影響最下。

從以上分析即可知,這種模式下,我們可以使用ARCHLGWR

當使用ARCH時,則需要SYNC(同步)。

當使用LGWR時,可以是SYNC也可以是ASYNC

Standby redo這個可有可無。

示例配置:

alter system set log_archive_dest_2 = 'SERVICE=db_phystdby LGWR SYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=PHYSTDBY';

4、切換演示

切換爲最大保護模式

a、現在備庫上做操作,添加standby logfile

[oracle@dg2 ~]$ sqlplus / as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on Sun Jan 5 01:00:35 2014
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production
With the Partitioning, OLAP and Data Mining options
SQL> alter database add standby logfile group 4 ('/u01/oracle/oradata/ORCLDB/stdby_redo04.log') size 50M;
Database altered.
SQL> alter database add standby logfile group 5 ('/u01/oracle/oradata/ORCLDB/stdby_redo05.log') size 50M;
Database altered.
SQL> alter database add standby logfile group 6 ('/u01/oracle/oradata/ORCLDB/stdby_redo06.log') size 50M;
Database altered.

b、在主庫上執行以下的操作

 

[oracle@dg1 bdump]$ sqlplus / as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on Sun Jan 5 01:10:32 2014
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production
With the Partitioning, OLAP and Data Mining options
SQL> alter database set standby database to maximize PROTECTION;
alter database set standby database to maximize PROTECTION
*
ERROR at line 1:
ORA-01126: database must be mounted in this instance and not open in any instance
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.
Total System Global Area 390070272 bytes
Fixed Size 2021024 bytes
Variable Size 142608736 bytes
Database Buffers 243269632 bytes
Redo Buffers 2170880 bytes
Database mounted.
SQL> alter database set standby database to maximize PROTECTION;
Database altered.
SQL> select PROTECTION_MODE,OPEN_MODE,DB_UNIQUE_NAME,DATABASE_ROLE,SWITCHOVER_STATUS from v$database;
PROTECTION_MODE OPEN_MODE DB_UNIQUE_NAME DATABASE_ROLE SWITCHOVER_STATUS
-------------------- ---------- ------------------------------ ---------------- --------------------
MAXIMUM PROTECTION MOUNTED WENDING PRIMARY TO STANDBY
分別將FLASHBACK_ON開啓。
SQL> select FLASHBACK_ON from v$database;
FLASHBACK_ON
------------------
NO
SQL> alter database flashback on;
Database altered.
主庫上操作
SQL> alter system set log_archive_dest_2 = 'SERVICE=db_phystdby LGWR SYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=PHYSTDBY AFFIRM ';
System altered.
SQL> alter database open;
Database altered.
SQL> select PROTECTION_MODE,OPEN_MODE,DB_UNIQUE_NAME,DATABASE_ROLE,SWITCHOVER_STATUS from v$database;
PROTECTION_MODE OPEN_MODE DB_UNIQUE_NAME DATABASE_ROLE SWITCHOVER_STATUS
-------------------- ---------- ------------------------------ ---------------- --------------------
MAXIMUM PROTECTION MOUNTED PHYSTDBY PHYSICAL STANDBY SESSIONS ACTIVE

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章