全部产品
Search
文档中心

DataWorks:Oracle

更新时间:Mar 03, 2026

Sumber data Oracle memungkinkan Anda membaca dari dan menulis ke database Oracle dengan mengonfigurasi Tugas Sinkronisasi Data melalui Antarmuka tanpa kode (Codeless UI) atau editor kode (Code Editor). Topik ini menjelaskan fitur-fitur DataWorks untuk sinkronisasi data Oracle.

Versi yang didukung

Baca dan tulis data batch

Versi

Oracle reader

Oracle writer

Oracle 11.2 atau 11gR2

Didukung

Didukung

Oracle 12.1 atau 12cR1

Didukung

Didukung

Oracle 12.2 atau 12cR2

Didukung (Fitur baru pada versi ini tidak didukung)

Didukung (Fitur baru pada versi ini tidak didukung)

Oracle 18.3

Didukung (Fitur baru pada versi ini tidak didukung)

Didukung (Fitur baru pada versi ini tidak didukung)

Oracle 19.x

Didukung (Fitur baru pada versi ini tidak didukung)

Didukung (Fitur baru pada versi ini tidak didukung)

Oracle 21.1

Didukung (Fitur baru pada versi ini tidak didukung)

Didukung (Fitur baru pada versi ini tidak didukung)

Penting

Plugin Oracle Writer menggunakan driver ojdbc6-12.1.1.jar.

Baca data real-time

  • Didukung:

    Versi Oracle Database 11g R2 dan yang lebih baru, 12c non-CDB, 18c non-CDB, 19c non-CDB, dan 19c CDB.

  • Tidak didukung:

    Versi Oracle Database 12c CDB dan 18c CDB.

  • Untuk menggunakan Oracle sebagai Sumber dalam tugas sinkronisasi real-time seluruh database, Anda harus mengaktifkan fitur Archive Log. Untuk informasi selengkapnya, lihat Persiapkan lingkungan Oracle.

Catatan

Container Database (CDB) adalah arsitektur baru yang diperkenalkan di Oracle Database 12c dan versi setelahnya. CDB dapat menampung satu atau lebih Pluggable Database (PDB).

Batasan

  • Parameter `NLS_CHARACTERSET` dan `NLS_NCHAR_CHARACTERSET` untuk instans Oracle harus diatur ke salah satu nilai berikut: `AL32UTF8`, `AL16UTF16`, `ZHS16GBK`, atau `UTF8`.

  • Untuk satu instans Oracle, Sinkronisasi Real-time mendukung hingga 500 GB data inkremental per hari.

  • Untuk pembacaan real-time dari database standby Oracle, DataWorks hanya mendukung database standby fisik. Dalam skenario ini, DataWorks menarik archive log, yang mengakibatkan latensi lebih tinggi dibandingkan sinkronisasi dari database utama. Kecepatan pembuatan archive log menentukan latensi tersebut.

  • Sinkronisasi Real-time tidak mendukung tampilan (view), sedangkan Sinkronisasi Batch mendukung pembacaan view.

  • DataWorks menggunakan Oracle LogMiner untuk pembacaan real-time. Anda harus mengaktifkan supplemental logging dan archive log pada database utama Oracle.

  • Tabel yang diorganisasi berdasarkan indeks (Index-organized tables/IOTs) tidak didukung.

  • Tabel yang semua kolomnya bertipe LOB (BLOB, CLOB, atau NCLOB) tidak didukung.

  • Nama tabel dan kolom tidak boleh mengandung karakter Tionghoa.

  • Nama tabel tidak boleh melebihi 30 byte.

Tipe data yang didukung

Tipe

Pembacaan batch

Penulisan batch

Pembacaan real-time

NUMBER

Didukung

Didukung

Didukung

BINARY FLOAT

Didukung

Didukung

Didukung

BINARY DOUBLE

Didukung

Didukung

Didukung

CHAR

Didukung

Didukung

Didukung

NCHAR

Didukung

Didukung

Didukung

VARCHAR2

Didukung

Didukung

Didukung

NVARCHAR2

Didukung

Didukung

Didukung

DATE

Didukung

Didukung

Didukung

TIMESTAMP

Didukung

Didukung

Didukung

TIMESTAMP WITH TIME ZONE

Didukung

Didukung

Tidak didukung

TIMESTAMP WITH LOCAL TIME ZONE

Didukung

Didukung

Tidak didukung

CLOB

Didukung

Didukung

Didukung

BLOB

Didukung

Didukung

Didukung

RAW

Didukung

Didukung

Didukung

ROWID

Tidak didukung

Tidak didukung

Didukung

UROWID

Tidak didukung

Tidak didukung

Didukung

FLOAT

Didukung

Didukung

Didukung

INTERVAL DAY TO SECOND

Tidak didukung

Tidak didukung

Didukung

INTERVAL YEAR TO MONTH

Tidak didukung

Tidak didukung

Didukung

BFILE

Tidak didukung

Tidak didukung

Tidak didukung

LONG

Tidak didukung

Tidak didukung

Tidak didukung

LONG RAW

Tidak didukung

Tidak didukung

Tidak didukung

NCLOB

Didukung

Didukung

Tidak didukung

STRUCT

Didukung

Didukung

Tidak didukung

User-Defined Types

Tidak didukung

Tidak didukung

Tidak didukung

AnyType

Tidak didukung

Tidak didukung

Tidak didukung

AnyData

Tidak didukung

Tidak didukung

Tidak didukung

AnyDataSet

Tidak didukung

Tidak didukung

Tidak didukung

XmlType

Tidak didukung

Tidak didukung

Tidak didukung

Spatial Types

Tidak didukung

Tidak didukung

Tidak didukung

Media Types

Tidak didukung

Tidak didukung

Tidak didukung

Tabel ini menunjukkan pemetaan tipe data untuk Oracle Reader.

Kategori

Tipe data Oracle

Integer

NUMBER, RAWID, INTEGER, INT, dan SMALLINT

Bilangan titik mengambang

NUMERIC, DECIMAL, FLOAT, DOUBLE PRECISION, dan REAL

String

LONG, CHAR, NCHAR, VARCHAR, VARCHAR2, NVARCHAR2, CLOB, NCLOB, CHARACTER, CHARACTER VARYING, CHAR VARYING, NATIONAL CHARACTER, NATIONAL CHAR, NATIONAL CHARACTER VARYING, NATIONAL CHAR VARYING, dan NCHAR VARYING

Tanggal dan waktu

TIMESTAMP dan DATE

Boolean

BIT dan BOOL

Biner

BLOB, BFILE, RAW, dan LONG RAW

Persiapkan lingkungan Oracle

Sebelum melakukan sinkronisasi data dari database Oracle dengan DataWorks, persiapkan lingkungan Oracle Anda. Persiapan ini memastikan bahwa tugas Sinkronisasi Data Anda berjalan lancar. Topik ini menjelaskan konfigurasi yang diperlukan untuk database Oracle sumber.

Verifikasi versi database Oracle

Versi Oracle Database yang didukung bergantung pada jenis tugas sinkronisasi. Sebelum memulai, pastikan versi database Oracle Anda didukung.

  1. Untuk memeriksa versi database Oracle Anda, jalankan salah satu pernyataan berikut.

    • Pernyataan 1:

      select * from v$version;
    • Pernyataan 2:

      select version from v$instance;
  2. Jika versi database Oracle adalah 12c atau 18c, Anda perlu menggunakan pernyataan berikut untuk memastikan apakah database tersebut merupakan database tipe cdb. Saat ini, tugas sinkronisasi real-time Data Integration DataWorks tidak mendukung database Oracle tipe cdb versi 12c atau 18c.

    select name,cdb,open_mode,con_id from v$database;

Buat akun dan berikan izin

Buat akun pengguna database untuk Sinkronisasi Data. Akun ini memerlukan izin tertentu.

  1. Buat akun. Untuk informasi selengkapnya, lihat Buat akun untuk mengakses database Oracle.

  2. Berikan izin.

    Anda dapat menjalankan perintah berikut untuk memberikan izin yang relevan kepada suatu akun. Saat menjalankan perintah, ganti 'sync_account' dengan akun yang telah Anda buat di atas.

    grant create session to 'your_sync_user';  -- Memberikan izin login.
    grant connect to 'your_sync_user';  -- Memberikan izin untuk terhubung ke database.
    grant select on nls_database_parameters to 'your_sync_user';  -- Memberikan izin untuk mengkueri konfigurasi sistem nls_database_parameters.
    grant select on all_users to 'your_sync_user';  -- Memberikan izin untuk mengkueri semua pengguna dalam database.
    grant select on all_objects to 'your_sync_user';  -- Memberikan izin untuk mengkueri semua objek dalam database.
    grant select on DBA_MVIEWS to 'your_sync_user';  -- Memberikan izin untuk melihat semua materialized view dalam database.
    grant select on DBA_MVIEW_LOGS to 'your_sync_user';  -- Memberikan izin untuk melihat log materialized view.
    grant select on DBA_CONSTRAINTS to 'your_sync_user';  -- Memberikan izin untuk melihat informasi constraint untuk semua tabel.
    grant select on DBA_CONS_COLUMNS to 'your_sync_user';  -- Memberikan izin untuk melihat informasi kolom dalam constraint.
    grant select on all_tab_cols to 'your_sync_user';  -- Memberikan izin untuk melihat informasi kolom untuk semua tabel, view, dan kluster.
    grant select on sys.obj$ to 'your_sync_user';  -- Memberikan izin untuk melihat objek database. Tabel sys.obj$ adalah tabel dasar untuk objek dalam kamus data Oracle.
    grant select on SYS.COL$ to 'your_sync_user';  -- Memberikan izin untuk melihat informasi definisi kolom. SYS.COL$ menyimpan definisi kolom.
    grant select on sys.USER$ to 'your_sync_user';  -- Memberikan izin untuk melihat tabel pengguna sistem. sys.USER$ menyimpan informasi tentang pengguna database.
    grant select on sys.cdef$ to 'your_sync_user';  -- Memberikan izin untuk melihat tabel sistem cdef$.
    grant select on sys.con$ to 'your_sync_user';  -- Memberikan izin untuk melihat informasi constraint. sys.con$ menyimpan informasi constraint.
    grant select on all_indexes to 'your_sync_user';  -- Memberikan izin untuk melihat semua indeks dalam database.
    grant select on v_$database to 'your_sync_user';  -- Memberikan izin untuk mengakses view v_$database.
    grant select on V_$ARCHIVE_DEST to 'your_sync_user';  -- Memberikan izin untuk mengakses view V_$ARCHIVE_DEST.
    grant select on v_$log to 'your_sync_user';  -- Memberikan izin untuk mengakses view v_$log, yang menampilkan informasi file log dari control file.
    grant select on v_$logfile to 'your_sync_user';  -- Memberikan izin untuk mengakses view v_$logfile, yang berisi informasi tentang file redo log.
    grant select on v_$archived_log to 'your_sync_user';  -- Memberikan izin untuk mengakses view v$archived_log, yang berisi informasi tentang log terarsip.
    grant select on V_$LOGMNR_CONTENTS to 'your_sync_user';  -- Memberikan izin untuk mengakses view V_$LOGMNR_CONTENTS.
    grant select on DUAL to 'your_sync_user';   -- Memberikan izin untuk mengakses tabel DUAL, sebuah tabel virtual yang digunakan untuk memenuhi aturan sintaks SELECT.
    grant select on v_$parameter to 'your_sync_user';  -- Memberikan izin untuk mengakses view v_$parameter, yang menyimpan pengaturan parameter.
    grant select any transaction to 'your_sync_user';  -- Memberikan izin untuk mengkueri transaksi apa pun.
    grant execute on SYS.DBMS_LOGMNR to 'your_sync_user';  -- Memberikan izin untuk menggunakan utilitas DBMS_LOGMNR untuk analisis transaksi dan pemulihan data.
    grant alter session to 'your_sync_user';  -- Memberikan izin untuk memodifikasi sesi database.
    grant select on dba_objects to 'your_sync_user';  -- Memberikan izin untuk melihat semua objek database.
    grant select on v_$standby_log to 'your_sync_user';  -- Memberikan izin untuk mengakses view v_$standby_log, yang berisi file log database standby.
    grant select on v_$ARCHIVE_GAP to 'your_sync_user';  -- Memberikan izin untuk mengkueri log terarsip yang hilang.
    grant select on sys.ICOL$ to 'your_sync_user';  -- Memberikan izin untuk melihat informasi kolom internal dalam tabel sistem ICOL$.
    grant select on V$THREAD to 'your_sync_user';  -- Memberikan izin untuk melihat informasi thread instans. View V$THREAD digunakan untuk menentukan status instans dan sumber log selama penguraian inkremental.

    Untuk Sinkronisasi Penuh Batch, jalankan juga perintah berikut untuk memberikan izin kueri pada semua tabel.

    grant select any table to 'your_sync_user'; 

    Untuk Oracle 12c dan versi setelahnya, jalankan perintah berikut untuk memberikan izin Log Mining. Perintah ini tidak diperlukan untuk versi sebelumnya karena fitur Log Mining sudah termasuk secara bawaan.

    grant LOGMINING TO 'your_sync_user';

Aktifkan log dan alihkan file redo log

  1. Aktifkan Archive Logging. Jalankan pernyataan SQL berikut:

    shutdown immediate;
    startup mount;
    alter database archivelog;
    alter database open;
  2. Aktifkan Supplemental Logging.

    Pilih tingkat Supplemental Logging yang sesuai. Jalankan pernyataan SQL berikut.

    -- Untuk menangkap perubahan data lengkap untuk sinkronisasi real-time, Anda harus mengaktifkan supplemental logging.
    -- Anda dapat mengaktifkannya di tingkat database:
    alter database add supplemental log data(primary key) columns; -- Mengaktifkan supplemental logging untuk semua kolom kunci primer di database.
    alter database add supplemental log data(unique) columns; -- Mengaktifkan supplemental logging untuk semua kolom indeks unik di database.
    
    -- Atau, Anda dapat mengaktifkannya di tingkat tabel:
    alter schema.table add supplemental log data(primary key) columns; -- Mengaktifkan supplemental logging untuk kolom kunci primer tabel tertentu.
    alter schema.table add supplemental log data(unique) columns; -- Mengaktifkan supplemental logging untuk kolom indeks unik tabel tertentu.
  3. Alihkan File Redo Log.

    Setelah mengaktifkan Supplemental Logging, jalankan perintah berikut lima kali untuk mengalihkan File Redo Log.

    alter system switch logfile;
    Catatan

    Menjalankan perintah ini beberapa kali akan mengisi file log saat ini hingga penuh, sehingga memaksa pergantian ke file berikutnya. Hal ini mencegah kehilangan catatan transaksi dan menyederhanakan pemulihan data.

Periksa encoding karakter database

Jalankan perintah berikut di database Anda untuk memeriksa encoding karakternya.

select * from v$nls_parameters where PARAMETER IN ('NLS_CHARACTERSET', 'NLS_NCHAR_CHARACTERSET');
  • v$nls_parameters menyimpan nilai parameter database.

  • NLS_CHARACTERSET adalah set karakter database, dan NLS_NCHAR_CHARACTERSET adalah set karakter nasional. Keduanya menentukan tipe penyimpanan untuk dua kategori utama data karakter di Oracle.

Catatan

Saat ini, Sinkronisasi Data hanya mendukung encoding UTF8, AL32UTF8, AL16UTF16, dan ZHS16GBK. Jika database Anda menggunakan encoding karakter yang tidak didukung, Anda harus mengubahnya sebelum melakukan sinkronisasi data.

Periksa tipe data tabel

Anda dapat menggunakan pernyataan SELECT untuk mengkueri tipe data kolom dalam suatu tabel. Contoh ini menunjukkan cara melihat tipe data untuk tabel bernama 'tablename'.

select COLUMN_NAME,DATA_TYPE from all_tab_columns where TABLE_NAME='tablename'; 
  • COLUMN_NAME: Nama kolom dalam tabel.

  • DATA_TYPE: Tipe data kolom yang bersangkutan.

  • all_tab_columns: View yang menyimpan informasi tentang semua kolom dalam tabel database.

  • TABLE_NAME: Nama tabel target. Ganti 'tablename' dengan nama tabel aktual Anda.

Anda juga dapat menjalankan select * from 'tablename'; untuk mengkueri semua informasi dari tabel target dan mendapatkan tipe datanya.

Tambahkan sumber data

Sebelum mengembangkan tugas sinkronisasi di DataWorks, Anda harus menambahkan sumber data yang diperlukan ke DataWorks dengan mengikuti petunjuk di Manajemen sumber data. Anda dapat melihat deskripsi parameter di konsol DataWorks untuk memahami arti parameter saat menambahkan sumber data.

Tugas sinkronisasi data Oracle

Untuk informasi tentang titik masuk dan prosedur konfigurasi tugas sinkronisasi, lihat panduan konfigurasi berikut.

Tugas sinkronisasi batch tabel tunggal

Tugas sinkronisasi real-time tabel tunggal

Lihat Konfigurasikan tugas sinkronisasi real-time di DataStudio.

Sinkronisasi seluruh database: batch, real-time, dan sharding

Lihat Konfigurasikan tugas sinkronisasi real-time seluruh database.

Pertanyaan yang sering diajukan

  • Kesalahan berulang dalam tugas sinkronisasi real-time

  • Pemulihan data dalam sinkronisasi utama/sekunder

    Masalah sinkronisasi utama/sekunder dapat terjadi ketika Anda menggunakan database Oracle dalam konfigurasi pemulihan bencana utama-sekunder. Jika database Utama gagal dan sistem beralih ke database Sekunder, database Sekunder terus memulihkan data dari database utama menggunakan binlog. Selisih waktu inheren dalam sinkronisasi data, ditambah faktor seperti latensi jaringan, dapat menyebabkan perbedaan signifikan antara data di database Utama dan Sekunder. Dalam kasus seperti ini, data yang disinkronkan bukanlah snapshot lengkap dari database Utama pada saat itu.

  • Batasan konsistensi

    Oracle adalah sistem manajemen database relasional (RDBMS) yang menyediakan konsistensi kuat untuk kueri data. Misalnya, saat tugas sinkronisasi sedang berjalan, Oracle Reader tidak mengambil data baru yang ditulis oleh klien lain. Hal ini disebabkan oleh fitur snapshot bawaan database.

    Perilaku ini memastikan konsistensi untuk sinkronisasi data dalam model single-thread. Jika Oracle Reader dikonfigurasi untuk mengekstraksi data secara konkuren, konsistensi data yang ketat tidak dapat dijamin.

    Ketika Oracle Reader menggunakan parameter splitPk untuk melakukan sharding data, sistem meluncurkan beberapa tugas konkuren untuk menyelesaikan sinkronisasi data. Tugas-tugas ini tidak berada dalam transaksi baca yang sama dan dijalankan dengan interval tertentu. Akibatnya, data yang disinkronkan tidak merepresentasikan snapshot data yang lengkap dan konsisten.

    Mencapai snapshot konsisten dalam konteks multi-threaded saat ini belum memungkinkan dan memerlukan solusi teknis tambahan. Solusi tersebut melibatkan pertukaran (trade-off). Pertimbangkan pendekatan berikut berdasarkan kebutuhan spesifik Anda.

    • Gunakan sinkronisasi single-thread tanpa sharding data. Metode ini menjamin konsistensi tetapi lebih lambat.

    • Cegah klien lain menulis ke database agar data tetap statis. Anda dapat melakukannya dengan menerapkan penguncian tabel atau menonaktifkan sinkronisasi database sekunder. Namun, pendekatan ini dapat berdampak pada layanan online Anda.

  • Masalah encoding database

    Oracle Reader menggunakan Java Database Connectivity (JDBC) untuk mengekstraksi data. JDBC secara otomatis menangani dan mengonversi berbagai encoding karakter. Oleh karena itu, Anda tidak perlu menentukan encoding untuk Oracle Reader, karena sistem secara otomatis mendeteksi dan mengonversi encoding yang benar.

  • Metode sinkronisasi data inkremental

    Oracle Reader menggunakan pernyataan JDBC SELECT untuk mengekstraksi data. Anda dapat melakukan sinkronisasi data inkremental dengan menggunakan klausa SELECT…WHERE… dalam kueri Anda. Pertimbangkan metode berikut:

    • Jika aplikasi Anda mengisi bidang modify dengan timestamp untuk semua operasi insert, update, dan delete logis, Anda dapat mengonfigurasi Oracle Reader untuk menggunakan klausa WHERE yang memfilter catatan dengan timestamp lebih baru daripada sinkronisasi sebelumnya.

    • Untuk aliran data append-only yang menggunakan ID auto-increment, Anda dapat mengonfigurasi Oracle Reader dengan klausa WHERE yang memfilter catatan dengan ID lebih besar daripada ID maksimum dari sinkronisasi sebelumnya.

    Jika model data Anda tidak memiliki bidang untuk membedakan catatan baru atau yang dimodifikasi, Oracle Reader tidak dapat melakukan sinkronisasi data inkremental. Dalam skenario ini, Anda harus melakukan sinkronisasi data penuh.

  • Keamanan SQL

    Fitur querySql Oracle Reader memungkinkan Anda menulis pernyataan SELECT kustom untuk ekstraksi data. Perhatikan bahwa Oracle Reader tidak memvalidasi keamanan SQL yang diteruskan ke parameter querySql.

Lampiran: Contoh skrip dan parameter

Konfigurasikan tugas sinkronisasi batch menggunakan editor kode

Jika Anda ingin mengonfigurasi tugas sinkronisasi batch menggunakan editor kode, Anda harus mengonfigurasi parameter terkait dalam skrip berdasarkan persyaratan format skrip terpadu. Untuk informasi selengkapnya, lihat Gunakan editor kode. Informasi berikut menjelaskan parameter yang harus Anda konfigurasi untuk sumber data saat mengonfigurasi tugas sinkronisasi batch menggunakan editor kode.

Contoh skrip Reader

{
    "type": "job",
    "version": "2.0",
    "steps": [
        {
            "stepType": "oracle",
            "parameter": {
                "selectedDatabase": "AUTOTEST",
                "indexes": [],
                "datasource": "oracle_test",
                "envType": 0,
                "useSpecialSecret": true,
                "column": [
                    "id"
                ],
                "where": "",
                "splitPk": "id",
                "encoding": "UTF-8",
                "table": "AUTOTEST.table01"
            },
            "name": "Reader",
            "category": "reader"
        },
        {
            "stepType": "odps",
            "parameter": {
            },
            "name": "Writer",
            "category": "writer"
        },
        {
            "name": "Processor",
            "stepType": null,
            "category": "processor",
            "copies": 1,
            "parameter": {
                "nodes": [],
                "edges": [],
                "groups": [],
                "version": "2.0"
            }
        }
    ],
    "setting": {
        "executeMode": null,
        "errorLimit": {
            "record": ""
        },
        "speed": {
            "concurrent": 2,
            "throttle": false
        }
    },
    "order": {
        "hops": [
            {
                "from": "Reader",
                "to": "Writer"
            }
        ]
    }
}

Parameter skrip Reader

Parameter

Deskripsi

Wajib

Bawaan

datasource

Nama sumber data. Anda dapat menambahkan sumber data dalam mode skrip. Nilai parameter ini harus sama dengan nama sumber data yang ditambahkan.

Ya

Tidak ada

selectedDatabase

Skema database yang akan disinkronkan.

Ya

Tidak ada

table

Nama tabel dari mana Anda ingin membaca data. Anda harus menentukan tabel dalam format schema.tableName.

Catatan

Contohnya, jika nilai selectedDatabase adalah AUTOTEST dan nama tabelnya adalah table01, atur parameter table menjadi AUTOTEST.table01.

Ya

Tidak ada

column

Kolom yang ingin Anda sinkronkan dari tabel yang ditentukan. Nilainya harus berupa array JSON. Secara default, semua kolom disinkronkan. Contoh: ["*"].

  • Anda dapat mengekspor hanya beberapa kolom saja.

  • Anda dapat mengekspor kolom dalam urutan yang berbeda dari skema tabel.

  • Anda dapat mengonfigurasi konstanta dalam format JSON.

    ["id", "1", "'mingya.wmy'", "null", "to_char(a + 1)", "2.3" , "true"]
    • id adalah nama kolom biasa.

    • 1 adalah konstanta integer.

    • 'mingya.wmy' adalah konstanta string. Perhatikan bahwa konstanta string harus diapit tanda kutip tunggal (').

    • null adalah penunjuk null.

    • to_char(a + 1) adalah ekspresi.

    • 2.3 adalah bilangan titik mengambang.

    • true adalah nilai Boolean.

  • Parameter column wajib diisi dan tidak boleh kosong.

Ya

Tidak ada

splitFactor

Faktor pemisahan. Anda dapat mengonfigurasi jumlah shard untuk sinkronisasi data. Jika Anda mengonfigurasi beberapa thread konkuren, data akan dibagi menjadi jumlah shard sebesar Jumlah thread konkuren × splitFactor. Misalnya, jika jumlah thread konkuren adalah 5 dan splitFactor adalah 5, data akan dibagi menjadi 25 shard (5 × 5 = 25) dan diproses oleh lima thread konkuren.

Catatan

Kami menyarankan Anda mengatur parameter ini ke nilai antara 1 hingga 100. Nilai yang terlalu besar dapat menyebabkan error OOM.

Tidak

5

splitMode

Mode pemisahan. Nilai yang valid:

  • averageInterval: sampling rata-rata. Sistem menemukan nilai maksimum dan minimum berdasarkan splitPK, lalu membagi data secara merata berdasarkan jumlah shard.

  • randomSampling: sampling acak. Sistem memilih secara acak sejumlah catatan data tertentu sebagai titik pemisahan.

Catatan

Parameter splitMode harus digunakan bersama dengan parameter splitPk.

  • Jika splitPk diatur ke nilai numerik, Anda harus mengatur splitMode ke averageInterval.

  • Jika splitPk diatur ke string, Anda harus mengatur splitMode ke randomSampling.

Tidak

randomSampling

splitPk

Saat Oracle Reader membaca data, jika Anda menentukan parameter splitPk, data akan di-shard berdasarkan field yang ditentukan. Tugas sinkronisasi data akan memulai sub-tugas konkuren untuk menyinkronkan data, yang meningkatkan efisiensi sinkronisasi data.

  • Kami menyarankan Anda menggunakan kunci primer tabel sebagai nilai splitPk. Kunci primer biasanya terdistribusi merata, sehingga mencegah hotspot data pada shard yang dibuat.

  • Parameter splitPk hanya mendukung nilai numerik dan string, serta harus digunakan bersama dengan parameter splitMode.

    • Jika splitPk diatur ke nilai numerik, Anda harus mengatur splitMode ke averageInterval.

    • Jika splitPk diatur ke string, Anda harus mengatur splitMode ke randomSampling.

  • Jika Anda tidak menentukan parameter splitPk, data dalam satu tabel tidak akan di-shard. Oracle Reader menggunakan satu saluran untuk menyinkronkan seluruh data.

Catatan

Field splitPK tidak boleh berupa ROWID dalam view.

Tidak

Tidak ada

where

Kondisi filter. Oracle Reader menggabungkan parameter column, table, dan where yang ditentukan menjadi pernyataan SQL dan membaca data berdasarkan pernyataan tersebut. Misalnya, Anda dapat mengatur kondisi where ke row_number() untuk pengujian.

  • Kondisi where dapat digunakan untuk sinkronisasi data inkremental.

  • Jika Anda tidak mengonfigurasi kondisi where atau membiarkannya kosong, seluruh data dalam tabel akan disinkronkan.

Tidak

Tidak ada

querySql (hanya didukung dalam mode skrip)

Dalam beberapa skenario bisnis, parameter where tidak cukup untuk menggambarkan kondisi filter. Anda dapat menggunakan parameter ini untuk menyesuaikan pernyataan SQL filter. Setelah Anda mengonfigurasi parameter ini, sistem sinkronisasi data akan mengabaikan parameter seperti table dan column, serta langsung menggunakan isi parameter ini untuk memfilter data. Misalnya, jika Anda perlu menyinkronkan data setelah penggabungan beberapa tabel, gunakan select a,b from table_a join table_b on table_a.id = table_b.id. Saat Anda mengonfigurasi parameter querySql, Oracle Reader akan mengabaikan parameter table, column, dan where.

Tidak

Tidak ada

fetchSize

Parameter ini menentukan jumlah catatan data yang diambil dalam satu batch dari server database. Parameter ini menentukan jumlah interaksi jaringan antara sistem sinkronisasi data dan server, serta dapat secara signifikan meningkatkan kinerja pembacaan data.

Catatan

Jika nilai fetchSize terlalu besar (> 2048), error OOM dapat terjadi dalam proses sinkronisasi data.

Tidak

1.024

Contoh skrip Writer

{
    "type":"job",
    "version":"2.0",// Nomor versi. 
    "steps":[
        { 
            "stepType":"stream",
            "parameter":{},
            "name":"Reader",
            "category":"reader"
        },
        {
            "stepType":"oracle",// Nama plug-in. 
            "parameter":{
                "postSql":[],// Pernyataan SQL yang akan dieksekusi setelah tugas sinkronisasi data. 
                "datasource":"",
                "session":[],// Parameter sesi untuk koneksi database. 
                "column":[// Field. 
                    "id",
                    "name"
                ],
                "encoding":"UTF-8",// Format encoding. 
                "batchSize":1024,// Jumlah catatan yang dikirim dalam satu batch. 
                "table":"",// Nama tabel. 
                "preSql":[]// Pernyataan SQL yang akan dieksekusi sebelum tugas sinkronisasi data. 
            },
            "name":"Writer",
            "category":"writer"
        }
    ],
    "setting":{
        "errorLimit":{
            "record":"0"// Jumlah catatan data kotor. 
        },
        "speed":{
            "throttle":true,// Jika nilai throttle adalah false, parameter mbps tidak berlaku dan trafik tidak dibatasi. Jika nilai throttle adalah true, trafik dibatasi. 
            "concurrent":1, // Jumlah thread konkuren. 
            "mbps":"12"// Laju pembatasan. 1 mbps = 1 MB/s. 
        }
    },
    "order":{
        "hops":[
            {
                "from":"Reader",
                "to":"Writer"
            }
        ]
    }
}

Parameter skrip Writer

Parameter

Deskripsi

Wajib

Bawaan

datasource

Nama sumber data. Anda dapat menambahkan sumber data dalam mode skrip. Nilai parameter ini harus sama dengan nama sumber data yang ditambahkan.

Ya

Tidak ada

table

Nama tabel tujuan. Jika skema tabel berbeda dari username yang Anda konfigurasi, tentukan tabel dalam format schema.table.

Ya

Tidak ada

writeMode

Mode impor. Hanya INSERT INTO yang didukung. Jika terjadi konflik kunci primer atau indeks unik, baris yang bertentangan tidak dapat ditulis dan diproses sebagai data kotor.

Tidak

insert into

column

Kolom tempat Anda ingin menulis data di tabel tujuan. Pisahkan kolom dengan koma (,), misalnya "column": ["id","name","age"]. Untuk menulis data ke semua kolom dalam urutan yang ditentukan, atur parameter ini ke `*`, misalnya "column":["*"].

Ya

Tidak ada

preSql

Pernyataan SQL yang ingin Anda eksekusi sebelum tugas sinkronisasi dijalankan. Dalam mode wizard, Anda hanya dapat mengeksekusi satu pernyataan SQL. Dalam mode skrip, Anda dapat mengeksekusi beberapa pernyataan SQL. Misalnya, Anda dapat mengeksekusi pernyataan SQL untuk menghapus data yang ada.

Tidak

Tidak ada

postSql

Pernyataan SQL yang ingin Anda eksekusi setelah tugas sinkronisasi selesai. Dalam mode wizard, Anda hanya dapat mengeksekusi satu pernyataan SQL. Dalam mode skrip, Anda dapat mengeksekusi beberapa pernyataan SQL. Misalnya, Anda dapat menambahkan timestamp.

Tidak

Tidak ada

batchSize

Jumlah catatan yang dikirim dalam satu batch. Nilai yang lebih besar dapat mengurangi jumlah interaksi jaringan antara sistem sinkronisasi data dan Oracle serta meningkatkan throughput. Namun, jika nilainya terlalu besar, error out of memory (OOM) dapat terjadi dalam proses sinkronisasi data.

Tidak

1.024