国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術(shù)文章
文章詳情頁

Oracle數(shù)據(jù)遷移MySQL的三種簡單方法

瀏覽:2日期:2023-09-18 20:52:52
目錄前言:測試遷移方法:遷移方式一(navicat)遷移方式二(navicat+sqluldr+load data infile)遷移方式三(navicat+Oracle GoldenGate(OGG))總結(jié)前言:

現(xiàn)今,Oracle數(shù)據(jù)遷移MySQL的需求已經(jīng)越來越普遍,主要的遷移場景大致可以分為三類,第一類是涉及小表以及少量表的一次性遷移,無需進(jìn)行增量同步,第二類是涉及大表以及多表的一次性遷移,第三類是涉及增量實時同步,而對于數(shù)據(jù)的遷移方法,常見的方式有使用第三方的同步工具CDC進(jìn)行Oracle到MySQL的數(shù)據(jù)遷移、使用開源的同步工具以及應(yīng)用層面進(jìn)行遷移同步。

基于作者的遷移實施經(jīng)驗,本文接下來將講述三種操作相對簡單,可落地的Oracle數(shù)據(jù)遷移MySQL的方法。

測試遷移方法:遷移方法適合場景測試場景navicat操作簡單,同步效率一般,適合小表的一次性遷移Oracle一次性同步表test.test1到MySQL下的db1.test1navicat+sqluldr+load data infile操作較復(fù)雜,同步效率高,適合少量大表的一次性遷移Oracle一次性同步表test.test1到MySQL下的db1.test1navicat+Oracle GoldenGate(OGG)操作復(fù)雜,同步效率較高,適合需要大批量的大表進(jìn)行遷移以及需要實時增量同步Oracle全量+實時增量同步表test.test1,test2到MySQL下的db1.test1,test2遷移方式一(navicat)

這種遷移方式主要適合小表的一次性遷移,navicat的同步效率速度一般。

遷移開始之前,我們需要先安裝navicat,在一臺能訪問Oracle源端和MySQL目標(biāo)端的機器上安裝即可。

安裝完navicat之后,配置源端Oracle連接

配置目標(biāo)端MySQL連接

開始進(jìn)行遷移,選擇工具--->數(shù)據(jù)傳輸

選擇源端Oracle以及目標(biāo)端MySQL

下一步選擇要同步的表TEST,也可以選擇同步全部表

傳輸模式選擇自動,點下一步開始進(jìn)行同步

傳輸同步完成,整個同步的效率還是較慢的,7.2W的數(shù)據(jù),用了1分鐘。

遷移方式二(navicat+sqluldr+load data infile)

這種遷移方式主要適合少量大表的一次性遷移,通過navicat工具進(jìn)行Oracle-->MySQL表結(jié)構(gòu)轉(zhuǎn)化,再通過sqluldr將Oracle數(shù)據(jù)導(dǎo)出到本地文件,最后再通過load data infile將數(shù)據(jù)導(dǎo)入MySQL。

注:navicat工具雖然有同步數(shù)據(jù)的功能,但在實際的操作過程中,同步數(shù)據(jù)的效率以及成功率都很低,所以這里只作為數(shù)據(jù)字典轉(zhuǎn)化的工具。

使用navicat工具進(jìn)行表結(jié)構(gòu)同步,步驟可以參考遷移方式一里面的操作,主要在數(shù)據(jù)傳輸同步時,選項里面只同步表結(jié)構(gòu),不創(chuàng)建記錄。

點擊開始,完成表結(jié)構(gòu)同步

接下來進(jìn)行數(shù)據(jù)的導(dǎo)出導(dǎo)入,先安裝導(dǎo)出工具sqluldr

---解壓安裝包unzip sqluldr2linux64.zip ./sqluldr2linux64.bin --help---拷貝sqluldr2linux64.bin到$ORACLE_HOME的bin目錄cp -rp sqluldr2linux64.bin $ORACLE_HOME/bin---重命名為sqluldr2.binmv sqluldr2linux64.bin sqluldr2.bin

測試安裝成功

[oracle@rac19a ~]$ sqluldr2.bin --help?SQL*UnLoader: Fast Oracle Text Unloader (GZIP, Parallel), Release 4.0.1(@) Copyright Lou Fangxin (AnySQL.net) 2004 - 2010, all rights reserved.?License: Free for non-commercial useage, else 100 USD per server.?Usage: SQLULDR2 keyword=value [,keyword=value,...]?Valid Keywords: user = username/password@tnsname sql = SQL file name query = select statement field = separator string between fields record = separator string between records rows = print progress for every given rows (default, 1000000) file = output file name(default: uldrdata.txt) log = log file name, prefix with + to append mode fast = auto tuning the session level parameters(YES) text = output type (MYSQL, CSV, MYSQLINS, ORACLEINS, FORM, SEARCH). charset = character set name of the target database. ncharset= national character set name of the target database. parfile = read command option from parameter file ? for field and record, you can use '0x' to specify hex character code, \r=0x0d \n=0x0a |=0x7c ,=0x2c, \t=0x09, :=0x3a, #=0x23, '=0x22 '=0x27

使用sqluldr導(dǎo)出為文本類型為MYSQL

sqluldr2.bin user=test/oracle@pdb1 query='select * from test' text=MYSQL field=',' charset=AL32UTF8 head='NO' file=/home/oracle/test_001.csv log=test.log

導(dǎo)出過程很快,58w的數(shù)據(jù),只需要7秒

0 rows exported at 2022-10-12 22:18:14, size 0 MB. 583680 rows exported at 2022-10-12 22:18:21, size 108 MB. output file /home/oracle/test_001.csv closed at 583680 rows, size 108 MB.

再將從Oracle導(dǎo)出的MYSQL文件導(dǎo)入MySQL數(shù)據(jù)庫

LOAD DATA INFILE '/tmp/test_001.csv' INTO TABLE test FIELDS TERMINATED BY ',' ENCLOSED BY ''';

導(dǎo)入過程很快,58w的數(shù)據(jù),只需要13秒

[email protected] 22:38: [db1]>LOAD DATA INFILE '/tmp/test_001.csv' INTO TABLE test FIELDS TERMINATED BY ',' ENCLOSED BY ''';Query OK, 583680 rows affected (13.43 sec)Records: 583680 Deleted: 0 Skipped: 0 Warnings: 0

整個數(shù)據(jù)同步過程還是較快的,但操作步驟較為繁瑣,不太適合多表操作。

遷移方式三(navicat+Oracle GoldenGate(OGG))

這種遷移方式適合大批量的大表或者需要增量同步的表進(jìn)行遷移,支持全量初始化+Oracle GoldenGate(OGG)增量同步,通過navicat工具進(jìn)行Oracle-->MySQL表結(jié)構(gòu)轉(zhuǎn)化,再通過數(shù)據(jù)同步工具OGG進(jìn)行全量表初始化以及后續(xù)的增量同步。

注意:使用增量方式同步的表都需要有主鍵,確保每行數(shù)據(jù)的唯一。

先使用navicat進(jìn)行表結(jié)構(gòu)的轉(zhuǎn)化,具體參考遷移方式二里面的步驟。

Oracle源端配置OGG準(zhǔn)備

1 數(shù)據(jù)庫開啟歸檔模式---查看是否開啟歸檔模式archive log list---開啟歸檔模式startup mountalter database archvielog ;alter database open;?2 數(shù)據(jù)庫開啟force_logging---查看是否開啟force loggingselect force_logging from v$database;----開啟force loggingalter database force logging;alter system switch logfile;?3 數(shù)據(jù)庫開啟補充日志supplemental logging---查看補充日志SELECT supplemental_log_data FROM v$database; ---開啟補充日志ALTER DATABASE ADD SUPPLEMENTAL LOG DATA; Alter system switch logfile;4 開啟ogg參數(shù)alter system set enable_goldengate_replication=true scope=both;5 配置stream_pool大小(MAX_SGA_SIZE * # of integrated Extracts) + 25% head room For example, using the default values for the MAX_SGA_SIZE with two integrated Extracts: ( 1GB * 2 ) * 1.25 = 2.50GB STREAMS_POOL_SIZE = 2560M

MySQL目標(biāo)端配置OGG準(zhǔn)備

1 開啟bin_log---確認(rèn)是否開啟bin_logshow variables like 'log_bin';2 開啟bin_log(需要重啟生效)在my,cnf 中 [mysqld] 添加如下[mysqld]# binlog configurationlog-bin = /usr/local/var/mysql/logs/mysql-bin.logexpire-logs-days = 14max-binlog-size = 500Mserver-id = 1?2 確認(rèn)binlog_format----確認(rèn)格式為rowshow variables like 'binlog_format';?3 確認(rèn)sql_mode ----確認(rèn)包含STRICT_TRANS_TABLESshow variables like 'sql_mode';?4 確認(rèn)版本----確認(rèn)版本,5.7.10之后才支持部分DDL(CREATE TABLE, ALTER TABLE, and DROP TABLE operations are supported.)select version();

創(chuàng)建ogg同步用戶

1 oracle源端同步用戶創(chuàng)建

create tablespace ogg_tbs datafile size 1g;create user ogg identified by 'oggoracle';grant resource,dba,connect to ogg;

2 mysql目標(biāo)端同步用戶創(chuàng)建

CREATE USER ogg IDENTIFIED by 'oggmysql';GRANT ALL PRIVILEGES ON *.* TO 'ogg'@'%';

Oracle源端安裝ogg軟件

1 配置環(huán)境變量

---/home/oracle/.bash_profileexport OGG_HOME=/u01/app/oggexport PATH=$OGG_HOME:$PATH

2 解壓安裝ogg軟件

---解壓安裝ogg軟件,安裝包:p31766135_191004_Linux-x86-64.zipcd /tmp/ unzip p31766135_191004_Linux-x86-64.zip cd 31766135/mv files/* /u01/app/ogg/---驗證oracle@rac19b ~]$ ggsci ?Oracle GoldenGate Command Interpreter for OracleVersion 19.1.0.0.4 31637694_FBOLinux, x64, 64bit (optimized), Oracle 19c on Aug 19 2020 20:08:53Operating system character set identified as UTF-8.?Copyright (C) 1995, 2019, Oracle and/or its affiliates. All rights reserved.?GGSCI (rac19b) 1>

3 創(chuàng)建ogg配置目錄

GGSCI (rac19b) 10> create subdirs?Creating subdirectories under current directory /home/oracle?Parameter file /u01/app/ogg/dirprm: created.Report file /u01/app/ogg/dirrpt: created.Checkpoint file/u01/app/ogg/dirchk: created.Process status files /u01/app/ogg/dirpcs: created.SQL script files /u01/app/ogg/dirsql: created.Database definitions files /u01/app/ogg/dirdef: created.Extract data files /u01/app/ogg/dirdat: created.Temporary files/u01/app/ogg/dirtmp: created.Credential store files /u01/app/ogg/dircrd: created.Masterkey wallet files /u01/app/ogg/dirwlt: created.Dump files /u01/app/ogg/dirdmp: created.?GGSCI (rac19b) 11>

4 啟動MGR進(jìn)程

---編輯mgr配置cd /u01/app/ogg/./ggsciGGSCI (rac19b) 1> edit params mgr---配置以下參數(shù)PORT 7809 autorestart extract * ,waitminutes 2,resetminutes 5PURGEOLDEXTRACTS /u01/app/ogg/dirdat/*,USECHECKPOINTS,MINKEEPDAYS 5LAGREPORTHOURS 1LAGINFOMINUTES 30LAGCRITICALMINUTES 45 ---啟動mgr進(jìn)程GGSCI (rac19b) 1> start mgrManager started.?GGSCI (rac19b) 2> info all?Program Status Group Lag at Chkpt Time Since Chkpt?MANAGER RUNNING?

MySQL目標(biāo)端安裝ogg軟件

1 配置環(huán)境變量

---/etc/profileexport OGG_HOME=/opt/oggexport PATH=$OGG_HOME:$PATH

2 解壓安裝ogg軟件

---解壓安裝ogg軟件,安裝包:ggs_Linux_x64_MySQL_64bit.tar cd ogg/tar xvf /tmp/ggs_Linux_x64_MySQL_64bit.tar ---驗證[mysql@rac19a ~]$ ggsci ?Oracle GoldenGate Command Interpreter for MySQLVersion 19.1.0.0.3 OGGCORE_19.1.0.0.0_PLATFORMS_190907.0144Linux, x64, 64bit (optimized), MySQL Enterprise on Sep 7 2019 08:41:32Operating system character set identified as UTF-8.?Copyright (C) 1995, 2019, Oracle and/or its affiliates. All rights reserved.

3 創(chuàng)建ogg配置目錄

GGSCI (rac19a) 1> create subdirs?Creating subdirectories under current directory /home/mysql?Parameter file /opt/ogg/dirprm: created.Report file /opt/ogg/dirrpt: created.Checkpoint file/opt/ogg/dirchk: created.Process status files /opt/ogg/dirpcs: created.SQL script files /opt/ogg/dirsql: created.Database definitions files /opt/ogg/dirdef: created.Extract data files /opt/ogg/dirdat: created.Temporary files/opt/ogg/dirtmp: created.Credential store files /opt/ogg/dircrd: created.Masterkey wallet files /opt/ogg/dirwlt: created.Dump files /opt/ogg/dirdmp: created.

4 啟動MGR進(jìn)程

---編輯mgr配置cd /opt/ogg/./ggsciGGSCI (rac19b) 1> edit params mgr---配置以下參數(shù)PORT 7809 AUTOSTART REPLICAT *AUTORESTART REPLICAT *,RETRIES 5,WAITMINUTES 2,RESETMINUTES 10PURGEOLDEXTRACTS /opt/ogg/dirdat/*,USECHECKPOINTS,MINKEEPDAYS 5ACCESSRULE, PROG *, IPADDR 192.168.2.*, ALLOWLAGREPORTHOURS 1LAGINFOMINUTES 30LAGCRITICALMINUTES 45---啟動mgr進(jìn)程GGSCI (rac19a) 2> start mgrManager started.??GGSCI (rac19a) 3> info all?Program Status Group Lag at Chkpt Time Since Chkpt?MANAGER RUNNING

5 配置全局文件以及檢查表

---ogg連接MySQLGGSCI (rac19a DBLOGIN as ogg) 8> dblogin sourcedb [email protected]:3306,userid ogg,password oggmysqlSuccessfully logged into database.---創(chuàng)建檢查表GGSCI (rac19a DBLOGIN as ogg) 9> ADD CHECKPOINTTABLE db1.checkpoint?Successfully created checkpoint table db1.checkpoint.?GGSCI (rac19a DBLOGIN as ogg) 10> ---配置文件設(shè)置全局檢查表GGSCI (rac19a DBLOGIN as ogg) 10> edit params ./GLOBALS ---添加以下配置CHECKPOINTTABLE db1.checkpoint

Oracle源端配置抽取以及投遞進(jìn)程(增量進(jìn)程)

1 對同步表添加補充日志

---ogg連接OracleGGSCI (rac19b) 3> dblogin userid ogg password oggoracle Successfully logged into database.---為表test.test1添加同步日志GGSCI (rac19b as ogg@testdb) 4> add trandata test.test1 ?2022-10-13 13:08:58 INFO OGG-15132 Logging of supplemental redo data enabled for table TEST.TEST1.?2022-10-13 13:08:58 INFO OGG-15133 TRANDATA for scheduling columns has been added on table TEST.TEST1.?2022-10-13 13:08:58 INFO OGG-15135 TRANDATA for instantiation CSN has been added on table TEST.TEST1.?2022-10-13 13:08:59 INFO OGG-10471 ***** Oracle Goldengate support information on table TEST.TEST1 ***** Oracle Goldengate support native capture on table TEST.TEST1.Oracle Goldengate marked following column as key columns on table TEST.TEST1: ID.---為表test.test2添加同步日志GGSCI (rac19b as ogg@testdb) 5> add trandata test.test2?2022-10-13 13:09:04 INFO OGG-15132 Logging of supplemental redo data enabled for table TEST.TEST2.?2022-10-13 13:09:04 INFO OGG-15133 TRANDATA for scheduling columns has been added on table TEST.TEST2.?2022-10-13 13:09:04 INFO OGG-15135 TRANDATA for instantiation CSN has been added on table TEST.TEST2.?2022-10-13 13:09:04 INFO OGG-10471 ***** Oracle Goldengate support information on table TEST.TEST2 ***** Oracle Goldengate support native capture on table TEST.TEST2.Oracle Goldengate marked following column as key columns on table TEST.TEST2: ID.?GGSCI (rac19b as ogg@testdb) 6>

2 創(chuàng)建EXTRACT抽取進(jìn)程

GGSCI (rac19b) 2> edit params e_test?extract E_TESTSETENV (ORACLE_HOME = '/u01/app/oracle/product/19.0.0/dbhome_1')SETENV (ORACLE_SID = 'testdb')SETENV (NLS_LANG = 'AMERICAN_AMERICA.AL32UTF8')userid ogg, password oggoracleexttrail ./dirdat/es?gettruncates TRANLOGOPTIONS INCLUDEREGIONID,EXCLUDEUSER oggTRANLOGOPTIONS BUFSIZE 2048000TRANLOGOPTIONS DBLOGREADER,DBLOGREADERBUFSIZE 2048000?DISCARDFILE ./dirrpt/E_TEST.dsc,APPEND,MEGABYTES 1000DISCARDROLLOVER AT 6:00REPORTROLLOVER AT 6:00REPORTCOUNT EVERY 1 HOURS,RATE??FETCHOPTIONS MISSINGROW ABENDSTATOPTIONS REPORTFETCH?WARNLONGTRANS 1H,CHECKINTERVAL 10m?DYNAMICRESOLUTIONTABLE TEST.TEST1;TABLE TEST.TEST2;

3 設(shè)置EXTRACT抽取進(jìn)程參數(shù)

GGSCI (rac19b) 2> edit params e_test?extract E_TESTSETENV (ORACLE_HOME = '/u01/app/oracle/product/19.0.0/dbhome_1')SETENV (ORACLE_SID = 'testdb')SETENV (NLS_LANG = 'AMERICAN_AMERICA.AL32UTF8')userid ogg, password oggoracleexttrail ./dirdat/es?gettruncates TRANLOGOPTIONS INCLUDEREGIONID,EXCLUDEUSER oggTRANLOGOPTIONS BUFSIZE 2048000TRANLOGOPTIONS DBLOGREADER,DBLOGREADERBUFSIZE 2048000?DISCARDFILE ./dirrpt/E_TEST.dsc,APPEND,MEGABYTES 1000DISCARDROLLOVER AT 6:00REPORTROLLOVER AT 6:00REPORTCOUNT EVERY 1 HOURS,RATE??FETCHOPTIONS MISSINGROW ABENDSTATOPTIONS REPORTFETCH?WARNLONGTRANS 1H,CHECKINTERVAL 10m?DYNAMICRESOLUTIONTABLE TEST.TEST1;TABLE TEST.TEST2;

4 創(chuàng)建EXTRACT投遞進(jìn)程

GGSCI (rac19b) 3> add extract P_TEST,exttrailsource ./dirdat/esEXTRACT added.?GGSCI (rac19b) 4> add RMTTRAIL ./dirdat/rs,ext P_TEST,megabytes 1000RMTTRAIL added.?GGSCI (rac19b) 5>?

5 設(shè)置EXTRACT投遞進(jìn)程參數(shù)

extract P_TESTuserid ogg, password oggoraclermthost 192.168.2.201, mgrport 7809rmttrail /opt/ogg/dirdat/rspassthru?DISCARDFILE ./dirrpt/P_TEST.dsc,APPEND,MEGABYTES 1000DISCARDROLLOVER AT 6:00?REPORTROLLOVER AT 6:00REPORTCOUNT EVERY 1 HOURS,RATE?TABLE TEST.TEST1;TABLE TEST.TEST2;

6 啟動源端抽取以及投遞進(jìn)程

---啟動抽取以及投遞進(jìn)程GGSCI (rac19b) 8> start *test?Sending START request to MANAGER ...EXTRACT E_TEST starting?Sending START request to MANAGER ...EXTRACT P_TEST starting?---確認(rèn)狀態(tài)正常runningGGSCI (rac19b) 14> info all?Program Status Group Lag at Chkpt Time Since Chkpt?MANAGER RUNNING EXTRACT RUNNING E_TEST 00:00:02 00:00:07 EXTRACT RUNNING P_TEST 00:00:00 00:00:03 ?GGSCI (rac19b) 15> ---確認(rèn)目標(biāo)端能接收到隊列文件?[mysql@rac19a dirdat]$ ls -rlthtotal 20K-rw-r----- 1 mysql mysql 19K Oct 13 13:24 rs000000000[mysql@rac19a dirdat]$

MySQL目標(biāo)端配置復(fù)制進(jìn)程(增量進(jìn)程)

1 添加復(fù)制進(jìn)程

GGSCI (rac19a DBLOGIN as ogg) 11> add replicat r_test,exttrail /opt/ogg/dirdat/rs,checkpointtable db1.checkpoint REPLICAT added.?GGSCI (rac19a DBLOGIN as ogg) 12> info all?Program Status Group Lag at Chkpt Time Since Chkpt?MANAGER RUNNING REPLICAT STOPPED R_TEST 00:00:00 00:00:04

2 配置復(fù)制進(jìn)程參數(shù)

GGSCI (rac19a DBLOGIN as ogg) 13> edit params r_test?replicat r_testsetenv (MYSQL_HOME='/usr/local/mysql')setenv (MYSQL_UNIX_PORT='/opt/mysql/data/mysql.sock')dboptions host 192.168.2.201,connectionport 3306targetdb db1,userid ogg, password oggmysql?discardfile /opt/ogg/dirrpt/r_test.dsc,append,megabytes 1000DISCARDROLLOVER AT 6:00?REPERROR (DEFAULT, ABEND)?MAXTRANSOPS 5000 HANDLECOLLISIONSREPORTROLLOVER AT 6:00REPORTCOUNT EVERY 1 HOURS, RATE MAP test.test1, TARGET db1.test1;MAP test.test2, TARGET db1.test2;

3 HANDLECOLLISIONS參數(shù)說明

參數(shù)是實現(xiàn) OGG 全量數(shù)據(jù)與增量數(shù)據(jù)銜接的關(guān)鍵,其實現(xiàn)原理是在全量數(shù)據(jù)初始完成之后,開啟增量抽取進(jìn)程,應(yīng)用全量數(shù)據(jù)初始化期間產(chǎn)生的 redo log。

當(dāng)全量應(yīng)用完成后,開啟增量回放進(jìn)程,應(yīng)用全量期間的增量數(shù)據(jù)。可能會出現(xiàn)數(shù)據(jù)沖突的情況,這就是為什么表一定要有主鍵或者唯一鍵,使用該參數(shù)后增量回放 DML 語句時主要有以下沖突場景及處理邏輯:

1 目標(biāo)端不存在 delete 語句的記錄,忽略該問題并不記錄到 discardfile。

2 目標(biāo)端丟失 update 記錄,更新的是主鍵值,update 轉(zhuǎn)換成 insert,更新的鍵值是非主鍵,忽略該問題并不記錄到 discardfile。

3 目標(biāo)端重復(fù) insert 已存在的主鍵值,這將被 replicat 進(jìn)程轉(zhuǎn)換為 UPDATE 現(xiàn)有主鍵值的。

4 在初始化數(shù)據(jù),并追完增量數(shù)據(jù)之后,建議把HANDLECOLLISIONS參數(shù)去掉,Oracle官方建議不要一直使用該參數(shù),這可能導(dǎo)致數(shù)據(jù)不準(zhǔn)。

Oracle源端配置數(shù)據(jù)初始化進(jìn)程(數(shù)據(jù)全量初始化進(jìn)程)

1 添加初始化進(jìn)程

GGSCI (rac19b) 17> add extract e_init,sourceistableEXTRACT added.

2 配置初始化進(jìn)程

GGSCI (rac19b) 20> edit params e_init?extract e_initSETENV (ORACLE_HOME = '/u01/app/oracle/product/19.0.0/dbhome_1')SETENV (ORACLE_SID = 'testdb')SETENV (NLS_LANG = 'AMERICAN_AMERICA.AL32UTF8')userid ogg, password oggoracleRMTHOST 192.168.2.201,MGRPORT 7809RMTTASK REPLICAT,GROUP r_init?table test.test1;table test.test2;

MySQL目標(biāo)端配置數(shù)據(jù)初始化進(jìn)程(數(shù)據(jù)全量初始化進(jìn)程)

1 添加初始化進(jìn)程

GGSCI (rac19b) 17> add extract e_init,sourceistableEXTRACT added.

2 配置初始化進(jìn)程

GGSCI (rac19b) 20> edit params e_init?extract e_initSETENV (ORACLE_HOME = '/u01/app/oracle/product/19.0.0/dbhome_1')SETENV (ORACLE_SID = 'testdb')SETENV (NLS_LANG = 'AMERICAN_AMERICA.AL32UTF8')userid ogg, password oggoracleRMTHOST 192.168.2.201,MGRPORT 7809RMTTASK REPLICAT,GROUP r_init?table test.test1;table test.test2;

全量數(shù)據(jù)初始化

數(shù)據(jù)初始化會將全表的數(shù)據(jù)通過創(chuàng)建的ogg進(jìn)程e_init,r_init從Oracle源端同步到MySQL目標(biāo)端。

1 啟動Oracle源端的e_init初始化進(jìn)程

GGSCI (rac19a DBLOGIN as ogg) 17> add replicat r_init,specialrun REPLICAT added.

2 目標(biāo)端查看同步的進(jìn)度

GGSCI (rac19a DBLOGIN as ogg) 18> edit params r_init?replicat r_initsetenv (MYSQL_HOME='/usr/local/mysql')setenv (MYSQL_UNIX_PORT='/opt/mysql/data/mysql.sock')dboptions host 192.168.2.201,connectionport 3306targetdb db1,userid ogg, password oggmysqldiscardfile /opt/ogg/dirrpt/r_init.dsc,append,megabytes 1000MAXTRANSOPS 5000 MAP test.test1, TARGET db1.test1;MAP test.test2, TARGET db1.test2;

3 同步完成,會輸出總的數(shù)量

Report at 2022-10-13 14:35:19 (activity since 2022-10-13 14:30:57)?Output to r_init:?From Table TEST.TEST1: # inserts: 999901 # updates: 0 # deletes: 0 # upserts: 0 # discards: 0From Table TEST.TEST2: # inserts: 1000000 # updates: 0 # deletes: 0 # upserts: 0 # discards: 0??REDO Log Statistics Bytes parsed 0 Bytes output 285986537

增量數(shù)據(jù)同步

1 啟動目標(biāo)端復(fù)制進(jìn)程r_test

GGSCI (rac19a DBLOGIN as ogg) 65> start r_test?Sending START request to MANAGER ...REPLICAT R_TEST starting??GGSCI (rac19a DBLOGIN as ogg) 66> info all?Program Status Group Lag at Chkpt Time Since Chkpt?MANAGER RUNNING REPLICAT RUNNING R_TEST 00:00:00 00:00:01

2 查看增量同步信息

GGSCI (rac19a DBLOGIN as ogg) 67> stats r_test?Sending STATS request to REPLICAT R_TEST ...?Start of Statistics at 2022-10-13 14:45:24.?Replicating from TEST.TEST1 to db1.test1:?---collisions解決沖突數(shù)據(jù)的行數(shù)*** Total statistics since 2022-10-13 14:45:17 *** Total inserts0.00 Total updates0.00 Total deletes 99.00 Total upserts0.00 Total discards 0.00 Total operations 99.00 Total delete collisions 99.00??Replicating from TEST.TEST2 to db1.test2:---增量update了10行*** Total statistics since 2022-10-13 14:45:17 *** Total inserts0.00 Total updates 10.00 Total deletes0.00 Total upserts0.00 Total discards 0.00 Total operations 10.00??End of Statistics.?

3 注釋去除HANDLECOLLISIONS參數(shù)

注:要在增量同步進(jìn)程應(yīng)用完初始化期間產(chǎn)生的日志以及實時同步之后,再去除參數(shù)。

#編輯配置文件,注釋---HANDLECOLLISIONSGGSCI (rac19a DBLOGIN as ogg) 71> edit params r_test?replicat r_testsetenv (MYSQL_HOME='/usr/local/mysql')setenv (MYSQL_UNIX_PORT='/opt/mysql/data/mysql.sock')dboptions host 192.168.2.201,connectionport 3306targetdb db1,userid ogg, password oggmysql?discardfile /opt/ogg/dirrpt/r_test.dsc,append,megabytes 1000DISCARDROLLOVER AT 6:00?REPERROR (DEFAULT, ABEND)?MAXTRANSOPS 5000??---HANDLECOLLISIONSREPORTROLLOVER AT 6:00REPORTCOUNT EVERY 1 HOURS, RATE MAP test.test1, TARGET db1.test1; MAP test.test2, TARGET db1.test2;?#重啟進(jìn)程生效GGSCI (rac19a DBLOGIN as ogg) 73> stop r_test?Sending STOP request to REPLICAT R_TEST ...Request processed.??GGSCI (rac19a DBLOGIN as ogg) 74> start r_test?Sending START request to MANAGER ...REPLICAT R_TEST starting??GGSCI (rac19a DBLOGIN as ogg) 75>

4 測試數(shù)據(jù)同步情況

Oracle源端刪除999行數(shù)據(jù),當(dāng)前數(shù)據(jù)99001

SQL> select count(*) from test.test2;? COUNT(*)---------- 1000000?SQL> delete from test.test2 where rownum<1000;?999 rows deleted.?SQL> commit;?Commit complete.?SQL> select count(*) from test.test2;? COUNT(*)---------- 999001?SQL>

MySQL目標(biāo)端同步刪除的操作,數(shù)據(jù) 一致都為999001

[email protected] 14:33: [db1]>select count(*) from db1.test2;+----------+| count(*) |+----------+| 999001 |+----------+1 row in set (0.17 sec)[email protected] 14:54: [db1]>?

使用navicat+Oracle GoldenGate(OGG)的方式,操作步驟比較復(fù)雜,但如果需要遷移的表多,并且需要實時的增量同步,那么還是比較適合的。

總結(jié)

到此這篇關(guān)于Oracle數(shù)據(jù)遷移MySQL的三種簡單方法的文章就介紹到這了,更多相關(guān)Oracle數(shù)據(jù)遷移MySQL內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Oracle 數(shù)據(jù)庫
主站蜘蛛池模板: 成人性生免费视频 | 国产高清在线精品一区 | 亚洲 欧美 精品 中文第三 | 亚洲日产综合欧美一区二区 | 久久精品视频一区二区三区 | 亚洲福利视频精选在线视频 | 99久久精品国产免费 | 成人免费一区二区三区在线观看 | 黄色美女免费网站 | 亚洲成人国产 | 色久网| 国产精品久久久 | 免费观看欧美成人h | 亚洲精品成人a在线观看 | 99精品免费观看 | 免费观看的毛片手机视频 | 国产久草视频 | 另类视频在线观看 | 韩国毛片 免费 | 欧美一级高清片免费一级 | 欧美日韩视频在线第一区 | 亚洲天堂免费视频 | 国内精品久久久久影院网站 | 99久久99热久久精品免费看 | 精品欧美成人高清视频在线观看 | 亚洲人成网站观看在线播放 | 亚洲综合色一区二区三区另类 | 最新欧美精品一区二区三区不卡 | 九九色在线视频 | 亚洲成成品网站有线 | 中文字幕在线看 | 成年女人毛片免费播放人 | 一级片爱爱 | 伊在人亚洲香蕉精品区 | 久久精品国产一区二区三区日韩 | 一级做a爰片久久毛片人呢 一级做a爰片久久毛片唾 | 99精品视频免费观看 | 亚洲一区二区精品 | 久久国产精品二区99 | 在线观看国产区 | a一级爱做片免费 |