溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

oracle上的數據怎么遷移到到mysql

發布時間:2021-08-16 17:30:39 來源:億速云 閱讀:196 作者:chen 欄目:MySQL數據庫

這篇文章主要介紹“oracle上的數據怎么遷移到到mysql”,在日常操作中,相信很多人在oracle上的數據怎么遷移到到mysql問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”oracle上的數據怎么遷移到到mysql”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

首先在oracle端和mysql端安裝上OGG,安裝很簡單,然后在oracle源端和目標端配置好mgr(端口需要一致),然后在源端配置上抓取進程,在目標端配置上replicate進程(只運行一次即可),然后在源端使用DEFGEN命令做映射文件,并把文件傳到mysql端相應目錄下。啟動源端的抓取進程即可實現數據庫初始化,也就完成了數據遷移。

注意事項和相關報錯:

1,oracle到mysql的ogg屬于異構的ogg, 需要借助DEFGEN命令生成一個映射文件,也就是兩個表的映射關系,并把文件放到目標端相應位置下。否則會報錯WARNING OGG-01194  EXTRACT task RINIG1 abended : Could not find definition for INFOSERVICE.T_MEMBER_INFO_SUM

2,在源端配置抓取進程,需要注意的是:初始化數據庫過程需要一個的抓取進程,之后保持數據同步也需要一個抓取進程,這兩個抓取進程是有區別的,然后目的端也需要兩個replicate進程,一個用來初始化數據庫,一個用來實時同步數據 。

3,注意oracle字段默認是區分大小寫的,但是mysql默認是不區分的。如下:

mysql> select login_id from T_MEMBER_INFO where login_id = 'SHFRONT';

+----------+

| login_id |

+----------+

| shfront  |

| SHFRONT  |

+----------+

2 rows in set (0.81 sec)

需要這樣修改,讓mysql對大小寫敏感。

mysql> alter table T_MEMBER_INFO modify  login_id varchar(100) binary;

mysql> select login_id from T_MEMBER_INFO where login_id = 'SHFRONT';

+----------+

| login_id |

+----------+

| SHFRONT  |

+----------+

1 row in set (0.78 sec)

如果mysql的主鍵是login_id,那么可能會遇到下面這個報錯,主鍵沖突,真正的原因是:mysql字段值默認是不區分大小寫

報錯:WARNING OGG-01004  Aborted grouped transaction on 'liuwenhe.T_MEMBER_INFO_SUM', Database error 1062 ([SQL error 1062]Duplicate entry 'shandongchaoyue' for key 'PRIMARY'

從oracle轉到MySQL的OGG,在使用mysql過程中,會遇到很多不同于oracle的問題,初始化數據的時候總是報主鍵沖突,但是這些數據都是從同樣表結構的oracle數據庫中導出來的,當然主鍵也是一樣的。

查看了一下數據文件,發現存在很多數據只是大小寫不一樣,如’goolen,‘GOOLEN’,‘Goolen’這樣的數據,

其實MySQL中,字段值默認是不區分大小寫的,也就是說插入值‘abc’和'ABC‘是等價的,

下面展示具體的配置:

源端oracle 抓取進程配置:

[oracle@master2 ggs]$ cd   /u01/OGG_linux/ggs 

[oracle@master2 ggs]$ ./ggsci

Oracle GoldenGate Command Interpreter for Oracle

Version 11.2.1.0.1 OGGCORE_11.2.1.0.1_PLATFORMS_120423.0230_FBO

Linux, x64, 64bit (optimized), Oracle 11g on Apr 23 2012 08:32:14

Copyright (C) 1995, 2012, Oracle and/or its affiliates. All rights reserved.

1,GGSCI (master2) 1>  create  subdirs  

Creating subdirectories under current directory /u01/OGG_linux/ggs

Parameter files                /u01/OGG_linux/ggs/dirprm: already exists

Report files                   /u01/OGG_linux/ggs/dirrpt: created

Checkpoint files               /u01/OGG_linux/ggs/dirchk: created

Process status files           /u01/OGG_linux/ggs/dirpcs: created

SQL script files               /u01/OGG_linux/ggs/dirsql: created

Database definitions files     /u01/OGG_linux/ggs/dirdef: created

Extract data files             /u01/OGG_linux/ggs/dirdat: created

Temporary files                /u01/OGG_linux/ggs/dirtmp: created

Stdout files                   /u01/OGG_linux/ggs/dirout: created,

2,登錄數據庫 

GGSCI (master2) 3> dblogin userid ogg,password ogg

Successfully logged into database.

3,添加需要同步的用戶到ogg

開啟scott用戶下所有表的附加日志

GGSCI (WebServer) 3> add trandata infoservice.*

2013-03-08 11:02:33  WARNING OGG-00869  No unique key is defined for table 'BONUS'.

All viable columns will be used to represent the key, but may not guarantee

uniqueness.  KEYCOLS may be used to

define the key.

Logging of supplemental redo data enabled

for table SCOTT.BONUS.

Logging of supplemental redo data enabled

for table SCOTT.DEPT.

Logging of supplemental redo data enabled

for table SCOTT.EMP.

2013-03-08 11:02:34  WARNING OGG-00869  No unique key is defined for table

'SALGRADE'. All viable columns will be used to represent the key, but may not

guarantee uniqueness.  KEYCOLS may be

used to define the key.

Logging of supplemental redo data enabled

for table SCOTT.SALGRADE.

4,GGSCI (WebServer) 4> info trandata scott.*

Logging of supplemental redo log data is

enabled for table SCOTT.BONUS.

Columns supplementally logged for table

SCOTT.BONUS: ENAME, JOB, SAL, COMM.

Logging of supplemental redo log data is

enabled for table SCOTT.DEPT.

Columns supplementally logged for table

SCOTT.DEPT: DEPTNO.

Logging of supplemental redo log data is

enabled for table SCOTT.EMP.

Columns supplementally logged for table

SCOTT.EMP: EMPNO.

Logging of supplemental redo log data is

enabled for table SCOTT.SALGRADE.

Columns supplementally logged for table

SCOTT.SALGRADE: GRADE, LOSAL, HISAL.

3,GGSCI (master2) 3>edit params mgr

PORT 7839

4,GGSCI (master2) 3> start  mgr

5,GGSCI (master2) 3>info  mgr

Manager is running (IP port

WebServer.7839).

1.抓取進程

GGSCI (oracle3) 10>add extract  ext_1,sourceistable     ####sourceistable代表直接從表中讀取數據

GGSCI (oracle3) 10> view params ext_1

extract ext_1

setenv (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)

userid goldengate@cbl , password ogg123456

rmthost 192.168.0.12,mgrport 7839

rmttask replicat,group rinig1

table INFOSERVICE.T_MEMBER_INFO;

2.DEFGEN命令生成的映射文件。

1)創建DEFGEN工具的參數文件;

GGSCI (oracle3) 3> view params defgen

defsfile ./dirdef/source.def, purge

userid ogg@rman_cbl1 , password ogg

TABLE INFOSERVICE.T_PUBLISH_INFO;

TABLE INFOSERVICE.T_PUBLISH_ZBXX;

TABLE INFOSERVICE.T_MEMBER_INFO;

TABLE INFOSERVICE.T_MEMBER_INFO_FUBIAO1;

TABLE INFOSERVICE.T_MEMBER_INFO_SUM;

TABLE INFOSERVICE.T_MEMBER_MY;

TABLE INFOSERVICE.T_MEMBER_MY_INFO;

TABLE INFOSERVICE.T_PUBLISH_INFO_SUM_TONGJI;

TABLE INFOSERVICE.USER_REGIST_LS_FAIL;

TABLE INFOSERVICE.USER_REGIST_LS;

2))運行DEFGEN工具生成數據定義文件

進入GGSCI安裝目錄下,命令行執行:

[oracle@oracle3 ogg]$./defgen paramfile dirprm/defgen.prm

3)把生成的文件 scp到目標端相應文件下:

[oracle@oracle3 ogg]scp /home/oracle/ogg/dirdef/source.def  root@192.168.0.12:/files/ogg/dirdef/source.def

目標端:replicate 配置:

GGSCI (db2) 1> add replicat rinig1,specialrun //specialrun代表只運行一次

注意下面的target liuwenhe.T_MEMBER_INFO

GGSCI (server02) 12> view params  rinig1

replicat rinig1

sourcecharset ZHS16GBK

setenv (NLS_LANG=AMERICAN_AMERICA.zhs16gbk)

sourcedefs ./dirdef/source.def

sourcedb infoservice,userid ogg,password ogg

discardfile ./dirrpt/rinig1.dsc,purge

map infoservice.T_MEMBER_INFO, target liuwenhe.T_MEMBER_INFO  REPERROR (1403, discard);

最后打開源端的抓取進程即可

GGSCI (oracle3) 3>start ext_1

GGSCI (oracle3) 3> view report ext_1      ###查看輸出結果

最后可以看日志:

ogg錯誤日志

[root@server02 dirdef]# find  / -name ggserr.log

[root@server02 dirdef]#tail -f /files/ogg/ggserr.log

總結:

oracle到mysql的ogg需要借助defgen命令生成的映射文件,并把文件傳到目標端相應位置下,才能完成數據庫初始化,用于初始化的replicate進程,只會運行一次。注意字符集問題,就是源端的抓取進程配置的字符集和目標端replicate配置的字符集必須是一樣的,否則可能會導致只導進去一部分數據。

到此,關于“oracle上的數據怎么遷移到到mysql”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女