DG Broker(Data Guard Broker)是Oracle数据库提供的一个集中式管理框架,用于简化Data Guard配置的创建、监控和维护。它将主库(Primary)和所有备库(Standby)视为一个整体系统,通过命令行工具
dgmgrl
或Oracle Enterprise Manager实现自动化管理。 接下来介绍如何配置使用
DG Broker。
1)broke r 配置
可以在主库 / 备库 / 额外一台上配置
修改监听:
vi $ORACLE_HOME/network/admin/listener.ora
主库(新增如下代码):
SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME= orcl) (ORACLE_HOME =/oracle/app/product/11.2.0/db_1) (SID_NAME =orcl) ) (SID_DESC = (GLOBAL_DBNAME=orcl_DGMGRL) (ORACLE_HOME =/oracle/app/product/11.2.0/db_1) (SID_NAME =orcl) ) )
备库(新增):
SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME= orcl_std) (ORACLE_HOME =/oracle/app/product/11.2.0/db_1) (SID_NAME =orcl) ) (SID_DESC = (GLOBAL_DBNAME=orcl_std_DGMGRL) (ORACLE_HOME =/oracle/app/product/11.2.0/db_1) (SID_NAME =orcl) ) )
重启监听
lsnrctl reload
用tnsping 进行检验是否配置正确。
2 )参数设置( 主备都要)
SQL> show parameter dg_broker_start NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ dg_broker_start boolean FALSE SQL> alter system set dg_broker_start =true scope=both;
3 )配置 DG Broken
Oracle 用户:
dgmgrl
执行命令
DGMGRL> connect sys/oracle
注意,这里有个 bug :无论用什么密码连进去都是可以的,但最后切换时会报错
DGMGRL> help create
DGMGRL> create configuration dg as primary database is orcl connect identifier is orcl;
前面的 orcl 是 db_unique_name, 后面的是 orcl 为连接字符串
DGMGRL> help add DGMGRL> add database orcl_std as connect identifier is orcl_std;
查看配置文件:
show configuration
启用配置文件:
enable configuration
停用配置:
disable configuration
显示数据库:
show database verbose orcl;
一键切换 switchover :
Switchover to 备库uniquename;
显示数据库状态报告:
show database orcl statusreport; --------------------------------------------------------------------- STATUS REPORT INSTANCE_NAME SEVERITY ERROR_TEXT WARNING ORA-16714: the value of property ArchiveLagTarget is inconsistent with the database setting WARNING ORA-16714: the value of property LogArchiveMaxProcesses is inconsistent with the database setting WARNING ORA-16714: the value of property LogArchiveMinSucceedDest is inconsistent with the database setting
-------------------------------------------------------------------------
解决方法:重新定义以上参数
DGMGRL> edit database dbsty set property ArchiveLagTarget=0; DGMGRL> edit database orcl set property LogFileNameConvert='/oracle/app/oradata/orcl/,/oracle/app/oradata/orcl/'; DGMGRL> edit database orcl_std set property LogFileNameConvert='/oracle/app/oradata/orcl/,/oracle/app/oradata/orcl/';
注意: LogFileNameConvert 、 LogFileNameConvert 这两个参数 dgmgrl 读不到,需要重新配置一下
从主库连到备库的方法:
sqlplus sys/oracle@orcl as sysdba sqlplus sys/密码@tns中的名称 as sydba
检测是否开启 DG Broken :
ps -ef | grep dmon
前提:
1. 很重要,搭建 dg broker 之前一定一定要使备库日志应用与主库一致;
2.DG broken 需要创建备库日志组 日志大小相同 推荐备库组数 = 主库组数 +1
