Data Guard 學習之引數設定

tolywang發表於2010-10-11

網上有一篇介紹dataguard涉及到引數的文章《配置Data Guard涉及到的引數詳解》,工作時也從中學到很多。自己總結,格式因為喜好問題難免雷同特提前宣告。

搭建一個10g版本DataGuard環境,難點之一是配置資料庫名、角色、歸檔以及diskgroup等相關的引數。以如下環境為例:

HostName Role instance_name tnsnames.ora
db1 Primary node1 db1 db1,db2,DR1,DR2
db2 primary node2 db2 db1,db2,DR1,DR2
dr1 Standby Apply node1 db1 db1,db2,DR1,DR2
dr2 Standby node2 db2 db1,db2,DR1,DR2


總結一些需要根據主機和資料庫環境進行自定義的引數。dataguard涉及到的其他引數,類似"log_archive_format”等有固定寫法的這裡不做解釋。

1.DB_NAME

只需注意DataGuard的主備各節點instance使用相同的db_name即可。推薦與service_name一致。

Primary Site Standby Site
*.DB_NAME='DB' *.DB_NAME='DB'

2.DB_UNIQUE_NAME

Primary與Standby端資料庫的唯一名字,設定後不可再更改。

注意:
如果主備db_unique_name不一樣,需要與LOG_ARCHIVE_CONFIG配合使用
db_unique_name並未規定需要與資料庫service_name一致,可以自定義任意名稱。

Primary Site Standby Site
*.db_unique_name='Primary’ *.db_unique_name='Standby’

3.LOG_ARCHIVE_CONFIG

列出主備庫上的DB_UNIQUE_NAME 引數。預設情況下,定義該引數保證資料庫能夠傳送或接收redo log。

1>Primary與Standby端的db_unique_name不一致時

Primary Site Standby Site
*.db_unique_name=Primary *.db_unique_name=Standby
*.LOG_ARCHIVE_CONFIG='DG_CONFIG=(Primary,Standby)' *.LOG_ARCHIVE_CONFIG='DG_CONFIG=(Primary,Standby)'

2>Primary與Standby端的db_unique_name一致時

Primary Site Standby Site
*.db_unique_name=test *.db_unique_name=test
*.LOG_ARCHIVE_CONFIG='' *.LOG_ARCHIVE_CONFIG=''

 

4.LOG_ARCHIVE_DEST_1

本地歸檔路徑。Primary與Standby需要定義各自的online redo log的歸檔地址,以系統實際的存放路徑為準。格式如下:

Primary Site: 
*.LOG_ARCHIVE_DEST_1='LOCATION=/arch/ VALID_FOR=(ALL_LOGFILES,ALL_ROLES) '
 
Standby Site:
*.LOG_ARCHIVE_DEST_1='LOCATION=/stdby/ VALID_FOR=(ALL_LOGFILES,ALL_ROLES) '

注意:  
1> 當主備兩端定義的db_unique_name不一致時,會在LOG_ARCHIVE_DEST_1設定DB_UNIQUE_NAME的值,設定為本地的db_unique_name。以priamry端為例,格式如下:

*.LOG_ARCHIVE_DEST_1='LOCATION=/archivelog/ VALID_FOR=(ALL_LOGFILES,
ALL_ROLES) DB_UNIQUE_NAME=Primary'                        

5.LOG_ARCHIVE_DEST_2

該引數僅當資料庫角色為primary時生效,指定primary傳輸redo log到該引數定義的standby database上。

log_archive_dest_2可以說是dataguard上最重要的引數之一,它定義了redo log的傳輸方式(sync or async)以及傳輸目標(即standby apply node),直接決定了dataguard的資料保護級別。

格式如下:

Primary Site: 
*.LOG_ARCHIVE_DEST_2='SERVICE=DR1 lgwr async  VALID_FOR=(ONLINE_LOGFILES, 
PRIMARY_ROLE) '

Standby Site: (switch over後生效) 
*.LOG_ARCHIVE_DEST_2='SERVICE=db1 lgwr async  VALID_FOR=(ONLINE_LOGFILES, 
PRIMARY_ROLE) ' 

注意:  
1> LOG_ARCHIVE_DEST_2引數裡定義的service值,比如DR1,是tnsnames.ora檔案裡定義的Oracle Net名稱。
2> 有時會在LOG_ARCHIVE_DEST_2定義DB_UNIQUE_NAME的值,當前節點設定的均為另一端資料庫的db_unique_name。以primary端為例,格式如下:

*.LOG_ARCHIVE_DEST_2='SERVICE=DR1 LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,
PRIMARY_ROLE) DB_UNIQUE_NAME=Standby'                       

 

6.LOG_ARCHIVE_DEST_3

該引數僅當資料庫角色為standby時生效,定義standby database歸檔從primary database傳過來的redo log的路徑。

oracle10g官方文件只是在create logical standby時解釋了log_archive_dest_3這個引數,搭建physical standby時並沒有做任何介紹。

Primary Site: 
*.LOG_ARCHIVE_DEST_3='LOCATION=/archivelog/standbylog/  VALID_FOR=
(STANDBY_LOGFILES,STANDBY_ROLE) '

Standby Site: 
*.LOG_ARCHIVE_DEST_3='LOCATION=/arch/arch3/  VALID_FOR=(STANDBY_LOGFILES, 
STANDBY_ROLE) '

注意:  
LOCATION定義的路徑以本節點能讀寫的實際路徑為準。

7.LOG_ARCHIVE_DEST_STATE_n

設定為ENABLE,啟用log_archive_dest_n定義的屬性。

8.FAL_SERVER and FAL_CLIENT

FAL是Fetch Archive Log的簡寫,它是dataguard主備之間GAP的處理機制。

Primary上不會有GAP,所以fal_server和fal_client也是隻在standby上生效的引數,當然為了switch over的需要同樣會在primary端進行預設定。

FAL引數定義的資料庫名同樣取自本地tnsnames.ora裡配置的Oracle Net Service Name.

Primary Site Standby Site
*.fal_server='DR1',’DR2’ *.fal_server='db1',’db2’
*.fal_client='db1' *.fal_client='DR1'


9.DB_FILE_NAME_CONVERT

primary與standby上diskgroup的名稱或是資料檔案的存放路徑不一致的時候,需要定義該引數進行轉換,否則standby apply後無法建立與primary一致的資料檔案並報錯。

格式如下:

Primary Site: 
*.db_file_name_convert='+DATAGRP/db/datafile/','+DG1/db/datafile/'
Standby Site: 
*.db_file_name_convert='+DG1/db/datafile/','+DATAGRP/db/datafile/'        

1> +DG1/db/datafile/是primary dastabase上存放datafile的路徑
2> +DATAGRP/db/datafile/是standby上存放datafile的路徑

注意:
1>primary上的該引數僅在主備switch over後生效
2>注意格式應保持一致,比如"*.db_file_name_convert='+DG1/db/datafile','+DATAGRP/db/datafile/' ”,路徑少了一個"/”,將導致standby apply失敗。
3>primary上執行create tablespace等add datafile操作時,無須自定義datafile的全路徑名稱,由資料庫自動建立datafile即可。

10.LOG_FILE_NAME_CONVERT

同DB_FILE_NAME_CONVERT類似,定義主備log檔案的存放路徑轉換。

 

--最後總結

整理的過程中,發現一些引數涉及到很多細節問題。特別是LOG_ARCHIVE_DEST_2引數直接關係到redo log的傳輸機制,而其中類似"LGWR ASYNC”和"VALID_FOR”的屬性都是容易習慣性忽略的地方。

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

相關文章