如何实现业务零宕机情况下完成Oracle 11g数据库升级到19C
ORACLE跨大版本升级,业务零宕机,或最小中断时间,比如15分钟内影响,可以使用逻辑备库来完成。
数据库升级最头大的,就是业务不能停机,或者只能停很短的时间,否则,不能让你升级,这个对于跨大版本升级,而且还想数据库升级的同时,还想把操作系统也一起升级,不停机,或者很多时间停机,尤其比较麻烦。升级完成后,还要去检查数据的准确性,这个不同的技术,检查的难度也不一样。
针对这种升级数据库和操作系统的场景,目前可有的方式如下:
1.EXPDP/IMPDP
2.XTTS
3.OGG
4.逻辑备库
5.其他同步软件
但要实现不停机,或短时间停机,比如10分钟,EXPDP/IMPDP方式是不行的,使用XTTS数据是否准确的确认,也比较麻烦,如果使用OGG,整个过程比较长,最终可以实现零宕机,但实现难度比较高。
在实际的工作种,我们发现,可以直接使用逻辑备库的方式来实现跨版本的升级,还是一个不错的方案。
下面就使用逻辑备库完成ORACLE 11g升级到19c,同时完成操作系统升级的过程进行说明:
1. 环境:
当前版本:11.2.0.4 + LINUX 6.8
升级版本:19.20.0 + LINUX 8.8
数据量:600g
2.目标:
要求:以最小停库时间(比如15分钟)实现数据库迁移到新机器并同时实现版本升级
3.解决办法:
通过逻辑备库滚动升级方式实现
4.思路:
先在新机器搭建一个主库的物理备库,并转化为逻辑备库,停用sql应用,之后,升级逻辑备库,启用sql应用,切换逻辑备库为主库。之后,原来机器升级操作系统及数据库,并作为新主库的备库,最后再切换回来
5.具体步骤:
1.在新机器搭建主库的物理备库
步骤略
2.转换物理备库为逻辑备库
--主库创建数据字典
execute DBMS_LOGSTDBY.BUILD;
--备库转换为逻辑备库
ALTER DATABASE RECOVER TO LOGICAL STANDBY lgdb;
ALTER DATABASE OPEN RESETLOGS;
--启动日志应用
ALTER DATABASE START LOGICAL STANDBY APPLY IMMEDIATE;
3.逻辑备库执行滚动升级
3.1 准备动作
1.停止日志应用
ALTER DATABASE STOP LOGICAL STANDBY APPLY ;
2.设置兼容参数
3.2 在新机器上安装数据库新版本
安装19.20.0
3.3 升级逻辑备库到新版本19.20.0
可以通过手工或者dbca完成,此处过程略
3.4 重启日志应用
ALTER DATABASE START LOGICAL STANDBY APPLY IMMEDIATE;
4.主动切换到逻辑备库 (这里业务需要停止几分钟,看你的操作速度)
4.1 查看有日志未应用完的情况,并解决
SELECT EVENT_TIMESTAMP, EVENT, STATUS
FROM DBA_LOGSTDBY_EVENTS
ORDER BY EVENT_TIMESTAMP;
4.2 switchover 到逻辑备库
1.主库:
ALTER DATABASE COMMIT TO SWITCHOVER TO LOGICAL STANDBY;
2.处理升级过程中主库新建立的备库不支持的表
3.逻辑备库变为主库
ALTER DATABASE COMMIT TO SWITCHOVER TO LOGICAL PRIMARY;
5.修改IP为以前主库的ip (这里业务需要停止几分钟,看你的操作速度)
前端应用不用修改连接配置
6.以前机器重装操作系统到LINUX 8.8,并安装ORACLE 19.20软件
7.重新同步新机器的数据到新安装的老机器上。
8.同步完成后,切换数据库到老机器即可。 (业务需要停的时间,看你手工熟练程度,一般10分钟内是可以完成)
到此,我们的目标达到。
更多推荐
所有评论(0)