问题的现像: 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同步失败。