全部產品
Search
文件中心

AnalyticDB:Oracle Golden Gate

更新時間:Nov 05, 2024

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

  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`)
    ) 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';
  5. 執行以下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同步insert

  • UPDATE同步update

  • DELETE同步delete