天天看點

Data Guard broker系列之一:Data Guard Broker基礎

data guard broker概覽

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優勢所在:

  使用broker 不使用broker

一般

将primary資料庫與全部standby資料庫看成一個整體進行管理

必須對primary資料庫和各個standby進行單獨的操作。

建立standby

通過使用oem可以輕松的建立一個新的standby

所有操作必須手工進行:拷貝資料/控制/日志檔案,設定初始化參數等等

配置和管理

可以在一個地方對所有的資料庫進行統一的配置和管理,這些配置會被自動同步到各個資料庫中

必須手工的進行配置,然後對primary和standby進行單獨的管理

控制

- 使用一個簡單的指令進行failover和switchover的操作

- 通過配置可以自動的進行failover操作

- 必須使用多個sqlplus才能完成對資料庫的管理

監控

- 自動持續對資料庫配置,資料庫狀态以及其他參數進行自動管理

- 提供詳細的資料庫狀态報告

- 和oem events內建

- 沒有統一的視圖進行管理,隻能通過fixed view一個個進行檢視

– 自定義oem events管理

oracle data guard broker基本組成部分:

Data Guard broker系列之一:Data Guard Broker基礎

圖檔來自data guard broker

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

用戶端元件用戶端元件是一個管理者與broker伺服器端元件的接口,使用者通過用戶端來發出指令對伺服器端的行為進行控制。用戶端元件由oem和dgmgrl兩個組成

oem(oracle enterprise manager):圖形化的oracle管理工具,提供了多個向導功能友善dg的管理工作。

伺服器端元件在每個配置了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配置資訊并儲存到配置檔案中。

資料庫配置對象:資料庫配置是一個包含多個資料庫資訊的集合,這些資料庫資訊包括資料庫對象目前的形态、狀态、及屬性設定。同時這個集合可以同時混合了實體standby和邏輯standby。

資料庫對象:資料庫對象指的是primary和standby資料庫。一般情況下一個資料庫對象隻包含一個執行個體,但是在rac系統中一個資料庫對象會包含多個執行個體。

broker通過将一個dg中的primary資料庫及所有的standby資料庫邏輯的組成一個邏輯組來進行集中管理,是以每個broker配置 就是一個資料庫的邏輯集合,它包含了組成資料庫的日志傳輸服務、日志應用服務等邏輯的對象。dba可以broker來控制這個邏輯集合的配置,改變它的配 置,同時還能監控這個組的整體健康狀态。

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

在primary資料庫上處理請求。

協調其他相關資料庫上的dmon程序處理相應的請求。

更新本地系統中的配置檔案。

與其他資料庫上的dmon程序通訊以更新各自的配置檔案。

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

dmon程序通過配置檔案中設定的資料庫的參數來控制資料庫的行為,這些屬性通常都和資料庫的某個dg相關的初始化參數相關聯,在通過oem或 dgmgrl修改這些屬性的時候,這些屬性記錄會先儲存在配置檔案中,然後dmon程序同時也會對相關資料庫的參數進行修改,這就要求我們在配置資料庫的 時候必須使用spfile,保證dmon修改之後的參數能保留下來。

在使用data guard broker之前需要确定下面這些條件都已存在:

必須使用spfile,這樣再通過dgmgrl/oem修改資料庫參數之後能夠儲存下來。

設定資料庫初始化參數dg_broker_start為true,這樣保證每次資料庫起來的時候dmon程序也會自動起來。

當使用rac環境的時候要確定參數dg_broker_config_filen都指向一個所有執行個體都能通路的共享位置。

在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 & lt ;db_unique_name & gt; -o & lt; $oracle_home & gt; -smount

or

srvctl modify database -d & lt;db_unique_name & gt; -o & lt; $oracle_home & gt; -smount

主資料庫必須運作在archivelog模式下。

compatible參數必須設定為9.2.0.1.0或更高,同時要保證所有的資料庫包括primary和standby設定是一緻的,不一緻的話會導緻redo transport services無法正确的傳輸日志

參考至:http://www.dbabeta.com/2009/learn-data-guard-broker_basics.html

如有錯誤,歡迎指正

郵箱:[email protected]

作者:czmmiao  文章出處:http://czmmiao.iteye.com/blog/2124741