总得来说 DG BROKER 这工具配起来不难, 它继承了一惯的风格. 就是网络和命名的问题.
1 数据库唯一名称 DB_UNIQUE_NAME 要注意大小写
在创建配置文件时候和加入备用库的时候
CREATE CONFIGURATION <configurationname> AS
PRIMARY DATABASE IS <database name>
CONNECT IDENTIFIER IS <connect identifier>;
ADD DATABASE<database name> <--数据库唯一名称
[AS CONNECT IDENTIFIERIS <connect identifier>] <--TNSNAME
[MAINTAINED AS{PHYSICAL|LOGICAL}];
如果是大写的话 必须带上引号!
在使用过程中 比如 enable database 'DBMAST'
2 在操作过程中必须连上一台服务器 CONNECT SYS/ORCLE@DBMAST;
这样才能从数据库获取属性和配置文件核对. 才是的配置文件生效,并且及时发现问题.
3 11G R2 会动态注册个服务 DBMAST_DGB
而我的备库没有开启动态注册 DBSALVE_DGB 没有注册到监听上,当它切换成主库后,备库恢复会发某名的问题
4 配置文件中的数据库属性 有个连接属性 StaticConnectIdentifier
这个属性要多注意下,小心写错.
另外 SERVICE_NAME=DBSALVE_DGMGRL.shark.com 默认情况是 SERVICE_NAME=DBSALVE_DGMGRL
这个需要监听配置增加个(GLOBAL_DBNAME = DBSALVE_DGMGRL.shark.com)
5 因为DG_BROKER 是后期加入的功能,因此不会修改目前的监听和网络配置
在这中情况下只会增加
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = DBSALVE_DGMGRL.shark.com)
(ORACLE_HOME = /u01/app/software/oracle/product/11.2.0/db_1)
(SID_NAME = DBSALVE)
)
(SID_DESC =
(GLOBAL_DBNAME = DBSALVE)
(ORACLE_HOME = /u01/app/software/oracle/product/11.2.0/db_1)
(SID_NAME = DBSALVE)
)
)
TNS_NAME.ORA 也增加
STBDGMGR =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.202)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = DBSALVE_DGMGRL.shark.com)
)
)
MABDGMGR =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.200)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = DBMAST_DGMGRL.shark.com)
)
)
这都是因为配置文件数据库属性: DGConnectIdentifier = 'stbdgmgr'
这个属性必须TNS_NAME 对应的 服务 DBMAST_DGMGRL
6 在FAILE OVER 后 重置主库到备库后
reinstate database 'DBMAST'
它会修改 set log_archive_dest_2 改成STBDGMGER 网络命名 当这个命名没加进 log_archive_config =" dg_config=(DBMAST,DBSALVE,DBSA LVE2)"
所以要人工修改回来 alter system set log_archive_dest_2='service=DBSALVE LGWR SYNC AFFIRM db_unique_name=DBSALVE valid_for=(all_logfiles,primary_role)' scope=both;
最后说 做了两遍自动failed over 一切都好起来了.