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页面显示状态却不正常,如下:

[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中介管理现有备库”

选择现有备库

查看配置

展开

复查配置

执行配置

执行完成

跳转到broker管理页面

--命令查看状态

DGMGRL> show configuration

配置 - racstd

保护模式: MaxPerformance

数据库:

racstd -主数据库

racdb -物理备用数据库

快速启动故障转移: DISABLED

配置状态:

SUCCESS

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值