11.2.0.3物理DataGuard主备库切换(附加:ora-16139错误的解决)(二)

2014-11-24 09:23:43 · 作者: · 浏览: 8
:21 SQL>select switchover_status from v$database;

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,主备库相同,说明切换成功!!