您的位置:首页 > 数据库

一次通过switchover物理从库迁移数据库到其它主机上(2010-11-09)

2010-12-05 16:06 197 查看
上周一通过switchover物理从库到主库成功的将一台数据库迁移到新的主机上.
简单的叙述一下:
原来的数据库情况:231:主库,122:物理从库,195:逻辑从库,211:新的主机,打算将数据库主库迁移到这台主机上来.

在211上创建231主库的物理从库,并且使得这个物理从库可以正常的应用主库端传输过来的日志.
在切换前,停止连接到主库的应用,数据库形式的主库应用也最好停止了,比如说alter system set job_queue_processes=0;使得主库上的job暂时停止工作.将从这个数据库上拉数据的物化视图job暂时broken了 等等。
主库231切换为物理从库,物理从库211切换为主库.
对换211和231的ip,hostname.这样最终主库所在的主机IP还是231,应用不用做任何的修改。
开启新主库231(原来的211主机)到新物理从库211(原来的主库231)的日志归档.
增大新主库的temp表空间大小,检查数据库是否可以正常提供服务.其它从这台数据库拉数据的物化视图的job手工run一遍,使得这些job可以重新开始工作.
开启应用服务器.检查其它的物理从库,逻辑从库.

下面简单的说一下个人认为需要注意的事项:
1.主库成功切换为物理从库的时候,会在redo中加入Identified End-Of-Redo,物理从库端只有应用了这个redo entry,才可以切换为主库的.
如果这时目标物理从库是open read only或者是mount但没有开启mrp进程的,反正是没有开启mrp进程的话,它就不可能应用日志到这个redo entry,这时它的v$database.switchover_status就是SWITCHOVER PENDING的,是不能切换为主机的,这时必须开启了mrp进程才可以的.
而如果开启了mrp进程,应用了这个结束标志之后,mrp进程会自动关闭的,所有的物理从库上都是这样的,等待你选择其中的一个将其切换为主库.如果这时你在目标物理从库端又开启了mrp进程的话,使用语句Alter database commit to switchover to primary with session shutdown准备将其切换为主库的话,它会hang在那里,查看这个切换会话的等待的话,表现为enq: MR - contention,其实之前你就不该重新开启mrp进程的,你现在的选择就是终止切换进程,将原来的主库重新切换回主库模式(实际上就是将一个物理从库切换为主库),目标物理从库端重新开启mrp进程,然后重新将主库切换为物理从库,这时目标物理从库在应用完结束标志后还是会自动终止,你查询v$database.switchover_status应该会是to primary,将目标物理从库切换为主库就可以了.
因为这个结束标志,其它的物理从库上的mrp进程在应用了这个结束标志之后,也会自动终止的,所以其它的物理从库端需要重新开启管理恢复模式,除此之外不需要其它的动作了.

2.因为物理从库说到底就是备份,复原和恢复,而在这个过程里是不涉及到临时表空间的,所以目标物理从库在切换为主库之后,需要对它的temp表空间重新进行设置的.

3.关于新主库可以继续为逻辑从库服务:
如果这个逻辑从库是在这个目标物理从库之前就创建好的,比如说我这里的情形,原主库上开启了补充日志,从原主库复原出来的目标物理从库也是开启了补充日志的,所以切换为主库后,是有补充日志的,可以继续为逻辑从库提供服务.
但如果目标物理从库是在逻辑从库之前就创建好的,原来的主库上并没有开启补充日志,这样这个物理从库也是没有开启补充日志的,主库端之后开启补充日志的动作是不会自动应用到目标物理从库端的,所以就需要在主库端开启补充日志之后,至少是在目标物理从库切换为主库前,在目标物理从库端开启补充日志,这样它切换为主库后才有补充日志,才可以继续为原来的逻辑从库提供服务的.不然的话,新主库没有开启补充日志的话,逻辑从库就只能接收日志,而不能应用日志了.

4.在整个的切换过程中,两端的监听是正常开启的,不能关闭的.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: