dataguard手动switchover切换步骤及注意的问题

前面的文章提到,当用grid contorl中的broker页面配置的dataguard,进行switchover切换时,只需在页面中点击“切换”按钮,主备切换操作就会自动在后台完成,方便快捷。但是当我们无法登录grid control页面,而又需要紧急进行切换时,这就是手工进行切换操作。

初始环境:

主库:oracle11gR2 RAC  rac1,rac2(racdb1,racdb2)

备库:oracle11gR2单实例 single (racstd)

 

1.下面就是手动switchover切换的步骤及注意的问题:

 

假设需要在rac2实例上进行switchover操作

--rac2上直接进行切换操作,

--报如下错误

SQL> alter database commit to switchover to standby;

alter database commit to switchover to standby

*

1行出现错误:

ORA-01105:装载操作与其他实例的装载操作不兼容

 

--查询RAC环境其它活动实例

SQL> Select Instance_Name, Host_Name    From Gv$instance

  2   Where Inst_Id <> (Select Instance_Number From V$instance);

 

INSTANCE_NAME    HOST_NAME

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

racdb2           rac2.localdomain

 

错误问题原因:

RAC+dataguard环境手动主备切换时,主库和备库都必需只保留一个活动实例,才能完成切换操作(通过broker管理页面则不需要这步手动关闭实例操作,则在后台自动完成),所以切换前首先要关闭其它不需要切换操作的实例,切换完成后再重新启动即可。

 

--关闭rac1实例(racdb1)

SQL> shutdown immediate;

数据库已经关闭。

已经卸载数据库。

ORACLE例程已经关闭。

 

 

--然后再回到rac2,此时进行切换操作

SQL> alter database commit to switchover to standby;

alter database commit to switchover to standby

*

1行出现错误:

ORA-01093: ALTER DATABASE CLOSE仅允许在没有连接会话时使用

 

--切换为备库操作

SQL> alter database commit to switchover to standby with session shutdown;

 

数据库已更改。

 

SQL> select name,open_mode,DATABASE_ROLE,PROTECTION_MODE from v$database;

 

NAME      OPEN_MODE            DATABASE_ROLE    PROTECTION_MODE

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

RACDB     READ WRITE           PHYSICAL STANDBY MAXIMUM PERFORMANCE

 

--转换操作完成后,racdb2实例会自己关闭

SQL> shutdown immediate

ORA-01092: ORACLE instance terminated. Disconnection forced

SQL> select name,open_mode,DATABASE_ROLE,PROTECTION_MODE from v$database;

ERROR:

ORA-03114:未连接到 ORACLE

 

--rac2alert日志:

Process (ospid 31592) is suspended due to switchover to physical standby operation.

Wed Sep 05 12:17:45 2012

Performing implicit shutdown abort due to switchover to physical standby

Shutting down instance (abort)

 

 

--rac2重新启动原主库实例(racdb2)

SQL> startup

ORACLE例程已经启动。

 

Total System Global Area 1235959808 bytes

Fixed Size                  2227904 bytes

Variable Size             922747200 bytes

Database Buffers          301989888 bytes

Redo Buffers                8994816 bytes

数据库装载完毕。

数据库已经打开。

 

SQL> select name,open_mode,DATABASE_ROLE,PROTECTION_MODE from v$database;

 

NAME      OPEN_MODE            DATABASE_ROLE    PROTECTION_MODE

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

RACDB     READ ONLY        PHYSICAL STANDBY MAXIMUM PERFORMANCE

 

--single racstd实例,切换为主库操作

SQL> alter database commit to switchover to primary with session shutdown;

数据库已更改。

 

--重新启动原备库

SQL> select name,open_mode,DATABASE_ROLE,PROTECTION_MODE from v$database;

 

NAME      OPEN_MODE            DATABASE_ROLE    PROTECTION_MODE

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

RACDB     MOUNTED              PRIMARY          MAXIMUM PERFORMANCE

 

SQL> shutdown immediate

ORA-01109:数据库未打开

 

 

已经卸载数据库。

ORACLE例程已经关闭。

SQL> startup mount

ORACLE例程已经启动。

 

Total System Global Area 1235959808 bytes

Fixed Size                  2227904 bytes

Variable Size             805306688 bytes

Database Buffers          419430400 bytes

Redo Buffers                8994816 bytes

数据库装载完毕。

 

SQL> select name,open_mode,DATABASE_ROLE,PROTECTION_MODE from v$database;

 

NAME      OPEN_MODE        DATABASE_ROLE    PROTECTION_MODE

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

RACDB     MOUNTED          PRIMARY          MAXIMUM PERFORMANCE

 

 

SQL> alter database open;

 

数据库已更改。

 

SQL> select name,open_mode,DATABASE_ROLE,PROTECTION_MODE from v$database;

 

NAME      OPEN_MODE       DATABASE_ROLE    PROTECTION_MODE

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

RACDB     READ WRITE     PRIMARY          MAXIMUM PERFORMANCE

 

--rac2打开实时应用查询功能

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT;

 

数据库已更改。

 

SQL> select name,open_mode,DATABASE_ROLE,PROTECTION_MODE from v$database;

 

NAME      OPEN_MODE            DATABASE_ROLE    PROTECTION_MODE

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

RACDB     READ ONLY WITH APPLY PHYSICAL STANDBY MAXIMUM PERFORMANCE

 

SQL>

 

--最后再启动rac1实例:

SQL> startup

ORACLE例程已经启动。

 

Total System Global Area 1235959808 bytes

Fixed Size                  2227904 bytes

Variable Size             922747200 bytes

Database Buffers          301989888 bytes

Redo Buffers                8994816 bytes

数据库装载完毕。

数据库已经打开。

SQL>

SQL> select name,open_mode,DATABASE_ROLE,PROTECTION_MODE from v$database;

 

NAME      OPEN_MODE            DATABASE_ROLE    PROTECTION_MODE

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

RACDB     READ ONLY WITH APPLY PHYSICAL STANDBY MAXIMUM PERFORMANCE

 

--最后可以检查切换是否成功,可以单实例数据库端建测试表,然后在RAC数据库端查看表是否同步,不再测试

 

2.手工切换后broker页面不再同步的问题

当完成上面的手工switchover后,虽然切换成功,但此时grid control页面的broker页面显示状态却不正常,如下:

 

 

 dataguard手动switchover切换步骤及注意的问题_第1张图片

 

dataguard手动switchover切换步骤及注意的问题_第2张图片

 

[oracle@rac2 dbs]$ dgmgrl sys/oracle123

DGMGRL for Linux: Version 11.2.0.3.0 - 64bit Production

 

Copyright (c) 2000, 2009, Oracle. All rights reserved.

 

欢迎使用 DGMGRL,要获取有关信息请键入 "help"

已连接。

DGMGRL> show configuration

 

配置 - racdb

 

 保护模式:        MaxPerformance

 数据库:

    racdb  -主数据库

     错误: ORA-16810: 检测到数据库的多个错误或警告

 

    racstd -物理备用数据库

     错误: ORA-16810: 检测到数据库的多个错误或警告

 

快速启动故障转移: DISABLED

 

配置状态:

ERROR

 

问题原因:

因为开始我们的dataguard是用grid controlbroker页面进行配置和管理的,手工进行切换后,broker中信息不能和手工切换信息同步,导致dataguard状态和broker状态不一致。

 

解决办法:

使用broker重新配置添加dataguard信息,步骤如下:

 

--登录dataguard环境任一服务器

--首先删除dataguardbroker配置

[oracle@rac1 log]$ dgmgrl sys/oracle123

DGMGRL> help remove

 

删除配置,数据库或实例

 

语法:

 

  REMOVE CONFIGURATION [PRESERVE DESTINATIONS];

 

  REMOVE DATABASE <database name> [PRESERVE DESTINATIONS];

 

  REMOVE INSTANCE <instance name> [ON DATABASE <database name>];

 

DGMGRL> remove configuration

已移去配置

DGMGRL> show configuration

ORA-16532: Data Guard中介配置不存在

 

配置详细资料不能由 DGMGRL确定

 

--然后再登录grid controlbroker管理页面重新配置dataguard

点击“添加备用数据库”

 

dataguard手动switchover切换步骤及注意的问题_第3张图片

选择“使用dataguard中介管理现有备库”

 

dataguard手动switchover切换步骤及注意的问题_第4张图片

选择现有备库

dataguard手动switchover切换步骤及注意的问题_第5张图片

查看配置

dataguard手动switchover切换步骤及注意的问题_第6张图片

展开

dataguard手动switchover切换步骤及注意的问题_第7张图片

复查配置

dataguard手动switchover切换步骤及注意的问题_第8张图片

 

执行配置

dataguard手动switchover切换步骤及注意的问题_第9张图片

 

执行完成

 

dataguard手动switchover切换步骤及注意的问题_第10张图片

 

跳转到broker管理页面

dataguard手动switchover切换步骤及注意的问题_第11张图片

 

--命令查看状态

DGMGRL> show configuration

 

配置 - racstd

 

 保护模式:        MaxPerformance

 数据库:

    racstd -主数据库

    racdb  -物理备用数据库

 

快速启动故障转移: DISABLED

 

配置状态:

SUCCESS

 

 

 

 

 

 

你可能感兴趣的:(oracle,sql,数据库,session,database,System)