Oracle Data Guard LOG_ARCHIVE_DEST_n引數的可選屬性

靜以致遠√團團發表於2015-09-11


   
Oracle Database Data Guard日常的配置過程中,設定LOG_ARCHIVE_DEST_n初始化引數中的AFFIRM,NOAFFIRM,DB_UNIQUE_NAME,DELAY,LOCATION,SERVICE,SYNC,ASYNC,VALID_FOR屬效能夠滿足大部分的應用場景,也可以認為這部分引數為必選引數。這篇文章將基於11gR2的文件討論一些LOG_ARCHIVE_DEST_n其他的可選屬性,這部分屬性將幫助我們更深入的瞭解Oracle Data Guard的工作原理和工作細節。同時,這篇文章也是對我書中討論DG一章的補充。

1.ALTERNATE屬性

    當初始的目的地失敗,將使用該引數指定一個輪換的歸檔目的地。該屬性不支援LOG_ARCHIVE_DEST_11LOG_ARCHIVE_DEST_31 Redo目的地設定。

    ALTERNATE=LOG_ARCHIVE_DEST_nLOG_ARCHIVE_DEST_n是一個目的地,n是從110的一個值。

    透過V$ARCHIVE_DEST.STATUS可以檢視ALTERNATE目的地相關資訊

    如果REOPEN屬性被指定為一個非零的值,ALTERNATE屬性被忽略,除非MAX_FAILURE屬性也被指定為一個非零的值,那麼如果失敗次數超過指定的失敗閥值(MAX_FAILURE),ALTERNATE目的地被啟用,這樣,ALTERNATE屬性不與一個非零的REOPEN屬性值衝突。

    針對每個LOG_ARCHIVE_DEST_n初始化引數只能指定一個ALTERNATE目的地,但是多個LOG_ARCHIVE_DEST_n初始化引數共享相同的ALTERNATE目的地。

    避免指定的ALTERNATE目的地與主目的地使用相同的磁碟或網路,避免當主目的地無效導致ALTERNATE目的地也無效。 

    如果沒有指定引用的LOG_ARCHIVE_DEST_n的位置,那麼ALTERNATE目的地暗示被延遲(DEFER),同樣在執行時可以透過使用ALTER SYSTEM來啟用或延遲(DEFERALTERNATE目的地。

    可以透過增加歸檔目的地的數量,來減少活動的ALTERNATE歸檔目的地數量。

    當歸檔目的地失敗,ALTERNATE目的地被啟用進行下一次歸檔操作,這裡不支援在歸檔操作的過程中啟用ALTERNATE目的地。因為REOPEN屬性的行為要求重新讀取目的地已經處理的塊。


    下面的例子展示
如果一個錯誤發生或者磁碟滿了,下次歸檔操作將從
LOG_ARCHIVE_DEST_1自動FAILOVERALTERNATE目的地LOG_ARCHIVE_DETS_2進行。 

LOG_ARCHIVE_DEST_1='LOCATION=/disk1 MANDATORY MAX_FAILURE=1

 ALTERNATE=LOG_ARCHIVE_DEST_2'

LOG_ARCHIVE_DEST_STATE_1=ENABLE

LOG_ARCHIVE_DEST_2='LOCATION=/disk2 MANDATORY'

LOG_ARCHIVE_DEST_STATE_2=ALTERNATE

 

    下面的例子展示如何設定ALTERNATE目的地Oracle Net Service名稱,指定到相同的STANDBY資料庫:

LOG_ARCHIVE_DEST_1='LOCATION=/disk1 MANDATORY MAX_FAILURE=1'

LOG_ARCHIVE_DEST_STATE_1=ENABLE

LOG_ARCHIVE_DEST_2='SERVICE=stby1_path1 ALTERNATE=LOG_ARCHIVE_DEST_3'

LOG_ARCHIVE_DEST_STATE_2=ENABLE

LOG_ARCHIVE_DEST_3='SERVICE=stby1_path2'

LOG_ARCHIVE_DEST_STATE_3=ALTERNATE


2.COMPRESSION屬性

    COMPRESSION屬性用於表明是否在將REDO資料傳輸到REDO傳輸目的地之前進行壓縮。

    Redo傳輸壓縮是Oracle Advanced Compression元件的一個特性,必須購買該選件的license之後才能使用該特性。

    COMPRESSION=ENABLE或者DISABLE,預設值是DISABLE。

    透過查詢V$ARCHIVE_DEST.COMPRESSION欄位可以判斷是否啟用了壓縮。

 

    下面的例子展示LOG_ARCHIVE_DEST_n引數中的COMPRESSION屬性:

LOG_ARCHIVE_DEST_3='SERVICE=denver SYNC COMPRESSION=ENABLE'

LOG_ARCHIVE_DEST_STATE_3=ENABLE


3.MANDATORY屬性

    MANDATORY屬性指明填滿的線上日誌檔案必須被成功歸檔到目的地之後才能被重用。

    透過V$ARCHIVE_DEST.BINDING欄位可以檢視是否指定了該引數。

    LOG_ARCHIVE_DEST_11LOG_ARCHIVE_DEST_31初始化引數不支援MANDATORY屬性。

 

    即使所有的歸檔目的地是可選的,至少一個歸檔目的地必須成功。如果歸檔到一個可選目的地失敗,線上Redo日誌檔案可能會被重用,最終可能被覆蓋。然而,如果歸檔一個MANDATORY目的地操作失敗,線上Redo日誌檔案不能被覆蓋。

 

    LOG_ARCHIVE_MIN_SUCCEED_DEST=n初始化引數(n是一個整數,範圍從110),該引數指定線上Redo日誌檔案被覆蓋之前,必須歸檔成功的目的地數目。

 

    所有MANDATORY目的地和可選本地目的地有助於滿足LOG_ARCHIVE_MIN_SUCCESSD_DEST=n數目。

# Database must archive to at least two locations before

# overwriting the online redo log files.

LOG_ARCHIVE_MIN_SUCCEED_DEST = 2

 

資料庫必須至少有一個本地目的地,你可以定義MANDATORY或者保留為可選目的地。至少有一個本地目的地設定MANDATORY是因為LOG_ARCHIVE_MIN_SUCCESSD_DEST引數的最小值為1

 

LOG_ARCHIVE_MIN_SUCCEED_DEST引數值不能大於MANDATORY目的地加上可選本地目的地的數目。

 

V$ARCHIVE_DEST.BINDING欄位表明什麼樣的失敗不影響歸檔操作。

 

以下的例子展示了MANDATORY屬性:

LOG_ARCHIVE_DEST_1='LOCATION=/arch/dest MANDATORY'

LOG_ARCHIVE_DEST_STATE_1=ENABLE

LOG_ARCHIVE_DEST_3='SERVICE=denver MANDATORY'

LOG_ARCHIVE_DEST_STATE_3=ENABLE


4.MAX_CONNECTIONS屬性

    在傳送一個歸檔Redo日誌檔案到Redo傳輸目的地時啟用多重網路連線,使用多重網路連線能在高延遲的網路連線中提升Redo傳輸的效能。

    預設值為1,值的範圍是120

    透過查詢主資料庫的V$ARCHIVE_DEST.MAX_CONNECTIONS欄位可以獲得該引數值設定。

 

    如果指定這個引數,只有當Redo傳輸服務使用ARCn程式進行歸檔的時候才會使用。

    如果MAX_CONNECTIONS設定為1(預設),Redo傳輸服務使用單一ARCn程式傳輸Redo資料到遠端目的地。

    如果MAX_CONNECTIONS設定的值大於1Redo傳輸服務使用多個ARCn程式並行傳輸Redo到遠端目的地歸檔Redo日誌檔案。每個歸檔程式使用獨立的網路連線。

 

    Redo資料是從ARCn程式接收,直接寫到歸檔Redo日誌檔案,因此,該屬性不能應用在實時日誌應用。

 

    真實在使用的歸檔程式數在不同的時間可能是不同的,這是根據歸檔負載和LOG_ARCHIVE_MAX_PROCESSES初始化來決定的,歸檔程式的總數量受到LOG_ARCHIVE_MAX_PROCESSES的限制。

 

以下的例子顯示了MAX_CONNECTIONS屬性:

LOG_ARCHIVE_DEST_1='LOCATION=/arch/dest'

LOG_ARCHIVE_DEST_STATE_1=ENABLE

LOG_ARCHIVE_DEST_3='SERVICE=denver MAX_CONNECTIONS=3'

LOG_ARCHIVE_DEST_STATE_3=ENABLE

 

5.MAX_FAILURE屬性

    該屬性控制Redo傳輸服務連續的嘗試重新建立連線,在主資料庫放棄該目的地之前傳輸Redo資料到失敗的目的地的次數。

    沒有預設值,正確的值為>=0

    要求REOPEN屬性,檢視V$ARCHIVE_DEST檢視的MAX_FAILURE,FAILURE_COUNT,REOPEN_SECS欄位檢視相關資訊。

 

    預設情況下,Oracle沒有限制歸檔嘗試失敗目的地的次數。

    這個屬性對失敗目的地問題的解決是有用的,可以使得在失敗之後嘗試傳輸Redo資料到其他目的地,而不是遙遙無期的等待。

 

    當指定了MAX_FAILURE屬性,必須設定REOPEN屬性。一旦指定的連續嘗試次數被超過,該目的地被當作沒有指定REOPEN進行處理。

    可以透過V$ARCHIVE_DEST.FAILURE_COUNT欄位檢視失敗的次數,相關的REOPEN_SECS欄位標識REOPEN屬性的值。

 

    一旦目的地失敗次數到達指定的MAX_FAILURE屬性值,只有一種方法重新使用該目的地,修改MAX_FAILURE屬性值或者任何其他屬性,這將重新設定失敗次數為0

 

    無論什麼時候,透過ALTER SYSTEM SET語句修改目的地引數失敗次數都將被重置為0,這是為了防止設定一個比當前失敗次數還小的MAX_FAILURE屬性值

 

    一旦失敗次數大於或者等於設定的MAX_FAILURE屬性值,REOPEN屬性值被暗中設定為0,這將導致在下次歸檔操作的時候,Redo傳輸服務傳輸Redo資料到一個ALTERNATE目的地。

 

    如果沒有指定MAX_FAILURE屬性(或者設定MAX_FAILORE=0),並且為REOPEN屬性指定一個非0值,Redo傳輸服務遙遙無期的嘗試歸檔到失敗目的地。如果目的地設定了MANDATORY屬性,線上Redo日誌檔案不能被重用,直到線上Redo日誌檔案被成功歸檔到該目的地。

 

    以下的例子允許Redo日誌傳輸服務3次連續歸檔嘗試,每5秒進行重試,到arc_dest目的地。如果歸檔操作3次嘗試後失敗,目的地被當作REOPEN屬性沒有指定進行處理。

LOG_ARCHIVE_DEST_1='LOCATION=/arc_dest REOPEN=5 MAX_FAILURE=3'

LOG_ARCHIVE_DEST_STATE_1=ENABLE


6.NET_TIMEOUT屬性

    指定LGWR後臺程式等待Redo傳輸目的地確認收到Redo資料的秒數,如果確認沒有在NET_TIMEOUT秒內收到,一個錯誤被記錄,同時到該目的地的Redo傳輸會話被中斷。

    預設值為30秒,值的範圍11200

    指定該引數必須指定SYNC屬性

    透過在主資料庫查詢V$ARCHIVE_DEST.NET_TIMEOUT欄位檢視該屬性的值。

 

    雖然允許NET_TIMEOUT的最小值為1秒,Oracle推薦最小值在810秒,防止瞬時網路錯誤的情況下斷開與Standby資料庫的連線。

 

    以下的例子顯示如何在主資料庫使用NET_TIMETOUT屬性設定10秒的網路超時值:

LOG_ARCHIVE_DEST_2='SERVICE=stby1 SYNC NET_TIMEOUT=10'

LOG_ARCHIVE_DEST_STATE_2=ENABLE

 

7.REOPEN屬性

    該屬性指定Redo傳輸服務嘗試重新開啟失敗目的地等待的最小秒數。

    預設值為300秒,值應該大於0

    透過V$ARCHIVE_DEST檢視的REOPEN_SECSMAX_FAILURE欄位可以獲得相關資訊。

 

    在日誌切換時Redo傳輸服務嘗試重新開啟失敗的目的地。

    Redo傳輸服務檢查如果最後錯誤的時間加上REOPEN間隔小於當前時間,Redo傳輸服務嘗試重新開啟目的地。

 

    REOPEN應用於所有的錯誤,不僅僅是連線失敗。這些錯誤包括但不僅限於網路失敗,磁碟失敗,和許可權異常。

    如果為可選目的地指定了REOPEN,如果有任何的錯誤,Oracle資料庫很可能覆蓋線上Redo日誌檔案,如果對MANDATORY目的地指定了REOPEN,當不可能成功傳輸Redo資料,Redo傳輸服務可能拖延主資料庫。當這種情況發生,考慮一下選項:

a).延遲該目的地,指定該目的地為可選目的地,或者改變SERVICE屬性值。

b).指定ALTERNATE目的地。

c).禁用該目的地。

 

    以下的例子顯示了REOPEN屬性:

LOG_ARCHIVE_DEST_3='SERVICE=stby1 MANDATORY REOPEN=60'

LOG_ARCHIVE_DEST_STATE_3=ENABLE


8.TEMPLATE屬性

    在目的地對Redo日誌檔名稱定義特定目錄和格式模板,模板引數用於在Redo目的地生成與LOG_ARCHIVE_FORMAT初始化引數定義的格式不同的檔名。

    透過查詢V$ARCHIVE_DESTREMOTE_TEMPLATEREGISTER欄位可以查詢相關資訊。


   如果沒有指定
TEMPLATE,歸檔Redo日誌使用LOG_ARCHIVE_FORMAT初始化引數的值進行命名。

    TEMPLATE屬性只對遠端目的地有效(透過SERVICE屬性指定的目的地)。

    指定的檔名模板必須包含%s,%t%r指令:

    %t 例項執行緒號。

    %T 例項執行緒號,用0填充。

    %s 日誌檔案序列號。

    %S 日誌檔案序列號,用0填充。

    %r resetlogs ID

    %R resetlogs ID,用0填充。
 

filename_template值被傳送到目的地,是在建立檔名之前進行傳輸和驗證。

 

翻譯自:《Oracle? Data Guard Concepts and Administration 11g Release 2 (11.2) Part Number E25608-03


--end--

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

相關文章