Oracle 物理DG切换

在进行DATA GUARD的物理STANDBY切换前需要注意:
确认主库和从库间网络连接通畅;
确认没有活动的会话连接在数据库中;
PRIMARY数据库处于打开的状态,STANDBY数据库处于MOUNT状态;
确保STANDBY数据库处于ARCHIVELOG模式;
如果设置了REDO应用的延迟,那么将这个设置去掉;
确保配置了主库和从库的初始化参数,使得切换完成后,DATA GUARD机制可以顺利的运行。

确认当前数据库只有当前会话连接:
set pages 100 linesize 1000;
select SWITCHOVER_STATUS from v$database;
select count(*) from v$session where username is not null;

若有多于一个会话则:
select sid,serial# from v$session where username is not null;
select userenv('sid') from dual;
alter system kill session 'sid,serial#';

主库切换并重启至mount状态
alter database commit to switchover to physical standby;
shutdown immeidate;
startup mount;

登陆备库将其转换成primary库
set pages 100 lines 1000;
select SWITCHOVER_STATUS from v$database;

若switchover_status的值为to primary则可以开始standby to primary
alter database commit to switchover to primary;
alter database open;

standby to primary过程已经完成,回到原主库启动STANDBY开始接收并恢复主库的日志
alter database recover managed standby database disconnect from session;

switchover完成,检查下归档是否正常传输
检查日志最大序号是否一致,在主备库上检查归档序号是否一致
alter system switch logfile;
select sequence#,name,applied from v$archived_log order by sequence#;

查看是否有错误信息
select dest_id,status,destination,error from v$archive_dest;

查看状态
select status,type,database_mode,destination,db_unique_name,recovery_mode from v$archive_dest_status;

查看镜像日志
select timestamp,message from v$dataguard_status;

查看进程是否都已启动(ARCH、MRP0、RFS)
select process,status,thread#,sequence#,client_pid from v$managed_standby;

原文地址:https://www.cnblogs.com/assassinann/p/Physical_DG_SwitchOver.html