全部產品
Search
文件中心

AnalyticDB:Oracle Golden Gate

更新時間:Jul 06, 2024

Oracle Golden Gate(OGG)可用於將Oracle中的資料同步到AnalyticDB MySQL中。

Oracle Golden Gate資料類型與AnalyticDB MySQL相容性

源端目標端同步行為
OracleMySQLAnalyticDB MySQLINSERTUPDATADELETE
number(3)bool或tinyint(1)boolean支援支援支援
number(3)tinyinttingyint支援支援支援
number(5)smallintsmallint支援支援支援
number(10)intint/integer支援支援支援
number(19)bigintbigint支援支援支援
float(24)floatfloat支援支援支援
float(24)doubledouble支援支援支援
float(24)decimaldecimal支援支援支援
varchar2(128)charvarchar(128)支援支援支援
varchar2(2000)varchar(255)varchar(255)支援支援支援
varchar2(4000)textvarchar(65535)支援支援支援
datedatedate支援支援支援
datetimetime不支援該功能、MySQL不適用不支援該功能、MySQL不適用不支援該功能、MySQL不適用
datedatetimedatetime支援支援支援
datetimestamptimestamp支援支援支援

通過OGG將Oracle資料同步到AnalyticDB MySQL

  1. 使用OGG帳號登入ECS。
    sqlplus ogg/ogg
  2. 執行以下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)
    );
  3. 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。
  4. 執行以下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`)
    ) DISTRIBUTE 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`)
    ) DISTRIBUTE BY HASH(`group_key`) INDEX_ALL='Y';
  5. 執行以下SQL在AnalyticDB 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)
    ) DISTRIBUTE BY HASH(`c1`) INDEX_ALL='Y'

附錄

  • INSERT同步insert
  • UPDATE同步update
  • DELETE同步delete