一、环境和需求 1、环境

Mysql数据库服务器:

OS version:linux 5.3 for 64 bit

Mysql Server version: 5.0.45

Oracle数据库服务器:

OS version:linux 5.3 for 64 bit

Oracle version:oracle 11g r2

2、需求

       把mysql数据库的数据转移到oracle数据库。目前mysql数据库的备份文件为.sql文件,每个表一个.sql文件,把这些文件的数据导入到oracle数据库。

二、mysql数据恢复

       采用先把mysql数据库备份文件恢复到一个mysql测试库中,然后使用oracle sql developer把mysql测试库中的数据转移到oracle数据库。

       mysql备份恢复到myql测试库:

       因为本次试验采用的mysql备份为.sql文件,所以采用批量source处理。批量执行.sql文件,实现在mysql测试库重新建立表并恢复数据。

       如果备份文件采用的是其他方式,则需要用对应的恢复办法进行恢复。

       恢复操作:

[root@localhost ~]# mysql -u root -p

Enter password: ---输入root用户的密码。

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 90

Server version: 5.0.45 Source distribution

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> use test;

Database changed

mysql> source actors.sql;

mysql> source act_tactics.sql;

mysql> ………………

一次把所有的.sql文件贴在mysql的命令窗口,批量执行即可。

       注:因为mysql库是生产库,不能直接做实验,所以才把备份恢复到一个测试库中,进行测试,实际中如果可以直接连mysql数据库,则这一步可以省略。

三、通过oracel sql developer转换数据库

       Mysql转到oracle数据库,要根据不同情况选择不同的方法:

1、从现有的mysql库直接转到oracle数据库

这是不用恢复mysql数据库,直接可以用sql developer转到oracle里,这时要现在oracle数据库中建好用户(用户名为mysql数据库名,密码也是mysql数据库名,两者必须一致不然导入不成功,而且视图好像无法导入,无奈本人最后只能通过手工执行),选好默认表空间,mysql数据就会导入到该用户下。

2、从mysql数据库导出的sql文件导入到oracle数据库

如果是只有mysql的导出文件,则需要先把该文件恢复到一个mysql数据库中,然后再把恢复后的mysql数据库转换到oracle数据库中。

这种情况要注意oracle数据库的用户名。因为sql developer把mysql转换到oracle数据库中时,会把mysql的数据存放到一个用户下,这个用户名一定会和mysql的数据库名相同。如果oracle中已有这个用户,则数据直接导入到该用户下;如果没有这个用户,则sql developer会直接创建这样的用户,并把数据导入到该用户下。需要注意的是,sql developer默认创建的oracle数据库用户的默认表空间是user,如果不注意,很有可能会导致user表空间爆满!!!所以这种情况最好先建一个和mysql数据库名一样的oracle用户,以防止user表空间爆满影响数据导入。