全部产品
Search
文档中心

DataWorks:Sumber data Oracle

更新时间:Jan 05, 2026

Sumber data Oracle memungkinkan Anda membaca dan menulis data ke Oracle. Anda dapat mengonfigurasi tugas sinkronisasi data menggunakan antarmuka tanpa kode (codeless UI) atau editor kode. Topik ini menjelaskan kemampuan DataWorks dalam melakukan sinkronisasi data Oracle.

Versi yang didukung

Baca dan tulis offline

Versi

Baca offline (Oracle Reader)

Tulis offline (Oracle Writer)

Oracle 11.2 atau 11gR2

Didukung

Dukungan

Oracle 12.1 atau 12cR1

Dukungan

Dukungan

Oracle 12.2 atau 12cR2

Didukung (Fitur baru tidak didukung)

Didukung (Fitur baru tidak didukung)

Oracle 18.3

Didukung (Fitur baru tidak didukung)

Didukung (Fitur baru tidak didukung)

Oracle 19.x

Didukung (Fitur baru tidak didukung)

Didukung (Fitur baru tidak didukung)

Oracle 21.1

Didukung (Fitur baru tidak didukung)

Didukung (Fitur baru tidak didukung)

Penting

Plugin Oracle Writer menggunakan driver ojdbc6-12.1.1.jar.

Pembacaan real-time

  • Didukung:

    Database dengan versi lebih baru dari 11g R2, 12c non cdb, 18c non cdb, 19c non cdb, atau 19c cdb.

  • Tidak didukung:

    Database 12c cdb dan 18c cdb.

Catatan

Container database (CDB) adalah fitur yang diperkenalkan di Oracle Database 12c dan versi selanjutnya. CDB dapat berisi beberapa pluggable database (PDB).

Batasan

  • Set karakter NLS_CHARACTERSET dan NLS_NCHAR_CHARACTERSET dari instans Oracle harus salah satu dari berikut: AL32UTF8, AL16UTF16, ZHS16GBK, atau UTF8.

  • Satu instans Oracle mendukung sinkronisasi real-time hingga 500 GB data inkremental per hari.

  • Ketika DataWorks membaca data dari database Oracle secondary secara real-time, hanya database secondary fisik yang didukung. DataWorks hanya mengambil archived log. Oleh karena itu, latensi lebih tinggi dibandingkan sinkronisasi dari database primary. Latensi tergantung pada kecepatan pembuatan archived log.

  • Sinkronisasi real-time tidak mendukung view. Sinkronisasi offline mendukung pembacaan data dari view.

  • Pembacaan data real-time dari Oracle di DataWorks didasarkan pada tool analisis log Oracle LogMiner. Untuk menggunakan fitur ini, Anda harus mengaktifkan supplemental logging dan archived log untuk database primary atau secondary di database Oracle primary.

  • Tabel yang diorganisasi berdasarkan indeks (index-organized tables) tidak dapat disinkronkan.

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

  • Karakter Tionghoa tidak didukung dalam nama tabel dan nama kolom Oracle.

  • Nama tabel Oracle tidak boleh melebihi 30 byte.

Tipe bidang yang didukung

Tipe bidang

Baca offline (Oracle Reader)

Tulis offline (Oracle Writer)

Baca real-time

NUMBER

Didukung

Dukungan

Dukungan

BINARY FLOAT

Didukung

Didukung

Dukungan

BINARY DOUBLE

Dukungan

Dukungan

Didukung

CHAR

Dukungan

Dukungan

Didukung

NCHAR

Dukungan

Dukungan

Didukung

VARCHAR2

Dukungan

Dukungan

Dukungan

NVARCHAR2

Dukungan

Didukung

Dukungan

DATE

Didukung

Dukungan

Didukung

TIMESTAMP

Didukung

Dukungan

Didukung

TIMESTAMP WITH TIME ZONE

Dukungan

Didukung

Tidak didukung

TIMESTAMP WITH LOCAL TIME ZONE

Didukung

Didukung

Tidak didukung

CLOB

Dukungan

Dukungan

Didukung

BLOB

Didukung

Dukungan

Didukung

RAW

Dukungan

Dukungan

Didukung

ROWID

Tidak didukung

Tidak didukung

Dukungan

UROWID

Tidak didukung

Tidak didukung

Dukungan

FLOAT

Dukungan

Dukungan

Didukung

INTERVAL DAY TO SECOND

Tidak didukung

Tidak didukung

Dukungan

INTERVAL YEAR TO MONTH

Tidak didukung

Tidak didukung

Dukungan

BFILE

Tidak didukung

Tidak didukung

Tidak didukung

LONG

Tidak didukung

Tidak didukung

Tidak didukung

LONG RAW

Tidak didukung

Tidak didukung

Tidak didukung

NCLOB

Dukungan

Didukung

Tidak didukung

STRUCT

Dukungan

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 berikut mencantumkan tipe data Oracle dan klasifikasi yang sesuai di Oracle Reader.

Klasifikasi tipe

Tipe data Oracle

Integer

NUMBER, RAWID, INTEGER, INT, dan SMALLINT

Bilangan titik mengambang

NUMERIC, DECIMAL, FLOAT, DOUBLE PRECISIOON, 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

Kelas biner

BLOB, BFILE, RAW, dan LONG RAW

Prasyarat: Persiapkan lingkungan Oracle

Sebelum menggunakan DataWorks untuk menyinkronkan data, Anda harus mempersiapkan lingkungan Oracle seperti yang dijelaskan dalam topik ini. Persiapan ini memastikan bahwa tugas sinkronisasi data Oracle dapat dikonfigurasi dan dijalankan dengan baik di DataWorks. Bagian-bagian berikut menjelaskan cara mempersiapkan lingkungan Oracle.

Konfirmasi versi database Oracle

Versi database Oracle yang didukung bervariasi tergantung pada skenario sinkronisasi. Sebelum menyinkronkan data, periksa apakah versi database Oracle Anda didukung.

  1. Anda dapat menjalankan salah satu pernyataan berikut untuk melihat versi database Oracle Anda.

    • Pernyataan 1:

      select * from v$version;
    • Pernyataan 2:

      select version from v$instance;
  2. Jika versi database adalah 12c atau 18c, jalankan pernyataan berikut untuk memeriksa apakah itu database cdb. Tugas sinkronisasi real-time di Data Integration tidak mendukung database Oracle 12c dan 18c cdb.

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

Buat akun dan konfigurasikan izin

Anda perlu merencanakan akun login database untuk operasi selanjutnya. Akun ini memerlukan izin Oracle yang diperlukan.

  1. Buat akun. Untuk informasi selengkapnya, lihat Buat akun Oracle.

  2. Konfigurasikan izin.

    Anda dapat menggunakan perintah berikut untuk memberikan izin kepada akun tersebut. Saat menjalankan pernyataan, ganti 'sync_account' dengan akun yang telah Anda buat.

    grant create session to 'sync_account';  // Memberikan izin login ke akun sinkronisasi.
    grant connect to 'sync_account';  // Memberikan izin koneksi database ke akun sinkronisasi.
    grant select on nls_database_parameters to 'sync_account';  // Memberikan izin untuk mengkueri konfigurasi sistem nls_database_parameters.
    grant select on all_users to 'sync_account';  // Memberikan izin untuk mengkueri semua pengguna di database.
    grant select on all_objects to 'sync_account';  // Memberikan izin untuk mengkueri semua objek di database.
    grant select on DBA_MVIEWS to 'sync_account';  // Memberikan izin untuk melihat materialized view di database.
    grant select on DBA_MVIEW_LOGS to 'sync_account';  // Memberikan izin untuk melihat log materialized view di database.
    grant select on DBA_CONSTRAINTS to 'sync_account';  // Memberikan izin untuk melihat informasi constraint semua tabel.
    grant select on DBA_CONS_COLUMNS to 'sync_account';  // Memberikan izin untuk melihat informasi semua kolom dalam constraint tertentu dari semua tabel.
    grant select on all_tab_cols to 'sync_account';  // Memberikan izin untuk melihat informasi kolom di tabel, view, dan kluster.
    grant select on sys.obj$ to 'sync_account';  // Memberikan izin untuk melihat objek di database. Tabel sys.obj$ adalah tabel objek dasar dalam kamus data Oracle dan menyimpan semua objek Oracle.
    grant select on SYS.COL$ to 'sync_account';  // Memberikan izin untuk melihat informasi definisi kolom. SYS.COL$ menyimpan definisi kolom.
    grant select on sys.USER$ to 'sync_account';  // Memberikan izin untuk melihat tabel sistem. sys.USER$ adalah layanan default untuk sesi pengguna.
    grant select on sys.cdef$ to 'sync_account';  // Memberikan izin untuk melihat tabel sistem.
    grant select on sys.con$ to 'sync_account';  // Memberikan izin untuk melihat informasi constraint. sys.con$ mencatat informasi constraint Oracle.
    grant select on all_indexes to 'sync_account';  // Memberikan izin untuk melihat semua indeks di database.
    grant select on v_$database to 'sync_account';  // Memberikan izin untuk melihat view v_$database.
    grant select on V_$ARCHIVE_DEST to 'sync_account';  // Memberikan izin untuk melihat view V_$ARCHIVE_DEST.
    grant select on v_$log to 'sync_account';  // Memberikan izin untuk melihat view v_$log. v_$log menampilkan informasi file log dari control file.
    grant select on v_$logfile to 'sync_account';  // Memberikan izin untuk melihat view v_$logfile. v_$logfile berisi informasi tentang file redo log.
    grant select on v_$archived_log to 'sync_account';  // Memberikan izin untuk melihat view v$archived_log. v$archived_log berisi informasi tentang archived log.
    grant select on V_$LOGMNR_CONTENTS to 'sync_account';  // Memberikan izin untuk melihat view V_$LOGMNR_CONTENTS.
    grant select on DUAL to 'sync_account';   // Memberikan izin untuk melihat tabel DUAL. DUAL adalah tabel virtual yang digunakan untuk memenuhi aturan sintaks SELECT. Di Oracle, DUAL hanya berisi satu catatan.
    grant select on v_$parameter to 'sync_account';  // Memberikan izin untuk melihat view v_$parameter. v$parameter adalah tabel kamus dinamis yang menyimpan pengaturan parameter database.
    grant select any transaction to 'sync_account';  // Memberikan izin untuk melihat transaksi apa pun.
    grant execute on SYS.DBMS_LOGMNR to 'sync_account';  // Memberikan izin untuk menggunakan tool Logmnr. Tool Logmnr membantu Anda menganalisis transaksi dan memulihkan data yang hilang.
    grant alter session to 'sync_account';  // Memberikan izin untuk mengubah sesi database.
    grant select on dba_objects to 'sync_account';  // Memberikan izin untuk melihat semua objek di database.
    grant select on v_$standby_log to 'sync_account';  // Memberikan izin untuk melihat view v_$standby_log. v_$standby_log berisi archived log dari database sekunder.
    grant select on v_$ARCHIVE_GAP to 'sync_account';  // Memberikan izin untuk mengkueri archived log yang hilang.
    grant select on sys.ICOL$ to 'sync_account';  // Memberikan izin untuk melihat objek di database. Tabel sys.obj$ adalah tabel objek dasar dalam kamus data Oracle dan menyimpan semua objek Oracle.
    grant select on V$THREAD to 'sync_account';  // Memberikan izin untuk melihat informasi thread instans. View V$THREAD adalah tabel status thread dalam view performa dinamis Oracle. View ini menyimpan status thread setiap instans dalam kluster RAC dan digunakan untuk menentukan status instans dan sumber log selama penguraian inkremental.

    Untuk melakukan sinkronisasi data penuh offline, Anda juga harus menjalankan perintah berikut untuk memberikan izin kueri pada semua tabel kepada akun sinkronisasi.

    grant select any table to 'sync_account'; 

    Untuk Oracle 12c dan versi selanjutnya, jalankan perintah berikut untuk memberikan izin log mining kepada akun sinkronisasi. Untuk versi sebelum Oracle 12c, perintah ini tidak diperlukan karena fitur log mining sudah built-in.

    grant LOGMINING TO 'sync_account';

Aktifkan archived log dan supplemental logging, serta alihkan file redo log

  1. Aktifkan archived log. Pernyataan SQL-nya sebagai berikut.

    shutdown immediate;
    startup mount;
    alter database archivelog;
    alter database open;
  2. Aktifkan supplemental logging.

    Untuk mengaktifkan supplemental logging yang sesuai, gunakan pernyataan SQL berikut.

    // Untuk sinkronisasi real-time agar menangkap perubahan data secara lengkap, Anda harus mengaktifkan supplemental logging. Anda dapat mengaktifkannya di tingkat database. Pernyataan SQL-nya sebagai berikut:
    alter database add supplemental log data(primary key) columns; // Mengaktifkan supplemental logging untuk kolom kunci primer database.
    alter database add supplemental log data(unique) columns; // Mengaktifkan supplemental logging untuk kolom indeks unik database.
    
    // Anda juga 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 Anda mengaktifkan supplemental logging, jalankan perintah berikut beberapa kali (disarankan lima kali) untuk mengalihkan file redo log.

    alter system switch logfile;
    Catatan

    Menjalankan perintah beberapa kali memastikan sistem beralih ke file log berikutnya ketika file log saat ini penuh. Proses ini mencegah hilangnya catatan operasi dan membantu pemulihan data selanjutnya.

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 pengaturan parameter database.

  • NLS_CHARACTERSET dan NLS_NCHAR_CHARACTERSET masing-masing adalah set karakter database dan set karakter nasional. Keduanya menunjukkan kelas penyimpanan untuk dua jenis utama data karakter di Oracle.

Catatan

Data Integration hanya mendukung format encoding UTF8, AL32UTF8, AL16UTF16, dan ZHS16GBK untuk sinkronisasi data. Jika database Anda menggunakan encoding karakter yang tidak didukung, ubah terlebih dahulu sebelum menyinkronkan data.

Periksa tipe data tabel database

Anda dapat menggunakan pernyataan SELECT untuk mengkueri tipe data di tabel database. Contoh berikut menunjukkan cara melihat tipe data di tabel 'tablename'.

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

  • DATA_TYPE: Tipe data kolom yang sesuai.

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

  • TABLE_NAME: Nama tabel target untuk dikueri. Saat menjalankan pernyataan, ganti 'tablename' dengan nama tabel aktual Anda.

Anda juga dapat menjalankan select * from 'tablename'; untuk mengkueri semua informasi tentang tabel target dan mengambil 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.

Kembangkan tugas sinkronisasi data: Panduan proses sinkronisasi Oracle

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

Panduan konfigurasi tugas sinkronisasi offline untuk satu tabel

Panduan konfigurasi tugas sinkronisasi real-time untuk satu tabel

Untuk informasi selengkapnya tentang prosedur, lihat Konfigurasi tugas sinkronisasi real-time di DataStudio.

Panduan konfigurasi sinkronisasi seluruh database

Untuk informasi selengkapnya tentang prosedur, lihat Konfigurasi tugas sinkronisasi real-time untuk seluruh database.

FAQ

  • Tugas sinkronisasi real-time untuk Oracle, PolarDB, dan MySQL melaporkan error berulang

  • Pemulihan data untuk sinkronisasi aktif/standby

    Masalah sinkronisasi aktif/standby dapat terjadi ketika Anda menggunakan arsitektur pemulihan bencana aktif/standby untuk Oracle. Jika database primary gagal dan sistem beralih ke database sekunder, database sekunder terus memulihkan data dari database primary menggunakan binlog. Karena keterlambatan waktu dalam sinkronisasi data antara database primary dan sekunder, latensi jaringan dan kondisi lainnya dapat menyebabkan perbedaan signifikan antara data yang dipulihkan oleh database sekunder dan data di database primary. Akibatnya, data yang disinkronkan dari database sekunder bukan snapshot lengkap dari data pada titik waktu tersebut.

  • Batasan konsistensi

    Oracle adalah sistem manajemen database relasional (RDBMS) yang menyediakan antarmuka kueri data dengan konsistensi kuat. Misalnya, selama eksekusi tugas sinkronisasi, jika penulis data lain menulis data ke database, Oracle Reader tidak mengambil data baru tersebut karena fitur snapshot database.

    Konsistensi yang dijelaskan di atas dicapai ketika Oracle Reader menggunakan model single-threaded untuk sinkronisasi data. Jika Oracle Reader menggunakan tugas konkuren untuk menarik data berdasarkan konfigurasi Anda, konsistensi data yang kuat tidak dapat dijamin.

    Ketika Oracle Reader membagi data berdasarkan splitPk, ia memulai beberapa tugas konkuren untuk menyinkronkan data. Tugas-tugas ini tidak termasuk dalam transaksi baca yang sama dan memiliki interval waktu di antaranya. Oleh karena itu, data yang disinkronkan bukan snapshot data yang lengkap dan konsisten.

    Solusi teknis untuk snapshot konsisten di lingkungan multi-threaded saat ini belum tersedia. Anda hanya dapat mengatasi masalah ini dari perspektif rekayasa. Solusi rekayasa melibatkan pertukaran. Berikut adalah solusi yang mungkin. Anda dapat memilih salah satu berdasarkan kebutuhan Anda.

    • Gunakan sinkronisasi single-threaded. Artinya, data tidak dibagi menjadi chunk. Kerugiannya adalah kecepatan lambat, tetapi menjamin konsistensi.

    • Nonaktifkan penulis data lain untuk memastikan data statis. Misalnya, Anda dapat mengunci tabel atau menonaktifkan sinkronisasi ke database sekunder. Kerugiannya adalah hal ini dapat memengaruhi layanan online.

  • Masalah encoding database

    Oracle Reader menggunakan Java Database Connectivity (JDBC) untuk menarik data. JDBC kompatibel dengan berbagai encoding dan melakukan konversi encoding di lapisan bawah. Oleh karena itu, Anda tidak perlu menentukan encoding untuk Oracle Reader. Oracle Reader dapat secara otomatis mendapatkan dan mengonversi encoding tersebut.

  • Metode untuk sinkronisasi data inkremental

    Oracle Reader menggunakan pernyataan SELECT…WHERE… untuk menarik data. Oleh karena itu, Anda dapat menggunakan pernyataan ini untuk melakukan sinkronisasi data inkremental dengan cara berikut:

    • Ketika aplikasi online menulis data ke database, ia mengisi bidang `modify` dengan timestamp untuk perubahan, seperti penambahan, pembaruan, dan penghapusan logis. Untuk aplikasi ini, Oracle Reader hanya perlu menambahkan klausa `WHERE` dengan timestamp sinkronisasi terakhir.

    • Untuk data baru bergaya stream, Oracle Reader dapat menambahkan klausa `WHERE` dengan ID auto-increment maksimum dari tahap sebelumnya.

    Jika logika bisnis Anda tidak menggunakan bidang untuk membedakan antara data baru dan data yang dimodifikasi, Oracle Reader tidak dapat melakukan sinkronisasi data inkremental. Oracle Reader hanya dapat menyinkronkan data penuh.

  • Keamanan SQL

    Oracle Reader menyediakan fitur querySql, yang memungkinkan Anda menyesuaikan pernyataan SELECT untuk menarik data. Oracle Reader tidak melakukan pemeriksaan keamanan apa pun pada querySql.

Lampiran: Demo skrip dan deskripsi parameter

Konfigurasi 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 Konfigurasi tugas di editor kode. Informasi berikut menjelaskan parameter yang harus Anda konfigurasi untuk sumber data saat mengonfigurasi tugas sinkronisasi batch menggunakan editor kode.

Demo 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

Nilai default

datasource

Nama sumber data. Editor kode mendukung penambahan sumber data. 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 yang akan disinkronkan. Formatnya harus schema.tableName.

Catatan

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

Ya

Tidak ada

column

Kumpulan kolom yang akan disinkronkan. Gunakan array JSON untuk menggambarkan informasi bidang. Secara default, semua kolom digunakan, misalnya, ["*"].

  • Pemangkasan kolom didukung. Anda dapat mengekspor subset kolom.

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

  • Konstanta didukung. Anda harus mengonfigurasinya 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 harus diapit tanda kutip tunggal.

    • null adalah pointer null.

    • to_char(a + 1) adalah ekspresi.

    • 2.3 adalah bilangan titik mengambang.

    • true adalah nilai Boolean.

  • column wajib dan tidak boleh kosong.

Ya

Tidak ada

splitFactor

Faktor pemisahan. Anda dapat mengonfigurasi jumlah chunk untuk membagi data guna disinkronkan. Jika Anda mengonfigurasi beberapa tugas konkuren, data dibagi menjadi concurrency × splitFactor chunk. Misalnya, jika concurrency adalah 5 dan splitFactor adalah 5, data dibagi menjadi 5 × 5 = 25 chunk dan diproses oleh lima thread konkuren.

Catatan

Nilai yang direkomendasikan berkisar antara 1 hingga 100. Nilai yang terlalu besar dapat menyebabkan error kehabisan memori (OOM).

Tidak

5

splitMode

Mode pemisahan. Nilai yang valid:

  • averageInterval: pengambilan sampel rata-rata. Menemukan nilai maksimum dan minimum dari splitPK lalu membagi data secara merata berdasarkan jumlah chunk.

  • randomSampling: pengambilan sampel acak. Memilih sejumlah titik data secara acak sebagai titik pemisahan.

Catatan

Parameter splitMode harus digunakan bersama parameter splitPk.

  • Jika splitPk bertipe numerik, atur splitMode ke averageInterval.

  • Jika splitPk bertipe string, atur splitMode ke randomSampling.

Tidak

randomSampling

splitPk

Saat Oracle Reader mengekstrak data, jika Anda menentukan splitPk, ini menunjukkan bahwa Anda ingin menggunakan bidang yang ditentukan oleh splitPk untuk sharding data. Akibatnya, sinkronisasi data memulai tugas konkuren, yang meningkatkan efisiensi sinkronisasi data.

  • Kami merekomendasikan agar Anda menggunakan kunci primer tabel sebagai splitPk. Kunci primer biasanya terdistribusi merata, yang membantu mencegah hot spot data pada shard yang dihasilkan.

  • splitPk hanya mendukung tipe numerik atau string. Parameter splitMode harus digunakan bersama parameter splitPk.

    • Jika splitPk bertipe numerik, atur splitMode ke averageInterval.

    • Jika splitPk bertipe string, atur splitMode ke randomSampling.

  • Jika Anda tidak menentukan splitPk, data di tabel tidak dibagi. Oracle Reader menggunakan satu saluran untuk menyinkronkan data penuh.

Catatan

Bidang splitPK tidak boleh ROWID untuk view.

Tidak

Tidak ada

where

Kondisi filter. Oracle Reader membuat pernyataan SQL berdasarkan column, table, dan klausa where yang ditentukan, lalu menarik data berdasarkan pernyataan SQL tersebut. Misalnya, Anda dapat menentukan row_number() sebagai kondisi where selama pengujian.

  • Klausa where dapat digunakan untuk sinkronisasi data bisnis inkremental.

  • Jika Anda tidak mengonfigurasi klausa where atau membiarkannya kosong, seluruh tabel disinkronkan.

Tidak

Tidak ada

querySql (Mode lanjutan, tidak didukung di antarmuka tanpa kode)

Dalam beberapa skenario bisnis, klausa where tidak cukup untuk menggambarkan kondisi filter. Anda dapat menggunakan parameter ini untuk menyesuaikan SQL filter. Saat Anda mengonfigurasi parameter ini, sistem sinkronisasi data mengabaikan konfigurasi seperti table dan column dan menggunakan SQL ini untuk memfilter data. Misalnya, untuk menggabungkan beberapa tabel sebelum sinkronisasi, gunakan select a,b from table_a join table_b on table_a.id = table_b.id. Saat Anda mengonfigurasi querySql, Oracle Reader mengabaikan konfigurasi table, column, dan where.

Tidak

Tidak ada

fetchSize

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

Catatan

Nilai fetchSize yang terlalu besar (>2.048) dapat menyebabkan error OOM dalam proses sinkronisasi data.

Tidak

1.024

Demo skrip Writer

{
    "type":"job",
    "version":"2.0",// Nomor versi.
    "steps":[
        { 
            "stepType":"stream",
            "parameter":{},
            "name":"Reader",
            "category":"reader"
        },
        {
            "stepType":"oracle",// Nama plugin.
            "parameter":{
                "postSql":[],// Pernyataan SQL yang dieksekusi setelah tugas sinkronisasi data.
                "datasource":"",
                "session":[],// Parameter sesi koneksi database.
                "column":[// Bidang.
                    "id",
                    "name"
                ],
                "encoding":"UTF-8",// Format encoding.
                "batchSize":1024,// Jumlah catatan dalam satu batch.
                "table":"",// Nama tabel.
                "preSql":[]// Pernyataan SQL yang dieksekusi sebelum tugas sinkronisasi data.
            },
            "name":"Writer",
            "category":"writer"
        }
    ],
    "setting":{
        "errorLimit":{
            "record":"0"// Jumlah catatan error.
        },
        "speed":{
            "throttle":true,// Jika throttle bernilai false, mbps diabaikan dan pembatasan kecepatan dinonaktifkan. Jika throttle bernilai true, pembatasan kecepatan diaktifkan.
            "concurrent":1, // Konkurensi pekerjaan.
            "mbps":"12"// Laju pembatasan. 1 mbps = 1 MB/s.
        }
    },
    "order":{
        "hops":[
            {
                "from":"Reader",
                "to":"Writer"
            }
        ]
    }
}

Parameter skrip Writer

Parameter

Deskripsi

Wajib

Nilai default

datasource

Nama sumber data. Editor kode mendukung penambahan sumber data. 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 dikonfigurasi di atas, gunakan format schema.table untuk informasi tabel.

Ya

Tidak ada

writeMode

Mode impor. Hanya insert into yang didukung. Jika terjadi konflik kunci primer atau indeks unik, baris yang bertentangan tidak ditulis dan dianggap sebagai data kotor.

Tidak

insert into

column

Bidang di tabel tujuan tempat data akan ditulis. Pisahkan nama bidang dengan koma. Misalnya, "column": ["id","name","age"]. Untuk menulis ke semua kolom secara berurutan, gunakan tanda bintang (*). Misalnya, "column":["*"].

Ya

Tidak ada

preSql

Pernyataan SQL yang dieksekusi sebelum tugas sinkronisasi data dimulai. Antarmuka tanpa kode hanya mendukung satu pernyataan SQL. Editor kode mendukung beberapa pernyataan SQL, misalnya, untuk menghapus data lama.

Tidak

Tidak ada

postSql

Pernyataan SQL yang dieksekusi setelah tugas sinkronisasi data selesai. Antarmuka tanpa kode hanya mendukung satu pernyataan SQL. Editor kode mendukung beberapa pernyataan SQL, misalnya, untuk menambahkan timestamp.

Tidak

Tidak ada

batchSize

Jumlah catatan dalam satu batch. Nilai yang lebih besar secara signifikan dapat mengurangi jumlah interaksi jaringan antara sistem sinkronisasi data dan Oracle, serta meningkatkan throughput keseluruhan. Jika nilai ini terlalu tinggi, dapat menyebabkan error OOM dalam proses sinkronisasi data.

Tidak

1.024