oracle dg库switchover主备切换

前端之家收集整理的这篇文章主要介绍了oracle dg库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切换完成;

猜你在找的Oracle相关文章