dataguard物理主备库切换错误记录

登陆primary数据库,查询v$database视图的switchover_status列。

    E:\ora10g>set oracle_sid=geo1pri

    E:\ora10g>sqlplus "/ as sysdba"

    SQL*Plus: Release 10.2.0.3.0 - Production on  星期四 12月 13 09:41:29 2007

    Copyright (c) 1982, 2006, Oracle.  All Rights Reserved.

    已连接。

    SQL>  select switchover_status from v$database;

    SWITCHOVER_STATUS

    --------------------

    TO STANDBY

  如果该列值为"TO STANDBY"则表示primary数据库支持转换为standby角色,否则的话你就需要重新检查一下Data Guard配置,比如看看LOG_ARCHIVE_DEST_n之类参数值是否正确有效等等。

2、 启动switchover  --primary数据库操作

  首先将primary转换为standby的角色,通过下列语句:

    SQL>  alter database commit to switchover to physical standby;

    数据库已更改。

  语句执行完毕后,primary数据库将会转换为standby数据库,并自动备份控制文件到trace。

3、 重启动到mount  --原primary数据库操作

    SQL>  shutdown immediate

    ORA-01507:  未装载数据库

    ORACLE  例程已经关闭。

    SQL>  startup mount

    ORACLE  例程已经启动。

    Total System Global Area  167772160 bytes

    Fixed Size                  1289484 bytes

    Variable Size             104858356 bytes

    Database Buffers           54525952 bytes

    Redo Buffers                7098368 bytes

    数据库装载完毕。

4、 检查是否支持switchover操作   --待转换standby数据库操作

  待原primary切换为standby角色之后,检查待转换的standby数据库switchover_status列,看看是否支持角色转换。

    E:\ora10g>set oracle_sid=ge01standby

    E:\ora10g>sqlplus " / as sysdba"

    SQL*Plus: Release 10.2.0.3.0 - Production on  星期四 12月 13 10:08:15 2007

    Copyright (c) 1982, 2006, Oracle.  All Rights Reserved.

    已连接。

    SQL> select switchover_status from v$database;

    SWITCHOVER_STATUS

    --------------------

    TO PRIMARY

    SQL>

  此时待转换standby数据库switchover_status列值应该是"TO_PRIMARY",如否则检查其初始化参数文件中的设置,提示一下,比着原primary数据库的初始化参数改改。

5、 转换角色到primary  --待转换standby数据库操作

  通过下列语句转换standby到primary角色:

    SQL> alter database commit to switchover to primary;

    数据库已更改。

  注意:待转换的物理standby可以处于mount模式或open read only模式,但不能处于open read write模式。

6、 完成转换,打开新的primary数据库

    SQL> alter database open;

    数据库已更改。

  注:如果数据库处于open read-only模式的话,需要先shutdown然后直接startup即可。

7、 验证一下

  新的primary数据库

    SQL> show parameter db_unique

    NAME                                 TYPE        VALUE

    ------------------------------------ ----------- ------------------------------

    db_unique_name                       string      jsspdg

    SQL> select max(sequence#) from v$archived_log;

    MAX(SEQUENCE#)

    --------------

                67

    SQL>  alter system switch logfile;

    系统已更改。

    SQL> select max(sequence#) from v$archived_log;

    MAX(SEQUENCE#)

    --------------

                68

  新的standby数据库

    SQL> show parameter db_unique

    NAME                                 TYPE        VALUE

    ------------------------------------ ----------- ------------------------------

    db_unique_name                       string      jssweb

    SQL>  select max(sequence#) from v$archived_log;

    MAX(SEQUENCE#)

    --------------

                68

      转换成功。

 

 

在切换中发生一个错误,通过google查到错误的原因,切换到primary db是需要介质恢复

 

SQL> select switchover_status from v$database;

SWITCHOVER_STATUS
--------------------
SWITCHOVER LATENT

SQL> alter database commit to switchover to primary;
alter database commit to switchover to primary
*
ERROR at line 1:
ORA-16139: media recovery required


SQL> alter database commit to switchover to primary;
alter database commit to switchover to primary
*
ERROR at line 1:
ORA-16139: media recovery required


SQL> alter database recover managed standby database disconnect from session;

Database altered.

SQL> alter database commit to switchover to primary;

Database altered.

SQL> alter database open;

Database altered.

SQL> select max(sequence#) from v$archived_log;

MAX(SEQUENCE#)
--------------
            49

SQL> alter system switch logfile;

System altered.

SQL> select max(sequence#) from v$archived_log;

MAX(SEQUENCE#)
--------------
            50

 

你可能感兴趣的:(oracle,sql,Google)