Oracle Golden Gate(OGG)可用於將Oracle中的資料同步到AnalyticDB for MySQL中。
Oracle Golden Gate資料類型與AnalyticDB for MySQL相容性
源端 | 目標端 | 同步行為 | |||
Oracle | MySQL | AnalyticDB for MySQL | INSERT | UPDATA | DELETE |
number(3) | bool或tinyint(1) | boolean | 支援 | 支援 | 支援 |
number(3) | tinyint | tingyint | 支援 | 支援 | 支援 |
number(5) | smallint | smallint | 支援 | 支援 | 支援 |
number(10) | int | int/integer | 支援 | 支援 | 支援 |
number(19) | bigint | bigint | 支援 | 支援 | 支援 |
float(24) | float | float | 支援 | 支援 | 支援 |
float(24) | double | double | 支援 | 支援 | 支援 |
float(24) | decimal | decimal | 支援 | 支援 | 支援 |
varchar2(128) | char | varchar(128) | 支援 | 支援 | 支援 |
varchar2(2000) | varchar(255) | varchar(255) | 支援 | 支援 | 支援 |
varchar2(4000) | text | varchar(65535) | 支援 | 支援 | 支援 |
date | date | date | 支援 | 支援 | 支援 |
date | time | time | 不支援該功能、MySQL不適用 | 不支援該功能、MySQL不適用 | 不支援該功能、MySQL不適用 |
date | datetime | datetime | 支援 | 支援 | 支援 |
date | timestamp | timestamp | 支援 | 支援 | 支援 |
通過OGG將Oracle資料同步到AnalyticDB for MySQL
使用OGG帳號登入ECS。
sqlplus ogg/ogg
執行以下SQL在Oracle中建立源表。
drop table users.xqtest15; create table users.xqtest15 ( c1 number(10), c2 number(1), c3 number(3), c4 number(5), c5 number(19), c6 float(24), c7 float(24), c8 float(24), c9 char(1), c10 varchar2(2000), c11 varchar2(4000), c12 date, c13 date, c14 date, c15 date, primary key(c1) );
Oracle建表成功後,在OGG源端添加trandata。
[OGG帳號登入ECS] cd /odata/ogg_o_12202 [啟動OGG] ./ggsci ggsci> dblogin userid goldengate, password ogg ggsci> add trandata users.xqtest15
說明上述命令末尾不要加分號(;),否則將報錯No viable tables matched specification。
執行以下SQL在MySQL中建立表,儲存Oracle中的中繼資料。
-- checkpoint表 CREATE TABLE `ckpt1220` ( `group_name` varchar(8) NOT NULL, `group_key` decimal(19,0) NOT NULL, `seqno` decimal(10,0) DEFAULT NULL, `rba` decimal(19,0) NOT NULL, `audit_ts` varchar(29) DEFAULT NULL, `create_ts` datetime NOT NULL, `last_update_ts` datetime NOT NULL, `current_dir` varchar(255) NOT NULL, `log_bsn` varchar(128) DEFAULT NULL, `log_csn` varchar(128) DEFAULT NULL, `log_xid` varchar(128) DEFAULT NULL, `log_cmplt_csn` varchar(128) DEFAULT NULL, `log_cmplt_xids` varchar(2000) DEFAULT NULL, `version` decimal(3,0) DEFAULT NULL, PRIMARY KEY (`group_name`,`group_key`) ) DISTRIBUTED BY HASH(`group_key`) INDEX_ALL='Y';
-- checkpoint表 CREATE TABLE `ckpt1220_lox` ( `group_name` varchar(8) NOT NULL, `group_key` decimal(19,0) NOT NULL, `log_cmplt_csn` varchar(128) NOT NULL, `log_cmplt_xids_seq` decimal(5,0) NOT NULL, `log_cmplt_xids` varchar(2000) NOT NULL, PRIMARY KEY (`group_name`,`group_key`,`log_cmplt_csn`,`log_cmplt_xids_seq`) ) DISTRIBUTED BY HASH(`group_key`) INDEX_ALL='Y';
執行以下SQL在AnalyticDB for MySQL中建立目標表,儲存從Oracle同步過來的資料。
Create Table `xqtest15` ( `c1` int, `c2` boolean, `c3` tinyint, `c4` smallint, `c5` bigint, `c6` float, `c7` double, `c8` decimal(24, 0), `c9` varchar(128), `c10` varchar(255), `c11` varchar(65535), `c12` date, `c13` time, `c14` datetime, `c15` timestamp, primary key (c1) ) DISTRIBUTED BY HASH(`c1`) INDEX_ALL='Y'
附錄
INSERT同步
UPDATE同步
DELETE同步