Oracle Data Guard Switchover 切换

昨天总部巡检,要求对OracleDataGuard做一个switchover的切换演示。以前都是在虚拟机上做这种切换的,没有在生产库上做过。所以还是有些紧张。不过做DBA一定要给自己留一条后路:备份。先shutdown,做冷备,在逻辑备份,加上之前的RMAN。即使切换失败,还有备份可用心里也就有底了。

照着文档做,切换还是比较顺利的。但是在改IP的时候还是有点小插曲,在这里浪费了点时间。因为之前在虚拟机上没有改过IP。但是在生产环境上,肯定是要改主备库IP的。不管怎样。总算折腾完了。

三点多同事送我回去的,洗个澡就睡了,早上9点多就起来了。上班前室友和我说你太幸苦了。回:ThisisJob

其他的一些知识参考如下连接:

OracleDataGuardLinux平台PhysicalStandby搭建实例

http://blog.csdn.net/tianlesoftware/archive/2010/04/30/5547565.aspx

OracleDataGuard理论知识

http://blog.csdn.net/tianlesoftware/archive/2010/04/22/5514082.aspx

PhysicalStandby搭建实例这片文章的最后对switchoverfailover的切换都做了说明,不过这里面没有涉及到服务器IP的修改。我们前台应用都是和IP地址关联的,如果不改服务器的IP,就要修改应用的IP,如果应用很多的话,改起来还是比较麻烦的。

修改IP地址情况下的switchover步骤如下:

一.查看主库switchover状态

SQL>SELECTSWITCHOVER_STATUSFROMV$DATABASE;

SWITCHOVER_STATUS

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

TOSTANDBY

附:A:switchover_status出现sessionactive/notallowed

当出现sessionactive的时候表示还有活动的session,则运行

Alterdatabasecommittoswitchovertophysicalstandbywithsessionshutdown;

当出现notallowed时,在官方文档说转换会不成功,但是我测试的时候成功了。

B.ora-01153:anincompatiblemediarecoveryisactive

运行下面代码

Alterdatabaserecovermanagedstandbydatabasefinish;

或者Alterdatabaserecovermanagedstandbydatabasefinishforce;

Alterdatabaserecovermanagedstandbydatabasedisconnectfromsession;

二.将主库切换成备库

SQL>Alterdatabasecommittoswitchovertophysicalstandbywithsessionshutdown;

或者

SQL>ALTERDATABASECOMMITTOSWITCHOVERTOPHYSICALSTANDBY;

三.关闭主库

SQL>SHUTDOWNIMMEDIATE

四.查看备库switchover状态

SQL>SELECTSWITCHOVER_STATUSFROMV$DATABASE;

TOPRIMARY

附:若不是用此语句切换:

ALTERDATABASECOMMITTOSWITCHOVERTOPRIMARYwithsessionshutdown

补充:若出现:ORA-16139:mediarecoveryrequired

是因为没有执行:alterdatabaserecovermanagedstandbydatabasedisconnectfromsession;

五.将备库切换成主库,然后关闭

SQL>ALTERDATABASECOMMITTOSWITCHOVERTOPRIMARY;

Databasealtered.

SQL>shutdownimmediate;

六.更改服务器IP地址

这个可以用xmanager连过去,在界面上改,也可以直接用命令来修改。

vi/etc/sysconfig/network-scripts/ifcfg-eth0
servicenetworkrestart

Linux修改IP地址和网关

http://blog.csdn.net/tianlesoftware/archive/2010/02/20/5312646.aspx

七.启动备库。这里的启动顺序不能错,先启动备库,在启动主库,不然主库识别不了备库。

SQL>startupnomount;

SQL>alterdatabasemountstandbydatabase;

SQL>ALTERDATABASERECOVERMANAGEDSTANDBYDATABASEDISCONNECTFROMSESSION;

八.启动主库

SQL>startup;

SQL>altersystemswitchlogfile;

九.在主库查看log_archive_dest参数的状态,是否有效。

因为这里与监听和启动顺序有关,如果值为error,则归档不能传送到备库。

SQL>selectstatus,database_modefromv$archive_dest_status;

Status状态为valid即可。如果有错误,一般都是启动顺序和监听问题。如果启动顺序没有问题,那么就把主库重新启动一下。

十.验证同步状态

在主库运行:

SQL>altersystemswitchlogfile;

然后在主备库分别运行:selectsequence#,appliedfromv$archived_log;

确保applied都为YES

如果用:selectmax(sequence#)fromv$archived_log;

查看,如果主备库显示的一致,则只能表明归档已经传送到了备库,并不能表明该归档已经应用。而applied状态为YES,就表明该归档已经应用到了备库。

如果等了很长时间applied都无法应用,可以尝试一下方法:

alterdatabaserecovermanagedstandbydatabasecancel;

alterdatabaserecovermanagedstandbydatabasedisconnectfromsession;

2个语句是取消recovermanager,在启动它。

通过以上十步,switchover切换完成。

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

Bloghttp://blog.csdn.net/tianlesoftware

网上资源:http://tianlesoftware.download.csdn.net

相关视频:http://blog.csdn.net/tianlesoftware/archive/2009/11/27/4886500.aspx

DBA1群:62697716();DBA2群:62697977

DBA3群:63306533;聊天群:40132017

<!--EndFragment-->

你可能感兴趣的:(data guard)