Oracle到国产数据库DM的迁移案例
对于达梦数据库,我在19年之前还没有听过,第一次听到达梦,金仓数据的时候还是我们打算开始做鲲鹏专家服务的技术研讨会上,数据库专家在说国产数据库的提到达梦和金仓,感觉完全没听过,个人最早接触数据库的时候是在2011年,入职第一家公司,linux运维, C开发,数据库安装,sql表设计,存储过程编写,当时记得写了将近上万行,几百个存储过程,其实个人的逻辑思维一致不好,可以说C代码基础也很差,在学SQl的过程中才找到了适合自己的编程习惯,后来再写脚本什么的都易如反掌了,当初一心想干DBA,后来因为生活所迫,一心想回西安发展 , 发现西安DBA的机会很少,就转投了嵌入式linux开发,再到linux运维,直到去年的鲲鹏项目成立,才再次接触到数据库;下来一查才知道,除了mysql,oracle,原来国产的数据库已经发展如此迅猛了。
随着案例去IOE的口号提出,中兴与华为相继被制裁,国产化的呼声达到了十年来最激烈的一次,特别是华为在推出了鲲鹏生态后,国产化的活动,信创的字眼,越来越频繁的出现在朋友圈,技术贴,论坛,博客中,越来越多的各种线下技术论坛如雨后春笋般涌现;
第一次接触达梦也不例外,是从公众号的线上论坛中关注到了达梦的技术分享论坛,主要还是抱着去学习的心态,因为工作中确实有很多国产化数据库搬迁的工作;逐渐了解到达梦除了数据库产品,也有自己的大数据产品DMBDP;启云云平台,还有自己的图数据库,同时也积极打造各种周边产品,主要为工具与云平台;
后来因为工作交流,有幸去达梦武汉研发中心做过一次技术交流,更加深入的了解到,达梦(驶达梦想)公司由华为科技大学老师冯裕才(现任达梦数据库董事长)带领其学生创建,2000年,创建了国内第一个数据库公司,2001年又创建了上海达梦(当前达梦主研发中心);目前中国电子(CEC)与中国软件均有控股;目前达梦全国总共1000人左右,研发人员占80%左右,国产数据库的NO.1,市场份额占到60%;也是核高基的核心组成员;目前达梦在银行,金融等高要求的场景下份额逐年递增,也足以说明未来国产化数据库的市场会越来越大。
Oracle迁移达梦案例
说完了背景,就实际跟大家分享下我们从Oracle签到到达梦的一个实例吧:
某信息中心平台原数据库系统为6u100g单机部署的Oracle数据库,随着业务系统的发展和用户数量的增多,旧平台系统已经不能适应满足企业在扩展性、灵活性、安全性、经济型和自主性方面的需求。业务系统数字化转型迫在眉睫,急需能够满足企业业务新需求的替代方案。
在《国家信息化发展战略纲要》等政策的推动下,响应国家信息化创新,顺应国产化潮流,选定华为云鲲鹏平台作为替代方案。
迁移架构图如下:
Oracle与达梦数据库的对比:
Oracle与DM在数据类型、函数和对象类型方面兼容度高达95%
仅部分数据类型名称、函数名称和Oracle有差异
异构数据库迁移流程
数据库的迁移流程都是大同小异,最主要的还是迁移的调研,深入调研客户所有到的字典,对象,特性,以及部署方式,数据量大小来设计迁移方案,相对来说达梦的为迁移Oracle所提供的工具还是很好用的。
Oracle-DM8数据类型差异对比
需求调研阶段,数据类型差异对比还是非常重要和繁琐的,列一篇我们整理的给大家分享下:
数据库部署方式与数据量
客户源库为6u100g单机部署的Oracle,是多系统多用户共享数据库系统,本次迁移数据量7G,涉及数据库系统17个。
综合客户需求和性能测试结果,决定采用主备方式部署达梦数据库
主备实现原理:
将主库(生产库)产生的 Redo日志传输到备库,备库接收并重新应用 Redo 日志,从而实现备库与主库的数据同步。
由数据守护进程监控数据库状态,获取主、备库数据同步情况,为 Redo 日志传输与重演过程中出现的各种异常情况提供一系列的解决方案。
系统结构参考右图。主要由主库、备库、Redo 日志、Redo 日志传输、Redo 日志重演、守护进程、监视器组成。
达梦数据库迁移工具DTS
达梦数据库迁移工具DTS提供了主流大型数据库迁移到DM、DM到DM、文件迁移到DM以及DM迁移到文件的功能。DTS工具采用向导方式引导用户通过简单步骤完成迁移过程。达梦数据库迁移工具DTS提供了主流大型数据库迁移到DM、DM到DM、文件迁移到DM以及DM迁移到文件的功能。DTS工具采用向导方式引导用户通过简单步骤完成迁移过程。
- 基于JDBC接口对数据进行查询和传输
- 支持表、视图、序列、索引、约束等对象的迁移
- 自动完成数据类型兼容性的转换
达梦数据库实时同步软件DMHS
达梦数据实时同步软件DMHS是达梦公 司推出的新一代支持异构环境的高性能、高可靠、高可扩展数据库实时同步系统,该产品基于成熟的关系数据模型和标准接口,跨越多种软硬件平台,支持强大而灵活的拓扑结构,能以极少的系统开支实现秒级数据实时同步
基于日志的结构化数据同步技术
以数据库事务为最小复制单位,确保复制数据的完整性和一致性
使用检查点机制实现断点续传,保障数据不丢失
自带数据比对功能
采用并行处理技术实现大批量数据的实时复制,数据同步高效
DTS与DMHS两个工具功能对比
本次的数据库迁移工作,根据客户数据量大小、客户可接受的停机时间等相关因素综合考虑,达梦数据库迁移工具DTS可以完全满足本次迁移。
迁移实施6步骤
过程中遇到的几个问题
问题现象
Oracle下执行正常的SQL语句在达梦中执行报错
select * from (SELECT * FROM T_SCHEDULE s JOIN CENTITIP.F_USERINFO us ON us.USER_CODE = s.USER_CODE JOIN CENTITIP.F_UNITINFO un ON un.UNIT_CODE = us.PRIMARY_UNIT WHERE 1 = 1 AND data_valid_flag = '1' AND s.USER_CODE != '255' AND s.USER_CODE != '1515' ORDER BY un.unit_order ASC, us.user_order ASC ,s.THEME ASC ) where rownum <= 10
根因分析
USER_CODE在达梦里是关键字,在Oracle中不是,不能定义为字段名
解决方案
配置文件中配置EXCLUDE_RESERVED_WORDS=?
屏蔽USER_CODE 这个关键字
问题现象
手工修改后的物化视图语句执行报错
refresh with primary key force start with sysdate + 0 next to_date(concat(to_char(sysdate + 1,'dd-mm-yyyy'),'10:25:00'),'dd-mm-yyyy hh24:mi:ss’)
disable query rewrite
根因分析
… …
达梦不支持含有大字段及对象类型的物化视图
解决方案
留个悬念,大家自行脑补思考下,哈哈
- 点赞
- 收藏
- 关注作者
评论(0)