您的位置:首页 > 数据库 > Oracle

Migration mass DB from Mysql to Oracle (原创)

2008-06-17 15:11 399 查看
主要工具:Oracle SQL Developer1.5.0.53 - Migration

原因:由于数据量越来越大,mysql也越来越承受不了,访问速度开始变慢。

情况:mysql里有31张表,其中有2张表的数据超大(2G左右)。由于此工具对这么大的数据处理是无能为力的,所以采用以下办法:

1)先把另外数据量少的29张利用工具能完美地导到Oracle。

2)然后把数据量超大的2张表分步地手工地在命令行里导入Oracle。

1. Oracle SQL Developer Tool

先把Mysql和Oracle的DB连接到Tool里面。

1)先Create Repository

2) 在Tool的Connections里选中Mysql右键Capture Mysql. 这步如果有问题,通常解决办法就是把以前的那些Repository DB删掉。

3) 在Captured Objects框里要把一些Sequences, Views, Indexes删除掉,同时把数据超大的那两张表A,B也删除掉。

4)在Captured Objects框里右键Convert to Oracle Mode, 然后在Converted Objects框里造句选中右键Generate产生建那29张表的sql语句,里面的开头语句关于新建一个与Mysql DB同名的Oracle DB。

5)执行sql语句新建一个DB和29张表。

6)在Converted Objects框里造句选中右键Move Data即可。

2. 导入数据量超大的2张表A和表B。

1) 按照1的步骤执行到第4步时,选Generate Data Move Scripts产生保存一些脚本,再找出A.ctl和B.ctl。

2) 在Oracle DB里独立为表A和表B建表,其中必须注意的是:a. 字段不能少,属性要一样,包括是否为空选项也要一样。b. 表里每个字段顺序必须与Mysql里表的字段顺序一样.

3) 用如下命令把表A和表B的数据导出:

只导出纯数据,不包含建表的脚本的TXT文件。 (在linux命令行下执行)

sudo mysqldump reader_prod Atable -v --host=localhost --port=3306 -T tmp --fields-terminated-

by="<EOFD>" --lines-terminated-by="<EORD>" --fields-escaped-by=''

4) 然后在oracle用户linux使命令行下执行:

sqlldr userid=username/password control=A.ctl

sqlldr userid=username/password control=B.ctl

注意:用户对文件的权限必须是可读可写。

另:如果你本机已经安装了Oracle的管理客户端,在使用Tool启动时会调用Oracle的管理客户端的JDBC jar包。但Tool需要用回自己的Jar包。所以需要手动做一个启动文件star.cmd

SET ORACLE_HOME=%CD%

START SQLDEVELOPER.exe
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: