一、问题描述
1.查看broker日志发现报错

tail -f drcorcl.log
>> Starting Data Guard Broker bootstrap <<
Broker Configuration File Locations:
      dg_broker_config_file1 = "+DATADG/orcl/dr1.dat"
      dg_broker_config_file2 = "+DATADG/orcl/dr2.dat"
2017-12-02 17:08:50.847                      DMON: Attach state object
2017-12-02 17:08:50.941                      DMON: cannot open configuration file "+DATADG/orcl/dr2.dat", retrying
2017-12-02 17:08:51.952                      DMON: cannot open configuration file "+DATADG/orcl/dr2.dat"
2017-12-02 17:08:51.954                        ORA-17503: ksfdopn:2 Failed to open file +DATADG/orcl/dr2.dat
2017-12-02 17:08:51.954                        ORA-15173: entry 'dr2.dat' does not exist in directory 'orcl'
2017-12-02 17:08:51.954                      DMON: Error opening "+DATADG/orcl/dr2.dat", error = ORA-16572
2017-12-02 17:08:51.954                      DMON: Establishing "+DATADG/orcl/dr1.dat" as the more current file
2017-12-02 17:08:51.958                      DMON: rfafoGetLocks reinitializing dubious PMYSHUT lock value block contents: sts=0, flags=0x0, spare1=0x0, spare2=0x0, cksm=0x0, rndm=0x0
2017-12-02 17:08:51.958                      DMON: Broker state reconciled, version = 0, state = 00000000
2017-12-02 17:08:51.958                      DMON: Broker State Initialized
2017-12-02 17:08:51.958                            Version = 1
2017-12-02 17:08:51.958                            State = 00000000
2017-12-02 17:08:51.958                      DMON: Entered rfm_get_chief_lock() for CTL_BOOTSTRAP, reason 2
2017-12-02 17:08:51.959 7fffffff           0 DMON: Entered rfm_get_chief_lock() for CTL_BOOTSTRAP, reason 0
2017-12-02 17:08:55.971 7fffffff           0 DMON: start task execution: broker initialization
2017-12-02 17:08:55.971                      DMON: Boot configuration (0.0.0), loading from "+DATADG/orcl/dr1.dat"
2017-12-02 17:08:55.979                      DMON Registering service orcl_DGB with listener(s)
2017-12-02 17:08:55.980                      DMON: Executing SQL [ALTER SYSTEM REGISTER]
2017-12-02 17:08:55.980                      SQL [ALTER SYSTEM REGISTER] Executed successfully
12/02/2017 17:08:55
Broker Configuration:       "dg_config"
      Protection Mode:            Maximum Availability
      Fast-Start Failover (FSFO): Disabled, flags=0x0, version=0
      Primary Database:           orcl (0x01010000)

2.查看broker是否正常

DGMGRL> show configuration;

Configuration - dg_config

  Protection Mode: MaxAvailability
  Members:
  orcl   - Primary database
    orcldg - Physical standby database 

Fast-Start Failover: DISABLED

Configuration Status:
SUCCESS   (status updated 57 seconds ago)       --正常可用。
因为设置了两个broker文件,所以损坏了一个文件没所谓。

二、处理过程

1.停掉dmon进程

SQL> alter system set dg_broker_start=false;
System altered.

2.复制配置文件

    $asmcmd -p
lsASMCMD [+] > 
DATADG/
ASMCMD [+] > cd datadg
ASMCMD [+datadg] > ls
ASM/
ORCL/
arcch/
arch/
orapwasm
ASMCMD [+datadg] > cd orcl
ASMCMD [+datadg/orcl] > ls
ARCHIVELOG/
CONTROLFILE/
DATAFILE/
DATAGUARDCONFIG/
ONLINELOG/
PARAMETERFILE/
TEMPFILE/
dr1.dat
ASMCMD [+datadg/orcl] > cp dr1.dat dr2.dat  

3.启动dmon

SQL> alter system set dg_broker_start=true;

System altered.
SQL> !ps -ef|grep dmon
oracle   31088     1  0 17:40 ?        00:00:00 ora_dmon_orcl
oracle   31120 25505  0 17:40 pts/0    00:00:00 /bin/bash -c ps -ef|grep dmon
oracle   31122 31120  0 17:40 pts/0    00:00:00 grep dmon

SQL> 

4.查看broker日志

12/02/2017 17:38:05
Data Guard Broker shutting down
RSM0 successfully terminated
2017-12-02 17:38:08.711                      >> DMON Process Shutdown <<
2017-12-02 17:38:09.710                      Fore Deregistering service orcl_DGB with listener(s)
2017-12-02 17:38:09.711                      Fore: Executing SQL [ALTER SYSTEM REGISTER]
2017-12-02 17:38:09.711                      SQL [ALTER SYSTEM REGISTER] Executed successfully
2017-12-02 17:40:04.954                      LGWR: Creating Data Guard Broker Monitor Process (DMON)
2017-12-02 17:40:07.977                      >> Starting Data Guard Broker bootstrap <<
2017-12-02 17:40:07.977                      Broker Configuration File Locations:
2017-12-02 17:40:07.977                            dg_broker_config_file1 = "+DATADG/orcl/dr1.dat"
2017-12-02 17:40:07.977                            dg_broker_config_file2 = "+DATADG/orcl/dr2.dat"
2017-12-02 17:40:07.977                      DMON: Attach state object
2017-12-02 17:40:07.978                      DMON: rfafoGetLocks reinitializing dubious PMYSHUT lock value block contents: sts=0, flags=0x0, spare1=0x0, spare2=0x0, cksm=0x0, rndm=0x0
2017-12-02 17:40:07.978                      DMON: Broker state reconciled, version = 0, state = 00000000
2017-12-02 17:40:07.978                      DMON: Broker State Initialized
2017-12-02 17:40:07.978                            Version = 1
2017-12-02 17:40:07.978                            State = 00000000
2017-12-02 17:40:07.978                      DMON: Entered rfm_get_chief_lock() for CTL_BOOTSTRAP, reason 2
2017-12-02 17:40:07.978 7fffffff           0 DMON: Entered rfm_get_chief_lock() for CTL_BOOTSTRAP, reason 0
2017-12-02 17:40:11.012 7fffffff           0 DMON: start task execution: broker initialization
2017-12-02 17:40:11.013                      DMON: Boot configuration (0.0.0), loading from "+DATADG/orcl/dr1.dat"
2017-12-02 17:40:11.027                      DMON Registering service orcl_DGB with listener(s)
2017-12-02 17:40:11.027                      DMON: Executing SQL [ALTER SYSTEM REGISTER]
2017-12-02 17:40:11.027                      SQL [ALTER SYSTEM REGISTER] Executed successfully
12/02/2017 17:40:11
Broker Configuration:       "dg_config"
      Protection Mode:            Maximum Availability
      Fast-Start Failover (FSFO): Disabled, flags=0x0, version=0
      Primary Database:           orcl (0x01010000)
12/02/2017 17:40:15
Version Check Results:
      Database orcldg returned ORA-00000
Creating process RSM0