昨天总部巡检,要求对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搭建实例这片文章的最后对switchover和failover的切换都做了说明,不过这里面没有涉及到服务器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切换完成。
------------------------------------------------------------------------------
Blog:http://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