这两天在忙一个项目迁移数据的事情,目标源数据库是sqlserver2008R版本的,新数据库是Oracle11G,库表大几百张,数据量保守估计1000多万,十几个G大小。因为数据量和表数量比较大,以前常用的方式不大适用了,斟酌挑选好久,决定采用sqldeveloper直接库对库转移,这样能够提高效率,先转换一批数据过来进行分析。尝试下载了sqldeveloper2.X,3.X的版本,都不支持sqlserver,只有下载最新的17.X版本,配合上jdk8,才正确关联上了两个数据库。在此需要注意一点是,按照网上说法操作,Oracle数据库中,会生成与sqlserver源数据同名的schma,而不是在当前Oracle用下,当前连接Oracle用户下会生成一些转移统计或中间信息。按网上原文:https://blog.youkuaiyun.com/gnail_oug/article/details/80309278 说法“移植完成后,Oracle SQL Developer会自动创建一个与sqlserver数据库同名的用户,如我们这里的是myproject,密码和用户名相同,我们用myproject/myproject在plsql里登录,查询用户表数据可以看到转换后的数据(而且对于在oracle不能使用的表名user改成了user_)”。
最终结果发现中间卡住了,原因是oracle用户默认表空间达到最大值,无法扩张。
后续下载了最新版本的kettle,新建了大的表空间,重新转换,其中2亿条数据的一张表,约一个小时就完成迁移,效率还是比较高的。