standby log的异常状态致使DG数据同步异常显示failure destination

问题的现像: 1.主库的状态一直显示是failure destion select switchover_status from v$database        failure destination         2.主库的归档日志不能即时传递至备库,重启备库才能把没传过来的日志伟递到备库。而且传送完以后,仍然主库的switchover_status 仍然显示是failure destinnation 3.主库的alert.log显示   eat failed to connect to standby 'STANDBY'. Error is 12514. 2016-08-31 15:07:40.359000 +08:00 Error 12514 received logging on to the standby PING[ARC2]: Heartbeat failed to connect to standby 'STANDBY'. Error is 12514.     备库显示:   RFS[9]: Assigned to RFS process 19780 RFS[9]: No standby redo logfiles created for thread 1 RFS[9]: No standby redo logfiles selected (reason:7)       解决办法:        初步觉得是密码文件问题: 复制主库的密码文件至备库,发现仍然不显示一样的问题 在主备上均可以正常运行如下代码 主库: sqlplus zabbix/zabbix@primary sqlplus zabbix/zabbix@standby 备库 sqlplus zabbix/zabbix@primary sqlplus zabbix/zabbix@standby 都是正常登陆,说明listener 是没有问题. 因此不是lisenter 问题,不是密码文件问题,也不是网络链接问题,DG参数反复检查没问题,那么问题出在哪? 查看备库的alert.log 一些记录以下:   备库显示:   RFS[9]: Assigned to RFS process 19780 RFS[9]: No standby redo logfiles created for thread 1 RFS[9]: No standby redo logfiles selected (reason:7) 明明是有standby redo logfile 的 SQL> select group#,bytes/1024/1024,status from v$standby_log ;     GROUP# BYTES/1024/1024 STATUS ---------- --------------- ----------          4             150 UNASSIGNED          5             150 UNASSIGNED          6             150 UNASSIGNED          7             150 UNASSIGNED ADG是要使用standby redo logfile 来经过主库的online redo logfile 来同步数据的,同步时这里的状态是active 将备库的standby redo logfile 删除重建,而且大小与主库的redo logfile 一致 SQL> alter system set standby_file_management=manual ; 系统已更改。 SQL>   alter database drop standby logfile group 4; 数据库已更改。 SQL>   alter database drop standby logfile group 5; 数据库已更改。 SQL>   alter database drop standby logfile group 6 ; 数据库已更改。 SQL> alter database add standby logfile group 4 ('E:\LMIS\LOG\STDREDO04.LOG') si ze 500M reuse; 数据库已更改。 SQL> alter database add standby logfile group 5 ('E:\LMIS\LOG\STDREDO05.LOG') si ze 500M reuse; 数据库已更改。 SQL> alter database add standby logfile group 6 ('E:\LMIS\LOG\STDREDO06.LOG') si ze 500M reuse; 数据库已更改。 SQL>   alter database drop standby logfile group 7 ; 数据库已更改。 SQL> alter database add standby logfile group 7 ('E:\LMIS\LOG\STDREDO07.LOG') si ze 500M reuse; 数据库已更改。 SQL> alter system set standby_file_management=auto ; 系统已更改。 SQL> select group#,member from v$logfile order by group#   2  /     GROUP# MEMBER ---------- ----------------------------------------          1 E:\LMIS\LOG\REDO01B.LOG          1 E:\LMIS\LOG\REDO01.LOG          2 E:\LMIS\LOG\REDO02.LOG          2 E:\LMIS\LOG\REDO02B.LOG          3 E:\LMIS\LOG\REDO03.LOG          3 E:\LMIS\LOG\REDO03B.LOG          4 E:\LMIS\LOG\STDREDO04.LOG          5 E:\LMIS\LOG\STDREDO05.LOG          6 E:\LMIS\LOG\STDREDO06.LOG          7 E:\LMIS\LOG\STDREDO07.LOG 已选择10行。 SQL> select * from v$managed_log ; select * from v$managed_log               * 第 1 行出现错误: ORA-00942: 表或视图不存在 SQL> desc v$standby ERROR: ORA-04043: 对象 v$standby 不存在 SQL> desc v$standby_log  名称                                      是否为空? 类型  ----------------------------------------- -------- ----------------------------  GROUP#                                             NUMBER  DBID                                               VARCHAR2(40)  THREAD#                                            NUMBER  SEQUENCE#                                          NUMBER  BYTES                                              NUMBER  BLOCKSIZE                                          NUMBER  USED                                               NUMBER  ARCHIVED                                           VARCHAR2(3)  STATUS                                             VARCHAR2(10)  FIRST_CHANGE#                                      NUMBER  FIRST_TIME                                         DATE  NEXT_CHANGE#                                       NUMBER  NEXT_TIME                                          DATE  LAST_CHANGE#                                       NUMBER  LAST_TIME                                          DATE SQL> select group#,status from v$standby_log ;     GROUP# STATUS ---------- ----------          4 UNASSIGNED          5 ACTIVE          6 UNASSIGNED          7 UNASSIGNED SQL> alter database recover managed standby database using current logfile disco nnect from session; 数据库已更改。 SQL>  select process,status,sequence# from v$managed_standby ; PROCESS   STATUS        SEQUENCE# --------- ------------ ---------- ARCH      CONNECTED             0 ARCH      CONNECTED             0 ARCH      CLOSING           45707 ARCH      CLOSING           45708 RFS       IDLE                  0 RFS       IDLE                  0 RFS       IDLE                  0 RFS       IDLE              45709 MRP0      APPLYING_LOG      45709 已选择9行。 SQL> / PROCESS   STATUS        SEQUENCE# --------- ------------ ---------- ARCH      CONNECTED             0 ARCH      CONNECTED             0 ARCH      CLOSING           45709 ARCH      CLOSING           45708 RFS       IDLE                  0 RFS       IDLE                  0 RFS       IDLE                  0 RFS       IDLE              45710 MRP0      APPLYING_LOG      45710 已选择9行。 如上所示ADG恢复正常 小结: standby redo logfile 的异常常常会致使ADG同步失败。