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组成
Oracle Data Guard broker基本组成部分:
图片来自Data Guard broker |
broker的组成主要分成两大部分,分别是:
- OEM(Oracle Enterprise Manager):图形化的Oracle管理工具,提供了多个向导功能方便DG的管理工作。
- DGMGRL(Data Guard command-line interface): 命令行管理界面,可以通过命令很方便的操作以及监控数据库,命令列表见文档。
- 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实际上会进行下面的操作:
- 在Primary数据库上处理请求。
- 协调其他相关数据库上的DMON进程处理相应的请求。
- 更新本地系统中的配置文件。
- 与其他数据库上的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连接到数据库,再发出启动的命令,添加方法如下:
( 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,设置命令如下:
or
srvctl modify database - d & lt ; db_unique_name & gt ; - o & lt ; $ oracle_home & gt ; - s mount
- 主数据库必须运行在ARCHIVELOG模式下。
- COMPATIBLE参数必须设置为9.2.0.1.0或更高,同时要保证所有的数据库包括Primary和standby设置是一致的,不一致的话会导致redo transport services无法正确的传输日志
参考至:http://www.dbabeta.com/2009/learn-data-guard-broker_basics.html
如有错误,欢迎指正
邮箱:czmcj@163.com