前提条件
修改参数
参数DG_BROKER_START设置为true
SQL> alter system set dg_broker_start=true; System altered.
这个参数可以联机改,主库备库都改。
SQL> show parameter dg_ NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ dg_broker_config_file1 string /home/oracle/app/oracle/produc t/11.2.0/dbhome_1/dbs/dr1orcld g.dat dg_broker_config_file2 string /home/oracle/app/oracle/produc t/11.2.0/dbhome_1/dbs/dr2orcld g.dat dg_broker_start boolean TRUE
修改dg_broker_config_file参数。这里就用默认的路径,也可以自己指定。如果是在RAC环境中,这个把这个文件把到共享的存储上面,如果有ASM可以放到ASM中。
在主库和备库的监听上实现静态注册
修改监听配置,主库:
[oracle@primary ~]$ cat /home/oracle/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.83.?)(PORT = 1521)) ) ) SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = orcl) (SID_NAME = orcl) (ORACLE_HOME =/home/oracle/app/oracle/product/11.2.0/dbhome_1) ) ( SID_DESC=(SID_NAME=orcl) (GLOBAL_DBNAME=orcl_DGMGRL) (ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_1) (ENVS="TNS_ADMIN=/home/oracle/app/oracle/product/11.2.0/dbhome_1/network/admin") ) )
备库
[oracle@standby ~]$ cat /home/oracle/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.83.235)(PORT = 1521)) ) ) SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = orcl) (SID_NAME = orcl) (ORACLE_HOME = /home/oracle/app/oracle/product/11.2.0/dbhome_1) ) ( SID_DESC=(SID_NAME=orcl) (GLOBAL_DBNAME=orcldg_DGMGRL) (ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_1) (ENVS="TNS_ADMIN=/home/oracle/app/oracle/product/11.2.0/dbhome_1/network/admin") ) )
创建配置
启用BROKER,在主库上登录dgmgrl。
[oracle@primary ~]$ dgmgrl DGMGRL for Linux: Version 11.2.0.1.0 - 64bit Production Copyright (c) 2000, 2009, Oracle. All rights reserved. Welcome to DGMGRL, type "help" for information. DGMGRL> connect sys Password: Connected.
先查看一下创建配置文件的语法:
DGMGRL> help create; Creates a broker configuration Syntax: CREATE CONFIGURATION <configuration name> AS PRIMARY DATABASE IS <database name> CONNECT IDENTIFIER IS <connect identifier>;
写面创建配置文件
DGMGRL> create configuration dg as primary database is orcl connect identifier is orcl; Configuration "dg" created with primary database "orcl"
创建完了检查一下,发现没有备库,而且配置文件没有被激活。
DGMGRL> show configuration Configuration - dg Protection Mode: MaxAvailability Databases: orcl - Primary database Fast-Start Failover: DISABLED Configuration Status: DISABLED
增加一个备库:
DGMGRL> add database orcldg as connect identifier is orcldg; Database "orcldg" added DGMGRL> show configuration Configuration - dg Protection Mode: MaxAvailability Databases: orcl - Primary database orcldg - Physical standby database Fast-Start Failover: DISABLED Configuration Status: DISABLED
激活配置文件,不然broker用不了。
DGMGRL> enable configuration
Enabled.
检查配置的详细信息:
DGMGRL> show database verbose orcl Database - orcl Role: PRIMARY Intended State: TRANSPORT-ON Instance(s): orcl Database Warning(s): ORA-16629: database reports a different protection level from the protection mode Properties: DGConnectIdentifier = 'orcl' ObserverConnectIdentifier = '' LogXptMode = 'SYNC' DelayMins = '0' Binding = 'optional' MaxFailure = '0' MaxConnections = '1' ReopenSecs = '300' NetTimeout = '30' RedoCompression = 'DISABLE' LogShipping = 'ON' PreferredApplyInstance = '' ApplyInstanceTimeout = '0' ApplyParallel = 'AUTO' StandbyFileManagement = 'auto' ArchiveLagTarget = '0' LogArchiveMaxProcesses = '4' LogArchiveMinSucceedDest = '1' DbFileNameConvert = '' LogFileNameConvert = '' FastStartFailoverTarget = '' StatusReport = '(monitor)' InconsistentProperties = '(monitor)' InconsistentLogXptProps = '(monitor)' SendQEntries = '(monitor)' LogXptStatus = '(monitor)' RecvQEntries = '(monitor)' HostName = 'primary' SidName = 'orcl' StaticConnectIdentifier = '(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=primary)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=orcl_DGMGRL)(INSTANCE_NAME=orcl)(SERVER=DEDICATED)))' StandbyArchiveLocation = '/home/oracle/app/oradata/orcl/archive' AlternateLocation = '' LogArchiveTrace = '0' LogArchiveFormat = '%t_%s_%r.arc' TopWaitEvents = '(monitor)' Database Status: WARNING DGMGRL>
注意参数StaticConnectIdentifier中SERVICE_NAME的命名规则是db_unique_name_DGMGRL.db_domain,如果在监听的配置文件中配置时不是这样的命名,需要手工修改StaticConnectIdentifier这个参数。
参考文档Oracle官方文档《Data Guard Broker》