轉載《Data Guard Broker基礎》

weixin_34262482發表於2011-10-02

Data Guard broker是建立在Data Guard基礎上的一個對Data Guard配置,集中管理操作的一個平臺,因此在學習Data Guard broker之前必須對Data Guard要有充分的瞭解。

Data Guard為我們提供了一套高可用的解決方案,但是在實際的使用方面確實顯得有一些過於複雜,特別是在需要配置的standby機器多的時候更是如此,一個個機器去登陸配置顯得特別的麻煩;在需要做switchover或者是failover的時候情況也是一樣,需要操作一系列的命令才能完成一次 switchover/failover的操作。Data Guard broker的推出就是為了簡化DG複雜的管理過程的,它最大的作用就是集中化的統一管理,下面列出來一些Data Guard broker優勢所在:

 


    * 更詳細的對比參看《Oracle Data Guard broker》。

broker的組成主要分成兩大部分,分別是:

客戶端元件
    客戶端元件是一個管理員與broker伺服器端元件的介面,使用者通過客戶端來發出命令對伺服器端的行為進行控制。客戶端元件由OEM和DGMGRL兩個組成

    * OEM(Oracle Enterprise Manager):圖形化的Oracle管理工具,提供了多個嚮導功能方便DG的管理工作。
    * DGMGRL(Data Guard command-line interface): 命令列管理介面,可以通過命令很方便的操作以及監控資料庫,命令列表見文件。

伺服器端元件
    在每個配置了broker的資料庫上面都存在一個伺服器程式進行 broker的管理操作,這個伺服器程式就是Data Guard broker monitor(DMON),而這個DMON所用到的所有配置資訊都會保留在一個配置檔案中。這個DMON程式和配置檔案就構成了每個資料庫上 broker的伺服器端元件。

    * Data guard broker monitor process(DMON):DMON是一個用來管理broker的後臺程式,這個程式負責與本地資料庫以及遠端資料庫的DMON程式進行通訊(與遠端資料庫的DMON程式進行通訊的時候使用的是一個 動態註冊 的service name “db_unique_name_DGB.db_domain”)。這個程式負責維護配置檔案的正確性以及不同資料庫之間配置檔案的一致性。在第一次建立一個broker配置檔案或者是將一個資料庫加入一個現存的broker配置中的時候DMON會先收集現有資料庫的DG配置資訊並儲存到配置檔案中。
    * 配置檔案:配置檔案有DMON進行操作,它儲存了broker管理的所有的資料庫的狀態資訊,以及資料庫相關屬性(即資料庫的初始化引數資訊)的資訊。同一個broker配置管理下的每個資料庫上面都有一份相同的配置檔案。

broker的配置管理

broker通過將DG環境劃分成資料庫配置和資料庫這兩種物件來簡化DG的管理工作。

    * 資料庫配置物件:資料庫配置是一個包含多個資料庫資訊的集合,這些資料庫資訊包括資料庫物件當前的形態、狀態、及屬性設定。同時這個集合可以同時混合了物理standby和邏輯standby。
    * 資料庫物件:資料庫物件指的是Primary和standby資料庫。一般情況下一個資料庫物件只包含一個例項,但是在RAC系統中一個資料庫物件會包含多個例項。

broker通過將一個DG中的Primary資料庫及所有的standby資料庫邏輯的組成一個邏輯組來進行集中管理,因此每個broker配置就是一個資料庫的邏輯集合,它包含了組成資料庫的日誌傳輸服務、日誌應用服務等邏輯的物件。DBA可以broker來控制這個邏輯集合的配置,改變它的配置,同時還能監控這個組的整體健康狀態。

DMON程式負責設定和維護broker配置,有了DMON的維護之後在實際管理中我們只需要把一個broker配置當初單個的單元管理就行了,剩下的工作由DMON去做,因此當執行一個影響到多個資料庫的命令的時候,DMON實際上會進行下面的操作:

   1. 在Primary資料庫上處理請求。
   2. 協調其他相關資料庫上的DMON程式處理相應的請求。
   3. 更新本地系統中的配置檔案。
   4. 與其他資料庫上的DMON程式通訊以更新各自的配置檔案。

每組配置檔案中可以包含多個broker配置,但是每個資料庫只會維護一組配置檔案,因此在RAC環境中,配置檔案是由組成這個RAC的各個instance共享的。DMON程式負責各個資料庫之間配置檔案的同步工作。

DMON程式通過配置檔案中設定的資料庫的引數來控制資料庫的行為,這些屬性通常都和資料庫的某個DG相關的初始化引數相關聯,在通過OEM或 DGMGRL修改這些屬性的時候,這些屬性記錄會先儲存在配置檔案中,然後DMON程式同時也會對相關資料庫的引數進行修改,這就要求我們在配置資料庫的時候必須使用SPFILE,保證DMON修改之後的引數能保留下來。
使用broker的準備清單

在使用Data Guard broker之前需要確定下面這些條件都已存在:

    * 必須使用spfile,這樣再通過DGMGRL/OEM修改資料庫引數之後能夠儲存下來。
    * 設定資料庫初始化引數DG_BROKER_START為true,這樣保證每次資料庫起來的時候DMON程式也會自動起來。
    * 當使用RAC環境的時候要確保引數DG_BROKER_CONFIG_FILEn都指向一個所有例項都能訪問的共享位置。
    * 當不適用Oracle預設埠啟動資料庫時必須設定LOCAL_LISTENER引數以保證service name <db_unique_name>_DGB.<db_domain>能被正確的註冊。
    * 在listener.ora中靜態的新增service name db_unique_name_DGMGRL.db_domain的註冊,這個service name會在DGMGRL重啟資料庫的時候用到,通過DGMGRL重啟資料庫時DMON程式會先將資料庫關閉,然後DGMGRL再用service name _DGMGRL.db_domain通過listener連線到資料庫,再發出啟動的命令,新增方法如下:

LISTENER = (DESCRIPTION =
   (ADDRESS_LIST=(ADDRESS=(PROTOCOL=tcp)(HOST=host_name)
   (PORT=port_num))))
SID_LIST_LISTENER=(SID_LIST=(SID_DESC=(SID_NAME=sid_name)
   (GLOBAL_DBNAME=db_unique_name_DGMGRL.db_domain)
   (ORACLE_HOME=oracle_home)))

    * 所有資料庫都必須是在mount狀態下才能被broker管理,RAC環境中選項START_OPTIONS必須設定為MOUNT,設定命令如下:

srvctl add database -d db_unique_name -o $oracle_home -s mount
or
srvctl modify database -d db_unique_name -o $oracle_home -s mount

    * 主資料庫必須執行在ARCHIVELOG模式下。
    * COMPATIBLE引數必須設定為9.2.0.1.0或更高,同時要保證所有的資料庫包括Primary和standby設定是一致的,不一致的話會導致redo transport services無法正確的傳輸日誌。

本文轉載至:http://hi.baidu.com/javenzhen/blog/item/5943cf38e83844f93a87ceb0.html,感謝作者分享!

相關文章