一、问题现象
备库切换主库的过程中:
alter database commit to switchover to primary with session shutdown;
有一个进程始终是active状态,导致无法完成切换。
主库已切换成:RECOVERY NEEDED
--备用数据库还没有接收到切换请求
SWITCHOVER_STATUS
--------------------
RECOVERY NEEDED
二、处置
1、将备库上所有会话杀掉;
select 'alter system kill session ' || '''' || s.SID || ',' || s.SERIAL# || ','||'@'||s.INST_ID||'''' || 'immediate'||';' from gv$session s where s.USERNAME<>'SYS';
ps -ef | grep callsadg |grep LOCAL=NO | grep -v grep | awk '{print $2}' | xargs kill -9
2、到操作系统层面去找PR00和7078022进程,系统中不存在。
3、尝试关闭实例,shutdown immediate
仍然无法关闭数据库,原因依然是 Active process 存在
4、直接尝试shutdown abort,数据库可以关闭。
5、再次拉起startup
6、开启复制,追平
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT from SESSION;
7、再次切换,成功。
alter database commit to switchover to primary with session shutdown;