一、環境和需求 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表空間爆滿影響數據導入。