随后查看了一些文章,大概说是由于断档导致,而且还不能进行正常切换,要恢复丢失了的归档日志到备库。
---收集了一些关于DG中主备库的 Switchover_Status:
NOT ALLOWED | 当前的数据库不是带有备用数据库的主数据库 |
PREPARING DICTIONARY | 该逻辑备用数据库正在向一个主数据库和其他备用数据库发送它的重做数据,以便为切换做准备 |
PREPARING SWITCHOVER | 接受用于切换的重做数据时,逻辑备用配置会使用它 |
RECOVERY NEEDED | 备用数据库还没有接收到切换请求 |
SESSIONS ACTIVE | 在主数据库中存在活动的SQL会话;在继续执行之前必须断开这些会话 |
SWITCHOVER PENDING | 适用于那些已收到主数据库切换请求但是还没有处理该请求的备用数据库 |
SWITCHOVER LATENT | 切换没有完成并返回到主数据库 |
TO LOGICAL STANDBY | 主数据库已经收到了来自逻辑备用数据库的完整的字典 |
TO PRIMARY | 该备用数据库可以转换为主数据库 |
TO STANDBY | 该主数据库可以转换为备用数据库 |
----引用出现过类似情况案例的博文:
---博主在进行切换过程中,已经把主库切换成备库后原备库的Switchover_Status为 SWITCHOVER PENDING:
SQL>alter database commit to switchover to physical standby with session shutdown;并且shutdown immediate;startup mount;
这时,在standby上查看switchover status:
SQL>select switchover_status from v$database;
SWITCHOVER_STATUS
---------------------------------
SWITCHOVER PENDING
居然显示为pending!这说明这个standby已经接收到了primary传来的to primary的通知,但是还没有执行。
那么为什么没有执行呢?通过v$archived_log我们可以找到答案。
SQL>select dest_id,sequence#,archived,applied from v$archived_log order by 1,2;
可以看到目前dest_id为2也就是这个备库上有日志号为28的log还没有apply,继续跟踪alert log,看到它说:
ORA-00314: log 5 of thread 1,expedted sequence# 28 doesn't match 0
这里提示我们28这个日志不存在!去standby的log_archive_dest_1去找一找,果然没有找到28的日志。于是我们可以通过拷贝,并注册:
$cp primary/1_28_803392039.log standby/
SQL>alter database register logfile '1_28_803392039.log';
System altered.
这是再去看alert log,发现备库成功切换成新主库。
--上面提到的那种情况就是说是由于备库断档原因导致备库的Switchover_Status为SWITCHOVER PENDING。
但在我的案例中,情况有所不一样,我的DG备库情况是刚从failover切换中把原主库恢复成为新备库,就出现了
备注的Switchover_Status为SWITCHOVER PENDING。
----当时的主备库的切换状态:
---主库:
SQL> select open_mode,protection_mode,switchover_status,database_role from v$database;
OPEN_MODE PROTECTION_MODE SWITCHOVER_STATUS DATABASE_ROLE
-------------------- -------------------- -------------------- ----------------
READ WRITE MAXIMUM PERFORMANCE SESSIONS ACTIVE PRIMARY
---备库:
SQL> select open_mode,protection_mode,switchover_status,database_role from v$database;
OPEN_MODE PROTECTION_MODE SWITCHOVER_STATUS DATABASE_ROLE
-------------------- -------------------- -------------------- ----------------
READ ONLY WITH APPLY MAXIMUM PERFORMANCE SWITCHOVER PENDING PHYSICAL STANDBY
--我最后去核查归档,发现主备库都没有断档情况,所有被传输到备库的归档日志都成功被应用,也就是说不是断档导致。
后面我还尝试做了主备库之间角色的切换,结果是正常切换成功。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31392094/viewspace-2135699/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/31392094/viewspace-2135699/