作者:莫建朝,新炬网络高级技术专家。
前段时间参与了一个informix到oracle的迁移项目。因为版本的关系,无法使用Oracle Migration Workbench和GoldenGate。
起初想法是使用文本的方式,分别通过informix的unload和oracle的sql loader工具,写成多个shell脚本进行大批量数据卸装和装载。在执行过程中,发现unload的文件中,有部分中文与分隔符形成乱码。此种乱码文件,经测试可以正常装载到informix数据库,但无法装载到oracle数据库。informix工程师和oracle工程师均没给能给出很好的解释。为了解决问题,最终考虑使用oracle公司的透明网关。
透明网关(Transparent Gateway)是Oracle公司提出实现异构服务的技术。Oracle利用透明网关的技术实现与Informix、mysql、SQL Server和DB2等多种数据库互联。
下面介绍透明网关安装方法:
oracle软件安装包的第五个包,为透明网关的安装包:
1)将安装包上传到oracle服务器端,解压后,运行runInstaller进行安装。
注意:在安装时,选择输入ORACLE_HOME,后面配置监听时,需要用到。
2)选择“Oracle Database Gateway for Informix 11.2.0.4.0”
3)将输入informix数据库信息。依次输入informix数据库所在的hostname或者IP、端口、INFORMIXSERVER和databasename。也可以在安装完后,修改$ORACLE_HOME/ g4ifmx/admin/init initdg4ifmx.ora。
1)安装完成后,在ORACLE_HOME下生成dg4ifmx文件夹。确认initdg4ifmx.ora配置是否正确。
2)gateways 和oracle安装在同机器情况下,配置grid用户的listener.ora和oracle用户的tnsnames.ora即可。
listener.ora:
tnsnames.ora:
3)重启监听,并进行测试
4)创建访问INFORMIX数据库的link
5)测试连接
将表分成多个脚本,进行批量传输。
语法:insert into …… select * from ……,
注意:
1)gateway不能支持大对象数据类型的传输。比如,long数据类型。
2)在处理较大表时,需分步进行commit,否则有可能会导致传输hung住。关于null 3)null值的处理上,需要提前进行处理,否则无法处理。
4)在表结构存在变化时,需要重建过dblink。
在informix 到 oracle之间传输,使用网关进行传输时,可以避免乱码的问题,效率上也还算OK。
在数据量较大的迁移中,可以准备多种手段。比如,编写java小工具,通过JDBC进行数据传输。
上一篇:软件全生命周期管理体系建设 下一篇:端到端的性能分析方案对比