SWITCHOVER_STATUS
----------------------------------------
SWITCHOVERLATENT
(这种情况说明是需要进行redo应用,解决办法:开启MRP)
23:11:29 SQL>
23:13:51 SQL>alter database commit to switchover toprimary;
alter databasecommit to switchover to primary
*
ERROR at line 1:
ORA-16139: mediarecovery required
23:14:49 SQL>alter database recover managed standby database disconnect from session;
Database altered.
23:22:48 SQL> select database_role,switchover_status from v$database;
DATABASE_ROLE SWITCHOVER_STATUS
------------------------------------------------------------------------
PHYSICALSTANDBY SWITCHOVERPENDING
(可以注意到,状态变了,说明正在应用。。。。再等一下)
23:23:02 SQL>select database_role,switchover_status from v$database;
DATABASE_ROLE SWITCHOVER_STATUS
------------------------------------------------------------------------
PHYSICALSTANDBY SWITCHOVERPENDING
23:23:20 SQL>r
1* select database_role,switchover_status from v$database
DATABASE_ROLE SWITCHOVER_STATUS
------------------------------------------------------------------------
PHYSICALSTANDBY TO PRIMARY
(ok,到这里说明已经完全应用了,开始进行switchover standby库)
23:24:53 SQL>alter database commit to switchover to primary;
Database altered.
23:28:38 SQL>select status from v$instance;
STATUS
------------------------
MOUNTED
(细心的话可以注意到
(1)情况1,如果执行前standby数据库是打开状态的,执行切换备库命令之后,备库是处于mount状态下,然而主库执行切换命令后是直接关闭了数据库
(2)情况二:
注意:待转换的物理standby可以处于mount模式或open read only模式,但不能处于open read write模式。
情况(二):
23:23:20 SQL>r
1* select database_role,switchover_status from v$database
DATABASE_ROLE SWITCHOVER_STATUS
------------------------------------------------------------------------
PHYSICALSTANDBY TO PRIMARY
这种情形时最容易的,直接执行就可以成功:
23:24:53 SQL>alter database commit to switchover to primary;
Database altered.
6、完成转换,打开新的primary 数据库
SQL>alterdatabase open;
Database altered.
注:如果数据库处于openread-only 模式的话,需要先shutdown然后直接startup即可。
7.验证新的primary:
SQL>select max(sequence#) from v$archived_log;
MAX(SEQUENCE#)
--------------
36
SQL>r
1* alter system switch logfile
System altered.
Ok,主备库相同,说明切换成功!!