博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
data guard switchover切换异常
阅读量:6818 次
发布时间:2019-06-26

本文共 3129 字,大约阅读时间需要 10 分钟。

查看DG数据库备份库发现,switchover_status为SWITCHOVER LATENT

SQL> select OPEN_MODE,PROTECTION_MODE,PROTECTION_LEVEL,SWITCHOVER_STATUS from v$database;

OPEN_MODE      PROTECTION_MODE            PROTECTION_LEVEL         SWITCHOVER_STATUS

----------           --------------------              --------------------             --------------------
MOUNTED         MAXIMUM PERFORMANCE   MAXIMUM PERFORMANCE   SWITCHOVER LATENT

发现是switchover latent而不是to primary

 

这个问题是说切换处于pending模式,没有完成无法回到主库。当你查看ALERT日志时,也没有发现什么报错,是不是要继续等下去呢?其实不需要等待,出现这个问题的原因就是日志没有归档,所以备库与主库不一致,需要恢复。当备库恢复到和主库一致后,状态就会成为to_primary

 

验证一下这个问题是不是上面所说的原因,你可以继续在备库上执行下面这句

 

sys@standby>  ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY WITH SESSION SHUTDOWN;

 

ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY WITH SESSION SHUTDOWN

 

*

 

ERROR at line 1:

 

ORA-16139: media recovery required

 

这里提示需要介质恢复。

 

根据以上的分析和定位,我们要解决这个问题,需要在备库上切断应用,启用日志同步

 

SYS@standby> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

 

Database altered.

 

SYS@standby> SELECT SWITCHOVER_STATUS FROM V$DATABASE;

 

SWITCHOVER_STATUS

 

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

 

TO PRIMARY

 

显示为TO PRIMARY,这时看状态就正常了。

 

SYS@standby> alter database commit to switchover to primary with session shutdown;

 

Database altered.

 

SYS@standby> select database_role,switchover_status,open_mode from v$database;

 

DATABASE_ROLE SWITCHOVER_STATUS    OPEN_MODE

 

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

 

PRIMARY NOT ALLOWED      MOUNTED 

 

打开数据库

 

sys@standby>alter database open;

 

切换一下日志

 

sys@standby> alter system switch logfile ;

 

System altered.

 

再检查一下日志的状态

 

SYS@standby> select sequence#,standby_dest,archived,applied,status from v$archived_log;

 

SEQUENCE# STA ARC APPLIED   S

 

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

 

     4             NO  YES YES     A

 

     5             NO YES YES     A

 

      6             NO  YES YES     A

 

       7            NO  YES YES     A

 

 

发现都是YES,说明已经同步了。

 

二、FAILED DESTINATION状态

 

当备库切换为主库后,发现切换状态为FAILED DESTINATION

 

SYS@primary> select database_role,switchover_status,open_mode from v$database;

 

DATABASE_ROLE SWITCHOVER_STATUS    OPEN_MODE

 

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

 

PRIMARY FAILED DESTINATION   READ WRITE

 

发现是FAILED DESTINATION而不是to standby

 

这个问题说明主库连接备库有问题,可以具体查看一下ALERT日志,看看是怎么回事

 

Error 12541 received logging on to the standby

 

Check whether the listener is up and running.

 

Errors in file /u01/app/oracle/diag/rdbms/primary/primary/trace/primary_arc2_2546.trc:

 

ORA-12541: TNS:no listener

 

PING[ARC2]: Heartbeat failed to connect to standby 'standby'. Error is 12541.

 

这里说明备库的监听有问题,重启备库监听,再查状态就变成to standby了

 

SYS@primary> select database_role,switchover_status,open_mode from v$database;

 

DATABASE_ROLE SWITCHOVER_STATUS    OPEN_MODE

 

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

 

PRIMARY TO STANDBY      READ WRITE

 

当然导致FAILED DESTINATION的原因会有很多,比如log_archive_dest_2 参数的属性值还有口令文件的配置出错或者权限问题等。

 

Switchover_Status值的含义

 

NOT ALLOWED

当前的数据库不是带有备用数据库的主数据库
PREPARING DICTIONARY
该逻辑备用数据库正在向一个主数据库和其他备用数据库发送它的重做数据,以便为切换做准备
PREPARING SWITCHOVER
接受用于切换的重做数据时,逻辑备用配置会使用它
RECOVERY NEEDED
备用数据库还没有接收到切换请求
SESSIONS ACTIVE
在主数据库中存在活动的SQL会话;在继续执行之前必须断开这些会话
SWITCHOVER PENDING
适用于那些已收到主数据库切换请求但是还没有处理该请求的备用数据库
SWITCHOVER LATENT
切换没有完成并返回到主数据库
TO LOGICAL STANDBY
主数据库已经收到了来自逻辑备用数据库的完整的字典
TO PRIMARY
该备用数据库可以转换为主数据库
TO STANDBY
该主数据库可以转换为备用数据库

转载于:https://www.cnblogs.com/unixshell/p/3594264.html

你可能感兴趣的文章
想在vue、react中用es6,先知道这些必会的才行
查看>>
AJAX多级下拉联动【JSON方式】
查看>>
SQL更新错误JDBC batch update constraint [null]
查看>>
看图轻松理解数据结构与算法系列(希尔排序)
查看>>
【需求解决系列之一】移动卡片实现答题功能
查看>>
最全的Android 颜色透明度
查看>>
Spring Boot中使用WebSocket总结(三):使用消息队列实现分布式WebSocket
查看>>
世界上最贵的几幅画(纯属扯淡)
查看>>
iOS 面向协议封装全屏旋转功能
查看>>
js难点精解-----原型和原型链的关系和应用
查看>>
Framework 源码解析知识梳理(6) ContentProvider 源码解析
查看>>
函数式编程 - 玩转高阶回调函数
查看>>
从零实现Vue的组件库(五)- Breadcrumb 实现
查看>>
狙杀页面卡顿 —— Performance 指北
查看>>
客户端C++与前端js交互
查看>>
即时通讯框架T-io之WebSocket协议再之HelloWorld
查看>>
支付宝首页刷新的实现方案
查看>>
从实现后台商品属性代码说起,聊聊相关的思维!JS、模拟数据、桥梁
查看>>
zookeeper 高可用集群搭建
查看>>
JavaScript基础——深入学习async/await
查看>>