Data Guard broker概述
Oracle Data Guard 是Oracle数据库高可用(HA)解决方案中的一个重要组成部分,欧博abg设置其可以帮助管理组织,确保业务连续性,,减少各种可以影响企业的计划和计划外停机时间。Oracle Data Guard 是一个管理,监控和自动化软件就的基础设施,使用一个生产数据库和一个或多个备份数据库来保护你的数据,否则失败,错误,和损坏可能会破坏你的数据库。其通过自动化的创建,管理和监控数据库和Data Guard配置的组件来保护关键的数据。它的自动过程维护一个Oracle 生产数据库的副本(被称为备份数据库),可以在生产库进行常规维护被脱机或者损坏的时候使用。在一个Data Guard 配置中,一个生产库数据库被称为主库。一个备份数据库是主库的一个同步拷贝。使用主库的一个备份拷贝,你可以创建1到9个备份数据库。备份数据库和主库一起组成了一个Data Guard 配置。所有的Data Guard 备份数据库可以使最新的读访问到备份数据库,当redo 从主库上接收到并且被应用时。这使得所有的备份数据库是主库的优秀候选库,支持只读查询和报告。
Data Guard broker是建立在Data Guard基础上的一个对Data Guard配置,是一个分布式管理框架,自动化和集中创建,维护,欧博官网和监控Data Guard 配置。在创建Data Gurad 配置之后,broker监控在配置中所有系统的活动,健康和可用性。
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管理
Data Guard broker组成
Oracle Data Guard broker基本组成部分:
图片来自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)
(PORT=port))))
SID_LIST_LISTENER=(SID_LIST=(SID_DESC=(SID_NAME=sid)
(GLOBAL_DBNAME=db_unique_name)
(ORACLE_HOME=oracle_home)))
所有数据库都必须是在mount状态下才能被broker管理,RAC环境中选项START_OPTIONS必须设置为MOUNT,设置命令如下:
srvctl add database -d db_unique_name -o $oracle_home -s mount
orsrvctl modify database -d db_unique_name -o $oracle_home -s mount
主数据库必须运行在ARCHIVELOG模式下。
COMPATIBLE参数必须设置为9.2.0.1.0或更高,同时要保证所有的数据库包括Primary和standby设置是一致的,不一致的话会导致redo transport services无法正确的传输日志。