mysql遷移oracle伺服器 過程筆記

2021-08-20 09:37:27 字數 3711 閱讀 6022

2023年記

需求:公司要求把windows上的mysql資料遷移遷移到aix中的oracle

準備階段:

一、備份mysql庫到本地例"gs0704"

二、再備份乙個用於修改字段型別的庫「gs0314」

修改gs0314,用於mysql to oracle的操作

1。刪除表內的所有外來鍵

2。檢查修改所有表名和字段的長度(oracle要求不超過32個字元)

3。修改mysql

例:表名過長、字段關鍵字、欄位名過長、字段型別text轉為varchar(長度根據實際情況定義,如超過4000位元組,text不變). bit型別改為bigint

gs_bankaccount 名下的account列 定義的長度不夠 40以上

gs_combination 列number為關鍵字。改為number_

gs_companyprofessionaevaluation 表名過長  現變為:gs_companyprofessionaevaluatio

gs_customer intro最長有8019個字,只能用text型別 ,"address" 的值太大400

gs_callcategory"."content" 的值太大100

# pub_group 中_id,_name去掉'_'

pub_organ2user *  share 欄位在oracle中是關鍵字。不能使用,現改為share_

# pub_view_history * _time改為time,_name 改為name

pub_jobgrade  字段   為關鍵字 改為level_

pub_permission _order 在表列名改為order_

修改所有的檢視

注:oracle 中if 寫法:case when (b.status = 1) then 1 else 0 end)

用工具convert mysql to oracle 4.0 得到欄位名與長度等問題

4。備份外來鍵指令碼

例:gs0314_tables_0712fk.sql

(mysql to oracle 可能會出現外來鍵列的值後面多出空格,先清除空格再建立外來鍵)

5。備份索引指令碼

例:gs0704_tables_index.sql

6。備份mysql資料增量處理指令碼

例:mysql資料增量處理指令碼.sql

commit;

清除所有資料再重新匯入

或 根據修改標識再更新資料

create table tmp as  select b.id as id from gs0704.gs_assert2user a

left join gs0314.gs_assert2user b on  a.id= b.id

where a.id is null or a.effectivedate > b.effectivedate;

delete from gs0314.gs_assert2user where id in(select * from tmp);

drop table tmp;

insert into gs0314.gs_assert2user

select a.* from gs0704.gs_assert2user a

left join gs0314.gs_assert2user b on a.id = b.id

where b.id is null or a.effectivedate > b.effectivedate;

commit;

7。備份庫(0314)與測試庫(0704)記錄數比對指令碼

例:備份庫與測試庫記錄數比對指令碼.sql

寫入所有的表,建立對比表「tempnum」.對比完成無誤後刪除。

8。備份序列

例:oracle序列指令碼.sql

-- create sequence 

create sequence gs_budgetamount_0

minvalue 1

maxvalue 9999999999999999999999999999

start with 2259

increment by 1

nocache

order;

在mysql to oracle 後 檢查mysql中的自增長 列 與oracle中序列的配

三、建立oralce 表空間 與使用者

例:建立表空間-

create tablespace gs0704 datafile '/oradata/data/gs/gs0704.dbf' size 50m autoextend on next 50m maxsize 20480m  extent management local;

建立使用者-

create user gs identified by gstemp123 default tablespace gs0704;

分配許可權-

grant dba to gs0704; --授權為管理員角色

grant connect,resource to gs0704;

開始對比遷移

四、同步資料庫

鎖定正式庫。用mysql工具 把mysql正式庫 同步到 本機備份庫

記錄表和列 修改的地方。再本地to oracle的修改庫上進行修改。

同時修改對應的指令碼,比如外來鍵、索引、增量等指令碼。

五、本地mysql備份庫與to oracle修改庫 進行資料增量同步

執行 mysql資料增量處理指令碼.sql 指令碼

如報錯,說明列或表 不對應。如 (四、同步資料庫)

六、核查資料是否成功同步

執行 備份庫與測試庫記錄數比對指令碼.sql

檢視tempnum表,確認記錄數是否一致。

七、利用工具進行mysql to oracle的遷移

現在用的工具為:convert mysql to oracle 4.0 (具體過程 網上有教程)

完成後,檢視提示資訊。如有錯誤進行對應的修改。

mysql to oracle 到目前為止,mysql方面完成。

八、對比mysql 與 oracle記錄數

oracle 檢視所有表的記錄數 :

select t.table_name,t.num_rows from user_tables t order by t.table_name

如有表不對應,最後對此表進行 重置同步資料。

九、修改oacle中的blob資料問題

mysql to oracle 工具,遇到text型別 會 轉為 blob型別,如果要轉為clob型別 方法如下:

例:oracle blob to clob指令碼.sql

具體參見

十、檢查修改oracle中的外來鍵

執行:gs0314_tables_0712fk.sql 指令碼

如報:外來鍵已存在,不用管,說明oracle已建立。注意其它的錯誤。

十一、檢查修改oracle的索引

執行:gs0704_tables_index.sql 指令碼

如報:索引已存在,不用管,說明oracle已建立。注意其它的錯誤。

十二、檢查對比序列(mysql中的自增長)

檢視:oracle序列指令碼.sql    

確認所有的自增長列都有對應的序列

十三、加入檢視

手工修改mysql的檢視(部份語法不同),加入到oracle庫中。

ok,完成。。更改業務系統jdbc連線。

注:修改po對映時的 型別,例:clob等

Oracle遷移到MySQL總結

日期 2012 06 01 字型 大中小 這兩個星期裡一直都在忙於一件事兒,就是oracle資料庫的遷移問題。沒有做的時候感覺這是一件十分輕鬆的事兒,可是等到實實在在去做去實現的時候,自己傻眼了。這種糾結啊,在這裡先說下遇到的問題 1。資料庫的表結構問題 資料型別不同需要解決varchar2 var...

Oracle與MySQL遷移語法相容

最近專案上使用oracle的系統,需要相容mysql,原本使用到的sql語法需要修改以相容到mysql。先記錄下目前遇到的問題,後續會繼續更新。1,oracle nvl 這個函式用的比較多,功能就是從兩個表示式返回乙個非 null 值,mysql ifnull expr1,expr2 也有相同功能 ...

將MySQL資料遷移到Oracle

因為專案的原因,今晚將mysql資料庫的內容嘗試遷移到oracle,雖然結果失敗,不過學到了不少,下次就不一定了,哈哈 因為之前專案是使用mysql資料庫的,現在因為新公司要求使用oracle 公司大得很 不得不嘗試將以前專案進行遷移。經過查詢相關文件,最終選定使用oracle sql develo...