日期:2014-05-16  浏览次数:20345 次

Oracle 11g Data Guard Error 16143 Heartbeat failed to connect to standby 处理方法


 

 

一.背景说明

 

前段时间一朋友在生产库上误操作,本来他是打算重启一下DG环境,结果在备库命令执行错误。

 

本应该执行

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL; 

 

结果朋友执行成了如下命令:

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH; 

 

中断了DG主备库的通信环境,这个finish是用来做Failover时用的。 当时让朋友在主库重新生成了一份standby controlfiles,然后copy到备库,在按正常模式启动就可以了。

   

    因为数据库识别主备库就是通过控制文件来的,所以理论上,只需要重新生成一份standby 控制文件就可以了。  后来朋友测试了一下,正常的拉起来了。

 

今天看到了当时的记录,就顺便模拟一下整个操作,顺便练练手。

 

 

 

二. 演示过程

 

2.1 DG 环境说明

OS: Oracle Linux6.3

DB: 11.2.0.3

 

SQL> select * from v$version;

 

BANNER

--------------------------------------------

Oracle Database 11g Enterprise EditionRelease 11.2.0.3.0 - 64bit Production

PL/SQL Release 11.2.0.3.0 - Production

CORE   11.2.0.3.0      Production

TNS for Linux: Version 11.2.0.3.0 -Production

NLSRTL Version 11.2.0.3.0 - Production

 

 

主库:

 

SQL> select open_mode from v$database;

 

OPEN_MODE

--------------------

READ WRITE

 

SQL>

SQL> set pagesize 200

SQL> select sequence#,applied fromv$archived_log order by sequence# desc;

 

 SEQUENCE# APPLIED

---------- ---------

       14 YES

       14 NO

       13 YES

       13 NO

       12 NO

       12 YES

       11 YES

       11 NO

       10 NO

       10 YES

        9 YES

        9 NO

        8 NO

        8 YES

        7 YES

        7 NO

        6 YES

        6 NO

        5 NO

        4 NO

 

20 rows selected.

 

 

备库:

SQL> select open_mode from v$database;

 

OPEN_MODE

--------------------

MOUNTED

 

SQL>

 

 

SQL> select sequence#,applied fromv$archived_log order by sequence# desc;

 

 SEQUENCE# APPLIED

---------- ---------

       14 YES

       13 YES

       12 YES

       11 YES

       10 YES

        9 YES

         8 YES

        7 YES

        6 YES

 

9 rows selected.

 

 

2.2 模拟故障

 

在备库执行如下命令:

SQL&g