Oracle实用工具 sqlDeveloper使用之数据迁移
开发项目之前,做好数据库的设计与数据的导入很是重要,这曾经让我很是抓狂,一直把这件是放在心上,现在稍微有点时间,就想起来好好总结一下: 第一部分:获取工具 第二部分:建立资料档案库(Migration Repository) 第三部分:数据库移植向导 第四部分:SqlServer中的架构到Oracle中的模式,名称的处理 第五部分:转移数据 第六部分:存储过程和函数 首先,当然是获得工具,该工具在Oracle Sql Developer官方下载页面里面可以直接下载到。Windows 32位直连地址:Windows 32bit Sql Developer。Oracle Sql Developer需要JDK的支持,在下载页面中提供了包含JDK的下载包,还有支持各种操作系统的下载选项。 下载后,解压到任意位置。直接运行程序。第一次运行,需要指定JDK的目录。 启动后,我们要做的第一件事,不干别的,先下载SQL SERVER的驱动程序。点击菜单帮助,选择检查更新,弹出检查更新向导窗口,第一页一般是废话,直接下一步,等更新中心列表加载完毕后,只选择“Third Party SQL Developer extensions”,点击下一步,等待更新搜索完毕后,中列表中找到并选中 JTDS JDBC Driver,如下图: 下一步,在许可协议页面,点击“我同意”按钮后再点下一步,等下载完毕后关闭窗口,弹出提示需要重启程序才能完成更新,点击“是”。等程序重启完毕。 环境准备完毕,开始进入到正题移植数据库。 建立资料档案库(Migration Repository) 一、连接到Oracle 在程序左边的连接窗口中,点击加号按钮,添加一个到Oracle数据库的dba连接,如下图: 配置完成后,点击连接按钮,连接到数据库。 二,建立用户 打开到Oracle数据的连接,新建一个用户,我们要在该用户的模式中建立所谓的“资料档案库”,并使用该用户去建立SQL Server移植后的用户名,以及做其它的一些工作。按照帮助中的说明,这个用户最少需要以下权限和角色:
再次点击连接中的加号按钮,添加一个使用刚刚新建立的用户的连接。 连接后,在该连接上点击右键,选择移植资料档案库-关联移植资料档案库,程序会在该用户下建立移植资料档案库所需要的表、存储过程等等,弹出一个对话框显示当前建立的进度,稍等片刻即建立完毕。 数据库移植向导 一,建立到源SqlServer数据库的连接 在连接窗口中,点击绿色加号按钮,打开连接配置窗口,按下图建立到SqlServer的连接: 因为动态商品的使用,使得原来SqlServer配置页中默认的1433往往没有办法连接到SqlServer2008数据库,修改为1434即可。----------------------------这个地方一定要将端口设置为1433才能导数据,否则只建表无法导数据 二、启动数据库移植向导 建立到SqlServer的连接后,开始对数据库进行移植。有两个地方可以启动数据库移植向导,一个是在新建的SqlServer连接上点击右键,选择移植到Oracle,另一个是在菜单工具-移植-移植,启动向导后,第一页当然是向导的简介,通过简介,我们可以知道整个移植过程有7步,并且有两个先决条件,如下图: 直接点击下一步。 三、选择资料档案库 在这个页面中,我们也可以去建立连接和资料档案库,也就是前一部分中我们所做的工作在这里也可以进行。当然选择我们刚刚建立的migrations连接,如下图: 这里截断的意思是将资料档案库清空,我们建立一个移植项目后,所有抓取的数据库结构信息、统计信息还有转换记录等都保存在这个资料档案库中,只要项目名称不同,即使不清空资料档案库也不会影响到移植工作。当然,如果希望更“清爽”一点,也可以勾选。这是后话。 四、为转换项目命名 选择好资料档案库后,点击下一步,为我们的转换项目输入名称和备注,以便识别。另外,还需要指定脚本生成目录,用于存放向导执行过程中生成的脚本。 五、选择源数据库连接 然后继续下一步,选择源数据库,在这里有联机和离线两种模式,联机即是直接连接到源数据进行抓取,而离线则是在SqlDeveloper不直接连接到源数据库的情况下,通过SqlDeveloper提供的脚本预先捕获数据库,得到数据库结构文件后,通过向导导入。 这里当然是选择我们刚才建立的SqlServer连接。 六、选择捕获源数据库 在这一步中,显示为两个多选框,左边列出Sql Server中所有可选的数据库,通过中间的按钮将数据库移动到右边的已选数据库中。如下图: 七、数据类型转换选项 在这一页中,列出了所有系统内置的数据类型转换对应关系。可以其进行修改,一般不作修改直接下一步。如下图: 八、选择目标数据库 与源数据库的选择一样,目标数据库的选择同样也有联机和离线两种方式。仍旧选择联机。选择orcl(migrations)连接。 九、移动数据选项 这个页面中,也提供了联机或离线两种方式进行数据移动。所谓联机虽然“据说”可以直接以联机的方式从源数据库中移动数据到Oracle中,可我试过几次没有成功,原因不明。最终我选择了离线的方式进行数据移动。所谓离线移动数据,是在我们指定的脚本存放目录中生成“数据移动”脚本,分别在源数据库中卸载数据(即导出)和在目标数据库中加载数据。选择好后,点击下一步。 十、选项完毕,开始执行 在向导的最后,是一个用于确认的“概要”页面。确认无误后,点击完成。移植将会开始执行。 SqlServer中的架构到Oracle中的模式,名称的处理 通过执行移植向导,如果没有错误的话,那么表结构基本上都会建立起来了,在连接中打开orcl(migrations)连接,找到最下面的其它用户,假设你的表都在dbo架构下,那么找到dbo_源数据库名,展开它,可以看到在表中已经有原数据库中的所有表。但是,为什么会显示为dbo_源数据库名呢?我很不喜欢这样的用户名。我希望它显示为源数据库名,要怎样做呢? 在程序的左下角,是移植项目窗格,在里面可以看到我们刚才建立的移植项目名。展开它,会显示我们执行过向导的日期和时间,继续展开,可以看到两个节点,叫作捕获的数据库对象和转换的数据库对象,如下图: 在捕获的数据库对象上点击右键,选择转换,再次打开数据移植向导。点击下一步,会直接跳转到转换页,这一次的转换页面与前一部分的转换页稍有不同。不同之处在于多出了一个选项卡,叫对象命名,选择它打开,如下图所示: 在这个页面中,显示了一个数据列表,列出了源数据库的表名、字段名、约束名、视图名、架构名等等所有的标识符的原始标识符、新建标识符、是否经过转换、原始限定名、标识符类型等信息。因为Oracle中不支持30个字符以上的标识符,所以当碰到原始标识符超过30个字符时,移植向导会自动将之截断,如果有重名,则会加上_1之类的后缀。 很明显,在这里,它把我们原来的dbo架构名转换成了dbo_数据库名,我们只要找到它,将新标识符改为数据名,即可实现我们这部分的需求。 修改完成后,点击下一步,接着按之前的设置完成整个向导,将修改提交到资料档案库中。注意,这次的向导并没有去帮我建立新用户和表结构等等,还需要进一步操作。 在主界面中的移植项目窗格,在转换的数据库对象上点击右键,选择生成目标,再次打开移植向导,又一次按之前我们的选择完成整个向导,这一次,才是真正建立了我们想要的用户名。 然后,把自动生成的老用户名和模式都删除掉吧。具体操作就不细说啦。 转移数据 上一部分说了移植向导在Oracle数据库中自动生成了我们所需要的表结构,但是并没有帮我把数据成功导入过去。于是我们采用了生成离线数据移动脚本的方式来导数据。 在移植向导中的项目页中,我们选择了脚本生成的目录,打开该目录,可以看到一个名为“数据移动项目名称日期时间”的子目录,其中包含了如下图所示的文件: 看以看到其中包含了4个脚本文件,两个是用于Windows的,另两个是用于*nix的。名为unload_script的是数据导出脚本,用于从源数据库中生成数据导出文件,名为oracle_ctl的是数据导入脚本。 打开cmd,浏览到当前目录,执行以下命令以导出数据:
其中的server是源数据库服务器,username和password是能访问到源数据库的用户名密码。稍等一会,提示导出完成后,接着执行下面命令以导入数据:
在这里不需要指定数据库名之类的,因为在脚本中已经指定了。 等待片刻导入完毕后即可。蛮简单的。不明白为什么联机就是不能成功,做的难道不是一样的工作嘛。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |