加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

oracle dg库switchover主备切换

发布时间:2020-12-12 15:46:15 所属栏目:百科 来源:网络整理
导读:switchover 切换:主库与备库数据同步正常情况下的切换,主要用于 主备维护、切换演练等; failover 切换:主库与备库在数据未同步情况下的强制切换,主要用 于主库宕机、故障情况下切换; 一、switchover切换 主库与备库数据同步,且正常运行,将主库与备库

switchover

切换:主库与备库数据同步正常情况下的切换,主要用于

主备维护、切换演练等;

failover

切换:主库与备库在数据未同步情况下的强制切换,主要用

于主库宕机、故障情况下切换;

一、switchover切换

主库与备库数据同步,且正常运行,将主库与备库的角色互换;

切换前,务必检查当前主库与备库的归档是否是同步的,确认同步后再执行切换

switchover切换 主库操作

第1步、主库停止监听

lsnrctlstop

(理论上是不需要停止主库监听的,但是实际上如果切换时数据库繁忙,还有大量会话连接操作数据库,在执行切换操作的时候需要等待oracle执行sessionshutdown,有时会很慢,这里建议直接停止监听,停止后,还可以通过查ps-ef|grep"LOCAL=NO",查看进行,LOCAL=NO是客户端连接进程,并kill-9杀掉这些没有释放的连接,再执行下面的切换)

ps-ef|grep"LOCAL=NO" | grep -v grep | awk '{print $2}' | xargs kill -9

第2步、主库执行切换

主库状态角色确认

selectswitchover_statusfromv$database;

查询结果分两种情况:

第一种情况

SQL>selectswitchover_statusfromv$database;

SWITCHOVER_STATUS

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

SESSIONSACTIVE

如果查询结果是SESSIONSACTIVE:执行下面的:

SQL>alterdatabasecommittoswitchovertophysicalstandbyw

ithsessionshutdown;

第二种情况

SQL>selectswitchover_statusfromv$database;

SWITCHOVER_STATUS

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

TOSTANDBY

如果查询结果是:TOSTANDBY执行下面的:

SQL>alterdatabasecommittoswitchovertophysicalstandby;

第3步、关闭主库

SQL>shutdownimmediate

ORA-01507:databasenotmounted

ORACLEinstanceshutdown.

第4步、主库启动到mount状态

SQL>startupmount

ORACLEinstancestarted.

TotalSystemGlobalArea9646899200bytes

FixedSize2087000bytes

VariableSize822085544bytes

DatabaseBuffers8808038400bytes

RedoBuffers14688256bytes

Databasemounted.

第5步、主库确定切换后的状态

SQL>selectopen_mode,database_role,switchover_statusfromv$database;

OPEN_MODEDATABASE_ROLESWITCHOVER_STATUS

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

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

MOUNTEDPHYSICALSTANDBYSESSIONSACTIVE

数据库角色变成了PHYSICALSTANDBY(物理备库),完成了主库的角色转换;

第6步、主库启动监听

lsnrctlstart

switchover切换备库操作

备库执行切换为主库模式

第1步、备库状态角色确认

SQL>selectswitchover_statusfromv$database;

第一种情况

SQL>selectswitchover_statusfromv$database;

SWITCHOVER_STATUS

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

TOPRIMARY

如果状态为TOPRIMARY则执行下面的语句:

SQL>alterdatabasecommittoswitchovertoprimary;

第二种情况

SQL>selectswitchover_statusfromv$database;

SWITCHOVER_STATUS

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

SESSIONSACTIVE

如果状态是SESSIONSACTIVE则执行下面的语句:

alterdatabasecommittoswitchovertoprimarywithsessionshutdown;

第2步、备库打开

alterdatabaSEOpen;

第3步、备库状态角色确认

SQL>selectopen_mode,switchover_statusfromv$database;

OPEN_MODEDATABASE_ROLESWITCHOVER_STATUS

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

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

READWRITEPRIMARY

SESSIONSACTIVE

第4步、原主库启动同步

在原主库上执行:

SQL>ALTER DATABASE OPEN;

SQL>ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;

switchover切换完成;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读