一、环境和需求 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表空间爆满影响数据导入。