1. 切换前状态检测

【总】主库查询备库是否已经同步
SELECT DB_UNIQUE_NAME, PROTECTION_MODE, SYNCHRONIZATION_STATUS, SYNCHRONIZED FROM V$ARCHIVE_DEST_STATUS;

【分】检查数据已经传输到位
SELECT CLIENT_PROCESS, PROCESS, SEQUENCE#, STATUS FROM V$MANAGED_STANDBY;
查看LGWR那行的SEQUENCE#,然后在主库上,运行
SELECT THREAD#, SEQUENCE#, STATUS FROM V$LOG;
查看相应的SEQUENCE#, 是否与备库一致。

【分】检查数据是否已经应用到备库
SELECT CLIENT_PROCESS, PROCESS, SEQUENCE#, STATUS FROM V$MANAGED_STANDBY;
查看MPR0行,如果非APPLYING_LOG,则表示存在问题,不宜切换。总,分,分表示,先查看总,如果总查出来的状态不行,那就查看分查看有没有运行的作业,RMAN备份等,如果有,则停止。2. 切换操作

打开alert log进行监控,

RAC等均减少为一个实例

查看数据库切换状态
SELECT SWITCHOVER_STATUS FROM V$DATABASE;
如果是TO STANDBY状态,则说明可以进行切换

查看数据库当前的会话
SELECT PROGRAM, TYPE FROM V$SESSION WHERE TYPE=’USER’;

执行切换
ALTER DATABASE COMMIT TO SWTICHOVER TO PHYSICAL STANDBY WITH SESSION SHUTDOWN;

打开主库
ALTER DATABASE OPEN;

备库上重新启动,并进行同步
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT;