All Products
Search
Document Center

AnalyticDB:Oracle Golden Gate

Last Updated:Mar 29, 2026

Oracle GoldenGate (OGG) menyinkronkan data Oracle ke AnalyticDB for MySQL secara real time. Topik ini mencakup pemetaan tipe data antara Oracle dan AnalyticDB for MySQL serta memandu Anda dalam menyiapkan sinkronisasi end-to-end menggunakan OGG.

Prasyarat

Sebelum memulai, pastikan Anda telah memiliki:

  • Database Oracle dengan OGG yang terinstal di /odata/ogg_o_12202

  • Instance Elastic Compute Service (ECS) yang menjalankan database Oracle

  • Instance AnalyticDB for MySQL

  • Instance MySQL untuk menyimpan metadata checkpoint OGG

Kompatibilitas tipe data

OGG mengarahkan data dari Oracle melalui MySQL sebelum menulisnya ke AnalyticDB for MySQL. Tabel-tabel berikut menunjukkan cara tipe data Oracle dipetakan ke tipe data AnalyticDB for MySQL pada setiap tahap serta operasi DML yang didukung.

Tipe dikelompokkan berdasarkan kategori. Untuk setiap baris, periksa kolom Exact match: Yes berarti tipe Oracle dipetakan ke tipe ekuivalen tanpa kehilangan presisi atau makna semantik; No berarti pemetaannya bersifat perkiraan dan Anda harus memverifikasi kompatibilitasnya untuk data Anda.

Tipe numerik

Oracle typeOracle type notesMySQL typeAnalyticDB for MySQL typeExact matchINSERTUPDATEDELETE
NUMBER(3)integer 3 digitBOOL atau TINYINT(1)BOOLEANNoDidukungDidukungDidukung
NUMBER(3)integer 3 digitTINYINTTINYINTYesDidukungDidukungDidukung
NUMBER(5)integer 5 digitSMALLINTSMALLINTYesDidukungDidukungDidukung
NUMBER(10)integer 10 digitINTINT atau INTEGERYesDidukungDidukungDidukung
NUMBER(19)integer 19 digitBIGINTBIGINTYesDidukungDidukungDidukung
FLOAT(24)float presisi tunggalFLOATFLOATYesDidukungDidukungDidukung
FLOAT(24)float presisi tunggalDOUBLEDOUBLENoDidukungDidukungDidukung
FLOAT(24)float presisi tunggalDECIMALDECIMALNoDidukungDidukungDidukung

Tipe karakter

Oracle typeOracle type notesMySQL typeAnalyticDB for MySQL typeExact matchINSERTUPDATEDELETE
VARCHAR2(128)string panjang variabel, hingga 128 byteCHARVARCHAR(128)NoDidukungDidukungDidukung
VARCHAR2(2000)string panjang variabel, hingga 2000 byteVARCHAR(255)VARCHAR(255)No — dipotong menjadi 255 karakterDidukungDidukungDidukung
VARCHAR2(4000)string panjang variabel, hingga 4000 byteTEXTVARCHAR(65535)NoDidukungDidukungDidukung

Tipe tanggal dan waktu

Oracle typeOracle type notesMySQL typeAnalyticDB for MySQL typeExact matchINSERTUPDATEDELETE
DATEMenyimpan komponen tanggal dan waktu (tahun, bulan, hari, jam, menit, detik)DATEDATENo — komponen waktu hilangDidukungDidukungDidukung
DATEMenyimpan komponen tanggal dan waktu (tahun, bulan, hari, jam, menit, detik)TIMETIMENo — komponen tanggal hilangN/AN/AN/A
DATEMenyimpan komponen tanggal dan waktu (tahun, bulan, hari, jam, menit, detik)DATETIMEDATETIMEYesDidukungDidukungDidukung
DATEMenyimpan komponen tanggal dan waktu (tahun, bulan, hari, jam, menit, detik)TIMESTAMPTIMESTAMPYesDidukungDidukungDidukung
Catatan

Tipe DATE Oracle menyimpan komponen tanggal dan waktu. Memetakan DATE Oracle ke TIME MySQL akan menghilangkan komponen tanggal dan tidak mendukung sinkronisasi DML. Petakan DATE Oracle ke DATETIME atau TIMESTAMP untuk mempertahankan informasi tanggal dan waktu secara lengkap.

Menyinkronkan data Oracle ke AnalyticDB for MySQL

Alur sinkronisasi terdiri dari tiga tahap utama: buat tabel sumber di Oracle dan konfigurasikan OGG, buat tabel metadata checkpoint di MySQL, lalu buat tabel target di AnalyticDB for MySQL.

Pernyataan DDL berikut menampilkan tabel sumber Oracle dan tabel target AnalyticDB for MySQL yang sesuai secara berdampingan sehingga Anda dapat melihat pemetaan tipe lengkap dalam konteks sebelum menjalankan langkah-langkahnya satu per satu.

Source (Oracle):

create table users.xqtest15 (
  c1  number(10),   -- maps to int
  c2  number(1),    -- maps to boolean
  c3  number(3),    -- maps to tinyint
  c4  number(5),    -- maps to smallint
  c5  number(19),   -- maps to bigint
  c6  float(24),    -- maps to float
  c7  float(24),    -- maps to double
  c8  float(24),    -- maps to decimal(24, 0)
  c9  char(1),      -- maps to varchar(128)
  c10 varchar2(2000), -- maps to varchar(255)
  c11 varchar2(4000), -- maps to varchar(65535)
  c12 date,         -- maps to date
  c13 date,         -- maps to time (DML not supported)
  c14 date,         -- maps to datetime
  c15 date,         -- maps to timestamp
  primary key(c1)
);

Target (AnalyticDB for MySQL):

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';

Langkah 1: Masuk ke instance ECS

Masuk ke instance ECS menggunakan akun Oracle:

sqlplus ogg/ogg

Langkah 2: Buat tabel sumber di Oracle

Jalankan pernyataan SQL berikut untuk membuat tabel sumber users.xqtest15:

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)
);

Langkah 3: Konfigurasikan trandata OGG

Setelah membuat tabel sumber, aktifkan supplemental logging untuk tabel tersebut di OGG:

# Buka direktori instalasi OGG dan jalankan ggsci
cd /odata/ogg_o_12202
./ggsci

Jalankan perintah berikut di prompt ggsci:

ggsci> dblogin userid goldengate, password ogg
ggsci> add trandata users.xqtest15
Penting

Jangan tambahkan tanda titik koma (;) di akhir perintah add trandata. Menambahkan tanda titik koma akan menyebabkan error No viable tables matched specification.

Langkah 4: Buat tabel metadata checkpoint di MySQL

OGG memerlukan dua tabel checkpoint di MySQL untuk melacak status replikasi. Jalankan pernyataan SQL berikut untuk membuatnya:

-- Checkpoint table
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 LOX table
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';

Langkah 5: Buat tabel target di AnalyticDB for MySQL

Buat tabel target yang menerima data hasil sinkronisasi dari Oracle. Tipe kolom mengikuti pemetaan yang tercantum dalam bagian Kompatibilitas tipe data di atas.

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';

Lampiran

Tangkapan layar berikut menunjukkan hasil sinkronisasi untuk setiap operasi DML.

  • Sinkronisasi INSERTinsert

  • Sinkronisasi UPDATEupdate

  • Sinkronisasi DELETEdelete