全部产品
Search
文档中心

DataWorks:Sumber data Oracle

更新时间:Nov 10, 2025

Sumber data Oracle menyediakan saluran dua arah untuk membaca dan menulis data ke Oracle. Anda dapat mengonfigurasi tugas sinkronisasi data menggunakan antarmuka tanpa kode 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

Didukung

Oracle 12.1 atau 12cR1

Didukung

Didukung

Oracle 12.2 atau 12cR2

Didukung (Fitur versi baru tidak didukung)

Didukung (Fitur versi baru tidak didukung)

Oracle 18.3

Didukung (Fitur versi baru tidak didukung)

Didukung (Fitur versi baru tidak didukung)

Oracle 19.x

Didukung (Fitur versi baru tidak didukung)

Didukung (Fitur versi baru tidak didukung)

Oracle 21.1

Didukung (Fitur versi baru tidak didukung)

Didukung (Fitur versi baru tidak didukung)

Penting

Plugin Oracle Writer menggunakan driver ojdbc6-12.1.1.jar.

Baca real-time

  • Didukung:

    11g R2 dan yang lebih baru, 12c non-CDB, 18c non-CDB, 19c non-CDB, atau database 19c CDB.

  • Tidak didukung:

    database 12c CDB dan 18c CDB.

Catatan

Database kontainer (CDB) adalah fitur yang diperkenalkan di Oracle 12c yang meng-hosting beberapa database yang dapat dicolokkan (PDB).

Batasan

  • Set karakter instans Oracle, NLS_CHARACTERSET dan NLS_NCHAR_CHARACTERSET, harus berupa 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 sekunder secara real-time, hanya database standby fisik yang didukung. DataWorks hanya menarik log arsip, sehingga mengakibatkan latensi yang lebih tinggi dibandingkan dengan sinkronisasi dari database utama. Latensi tersebut bergantung pada kecepatan pembuatan log arsip.

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

  • Pembacaan data Oracle secara real-time di DataWorks diimplementasikan menggunakan alat analisis log Oracle LogMiner. Anda harus mengaktifkan pencatatan tambahan dan log arsip pada database Oracle utama.

  • Tabel yang diorganisasi berdasarkan indeks tidak didukung untuk sinkronisasi.

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

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

  • 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

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

Dukungan

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

Tipe yang Ditentukan Pengguna

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

Tipe Spasial

Tidak didukung

Tidak didukung

Tidak didukung

Tipe Media

Tidak didukung

Tidak didukung

Tidak didukung

Tabel berikut mencantumkan pemetaan tipe data Oracle untuk Oracle Reader.

Klasifikasi tipe

Tipe data Oracle

Tipe bilangan bulat

NUMBER, RAWID, INTEGER, INT, dan SMALLINT

Tipe bilangan titik mengambang

NUMERIC, DECIMAL, FLOAT, DOUBLE PRECISIOON, dan REAL

Tipe 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

Tipe tanggal dan waktu

TIMESTAMP dan DATE

Tipe Boolean

BIT dan BOOL

Tipe biner

BLOB, BFILE, RAW, dan LONG RAW

Prasyarat: Persiapkan lingkungan Oracle

Sebelum melakukan sinkronisasi data di DataWorks, Anda harus mempersiapkan lingkungan Oracle sebagaimana dijelaskan dalam topik ini. Persiapan ini memastikan layanan berjalan sebagaimana diharapkan saat Anda mengonfigurasi dan menjalankan tugas sinkronisasi data Oracle. Bagian-bagian berikut menjelaskan langkah-langkah persiapan.

Konfirmasi versi database Oracle

Versi database Oracle yang didukung bervariasi tergantung pada skenario sinkronisasi. Sebelum memulai, pastikan versi database Oracle Anda didukung.

  1. Jalankan salah satu pernyataan berikut untuk melihat versi database Oracle.

    • 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 database tersebut merupakan CDB. Tugas sinkronisasi real-time Data Integration tidak mendukung versi database Oracle 12c dan 18c CDB.

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

Buat akun dan konfigurasikan izin

Anda perlu membuat akun login database yang memiliki izin yang diperlukan untuk Oracle.

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

  2. Konfigurasikan izin.

    Jalankan perintah berikut untuk memberikan izin kepada akun tersebut. Ganti 'sync_account' dengan akun yang telah Anda buat.

    grant create session to 'sync_account';  // Memberikan izin untuk login ke database.
    grant connect to 'sync_account';  // Memberikan izin untuk terhubung ke database.
    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 tampilan yang di-materialisasi di database.
    grant select on DBA_MVIEW_LOGS to 'sync_account';  // Memberikan izin untuk melihat log tampilan yang di-materialisasi di database.
    grant select on DBA_CONSTRAINTS to 'sync_account';  // Memberikan izin untuk melihat informasi constraint untuk semua tabel di database.
    grant select on DBA_CONS_COLUMNS to 'sync_account';  // Memberikan izin untuk melihat informasi tentang semua kolom dalam constraint tertentu untuk semua tabel di database.
    grant select on all_tab_cols to 'sync_account';  // Memberikan izin untuk melihat informasi tentang kolom di tabel, tampilan, 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 di tabel database. SYS.COL$ menyimpan informasi 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 tampilan v_$database.
    grant select on V_$ARCHIVE_DEST to 'sync_account';  // Memberikan izin untuk melihat tampilan V_$ARCHIVE_DEST.
    grant select on v_$log to 'sync_account';  // Memberikan izin untuk melihat tampilan v_$log. Tampilan v_$log menampilkan informasi file log dari file kontrol.
    grant select on v_$logfile to 'sync_account';  // Memberikan izin untuk melihat tampilan v_$logfile. Tampilan v_$logfile berisi informasi tentang file log Redo.
    grant select on v_$archived_log to 'sync_account';  // Memberikan izin untuk melihat tampilan v$archived_log. Tampilan v$archived_log berisi informasi tentang log arsip.
    grant select on V_$LOGMNR_CONTENTS to 'sync_account';  // Memberikan izin untuk melihat tampilan V_$LOGMNR_CONTENTS.
    grant select on DUAL to 'sync_account';   // Memberikan izin untuk melihat tabel DUAL. DUAL adalah tabel virtual yang digunakan untuk memenuhi sintaks SELECT. Di Oracle, DUAL hanya berisi satu catatan.
    grant select on v_$parameter to 'sync_account';  // Memberikan izin untuk melihat tampilan v_$parameter. Tampilan v$parameter adalah tabel kamus dinamis di Oracle yang menyimpan pengaturan parameter database.
    grant select any transaction to 'sync_account';  // Memberikan izin untuk melihat transaksi apa pun di database.
    grant execute on SYS.DBMS_LOGMNR to 'sync_account';  // Memberikan izin untuk menggunakan alat Logmnr. Alat Logmnr membantu Anda menganalisis transaksi dan memulihkan data yang hilang.
    grant alter session to 'sync_account';  // Memberikan izin untuk memodifikasi koneksi 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 tampilan v_$standby_log. Tampilan v_$standby_log berisi log arsip dari database standby.
    grant select on v_$ARCHIVE_GAP to 'sync_account';  // Memberikan izin untuk mengkueri log arsip 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. Tampilan V$THREAD adalah tabel status thread dalam tampilan kinerja dinamis Oracle. Tampilan 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, jalankan perintah berikut untuk memberikan izin kepada akun agar dapat mengkueri semua tabel.

    grant select any table to 'sync_account'; 

    Untuk Oracle 12c dan yang lebih baru, jalankan perintah berikut untuk memberikan izin penambangan log kepada akun tersebut. Untuk versi sebelum Oracle 12c, Anda tidak perlu menjalankan perintah ini karena fitur penambangan log sudah built-in.

    grant LOGMINING TO 'sync_account';

Aktifkan log arsip dan pencatatan tambahan, serta alihkan file log Redo

  1. Aktifkan log arsip dengan menjalankan pernyataan SQL berikut.

    shutdown immediate;
    startup mount;
    alter database archivelog;
    alter database open;
  2. Aktifkan pencatatan tambahan.

    Anda dapat mengaktifkan pencatatan tambahan sesuai kebutuhan dengan menjalankan pernyataan SQL berikut.

    // Untuk menangkap perubahan data lengkap selama sinkronisasi real-time, aktifkan pencatatan tambahan. Anda dapat mengaktifkannya di tingkat database dengan menjalankan pernyataan SQL berikut:
    alter database add supplemental log data(primary key) columns; // Mengaktifkan pencatatan tambahan untuk kolom kunci primer database.
    alter database add supplemental log data(unique) columns; // Mengaktifkan pencatatan tambahan untuk kolom indeks unik database.
    
    // Anda juga dapat mengaktifkannya di tingkat tabel:
    alter schema.table add supplemental log data(primary key) columns; // Mengaktifkan pencatatan tambahan untuk kolom kunci primer tabel tertentu.
    alter schema.table add supplemental log data(unique) columns; // Mengaktifkan pencatatan tambahan untuk kolom indeks unik tabel tertentu.
  3. Alihkan file log Redo.

    Setelah Anda mengaktifkan pencatatan tambahan, jalankan perintah berikut beberapa kali (disarankan lima kali) untuk mengalihkan file log Redo.

    alter system switch logfile;
    Catatan

    Menjalankan perintah beberapa kali memastikan bahwa ketika file log saat ini penuh, sistem akan beralih ke file berikutnya. Hal ini mencegah kehilangan catatan operasi dan memfasilitasi pemulihan data.

Periksa pengkodean karakter database

Jalankan pernyataan berikut untuk memeriksa format pengkodean karakter database:

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 adalah set karakter database dan set karakter nasional. Keduanya menentukan kelas penyimpanan untuk dua jenis utama data karakter di Oracle.

Catatan

Data Integration hanya mendukung pengkodean karakter UTF8, AL32UTF8, AL16UTF16, dan ZHS16GBK untuk sinkronisasi data. Jika database Anda menggunakan pengkodean karakter yang tidak didukung, Anda harus mengubah pengkodean tersebut sebelum dapat melakukan sinkronisasi data.

Periksa tipe data tabel database

Anda dapat menggunakan pernyataan SELECT untuk mengkueri tipe data dalam tabel database. Contoh berikut menunjukkan cara melihat tipe data dalam 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 bersesuaian.

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

  • TABLE_NAME: Nama tabel target untuk dikueri. Saat menjalankan pernyataan, ganti 'tablename' dengan nama tabel 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 infotips 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 mengonfigurasi tugas sinkronisasi offline untuk satu tabel

Panduan mengonfigurasi tugas sinkronisasi real-time untuk satu tabel

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

Panduan mengonfigurasi sinkronisasi untuk seluruh database, termasuk offline, real-time penuh dan inkremental, serta database ter-shard

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

FAQ

  • Tugas sinkronisasi real-time untuk Oracle, PolarDB, atau MySQL melaporkan kesalahan berulang

  • Masalah pemulihan data dalam sinkronisasi aktif/standby

    Masalah ini terjadi ketika Anda menggunakan arsitektur pemulihan bencana aktif/standby untuk Oracle. Jika database utama gagal dan sistem beralih ke database sekunder, database sekunder terus memulihkan data dari database utama menggunakan log arsip. Karena perbedaan waktu dalam sinkronisasi data dan faktor-faktor seperti latensi jaringan, data di database sekunder mungkin berbeda secara signifikan dari data di database utama. Oleh karena itu, data yang disinkronkan dari database sekunder bukanlah snapshot lengkap dan mutakhir.

  • Batasan konsistensi

    Oracle adalah sistem manajemen database relasional (RDBMS) yang menyediakan antarmuka kueri data dengan konsistensi kuat. Misalnya, selama 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 berlaku untuk sinkronisasi data dalam model single-threaded Oracle Reader. Jika Oracle Reader mengekstrak data secara konkuren berdasarkan konfigurasi Anda, konsistensi kuat tidak dapat dijamin.

    Ketika Oracle Reader membagi data berdasarkan parameter splitPk, ia memulai beberapa tugas konkuren untuk menyinkronkan data. Tugas-tugas ini tidak termasuk dalam transaksi baca yang sama dan dijalankan pada waktu yang berbeda. Oleh karena itu, data yang disinkronkan bukanlah snapshot data yang lengkap dan konsisten.

    Saat ini belum tersedia solusi teknis untuk snapshot konsisten di beberapa thread. Anda dapat menggunakan pendekatan rekayasa untuk mengatasi masalah ini. Solusi berikut melibatkan pertukaran. Pilih salah satu berdasarkan kebutuhan Anda.

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

    • Nonaktifkan penulis data lain untuk memastikan data statis. Misalnya, Anda dapat mengunci tabel atau menonaktifkan sinkronisasi ke database sekunder. Hal ini mungkin memengaruhi bisnis online.

  • Masalah pengkodean database

    Oracle Reader menggunakan Java Database Connectivity (JDBC) untuk mengekstrak data. JDBC kompatibel dengan berbagai pengkodean dan melakukan konversi pengkodean di lapisan bawah. Oleh karena itu, Anda tidak perlu menentukan pengkodean untuk Oracle Reader. Pengkodean tersebut dapat diambil dan ditranskode secara otomatis.

  • Metode untuk sinkronisasi data inkremental

    Oracle Reader menggunakan pernyataan `SELECT` untuk mengekstrak data. Anda dapat menggunakan SELECT…WHERE… untuk melakukan ekstraksi data inkremental dengan cara berikut:

    • Ketika aplikasi online menulis ke database, ia mengisi kolom `modify` dengan stempel waktu untuk perubahan, termasuk penambahan, pembaruan, dan penghapusan logis. Dalam skenario ini, Oracle Reader dapat menambahkan klausa `WHERE` dengan stempel waktu dari fase sinkronisasi sebelumnya.

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

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

  • Keamanan SQL

    Oracle Reader menyediakan fitur querySql, yang memungkinkan Anda menyesuaikan pernyataan ekstraksi `SELECT`. Oracle Reader tidak melakukan pemeriksaan keamanan apa pun pada pernyataan 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 berupa schema.tableName.

Catatan

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

Ya

Tidak ada

column

Nama kolom yang akan disinkronkan dari tabel yang ditentukan. Gunakan array JSON untuk menggambarkan bidang-bidang tersebut. Secara default, semua kolom digunakan, misalnya, ["*"].

  • Anda dapat memotong kolom, artinya Anda dapat mengekspor subset kolom.

  • Anda dapat mengatur ulang kolom, artinya 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 bilangan bulat.

    • 'mingya.wmy' adalah konstanta string. Perhatikan bahwa konstanta ini 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.

  • Anda harus secara eksplisit menentukan nilai untuk column. Nilainya tidak boleh kosong.

Ya

Tidak ada

splitFactor

Faktor pemisahan. Ini menentukan jumlah chunk untuk membagi data guna disinkronkan. Jika Anda mengonfigurasi beberapa thread konkuren, data dibagi menjadi sejumlah chunk yang sama dengan concurrency × splitFactor. Misalnya, jika concurrency adalah 5 dan splitFactor adalah 5, data dibagi menjadi 5 × 5 = 25 chunk dan diproses oleh 5 thread konkuren.

Catatan

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

Tidak

5

splitMode

Mode pemisahan. Nilai yang valid:

  • averageInterval: Membagi data berdasarkan interval rata-rata. Mode ini menemukan nilai maksimum dan minimum dari splitPK dan membagi data secara merata berdasarkan jumlah chunk.

  • randomSampling: Membagi data berdasarkan pengambilan sampel acak. Mode ini memilih secara acak sejumlah titik data dari semua data sebagai titik pemisah.

Catatan

Parameter splitMode harus digunakan bersama parameter splitPk.

  • Ketika splitPk bertipe numerik, atur splitMode menjadi averageInterval.

  • Ketika `splitPk` bertipe string, splitMode harus diatur menjadi randomSampling.

Tidak

randomSampling

splitPk

Ketika Oracle Reader mengekstrak data, jika Anda menentukan parameter splitPk, berarti Anda ingin menggunakan bidang yang diwakili oleh splitPk untuk sharding data. Akibatnya, sinkronisasi data memulai tugas konkuren, yang meningkatkan efisiensinya.

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

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

    • Ketika splitPk bertipe numerik, atur splitMode menjadi averageInterval.

    • Ketika `splitPk` bertipe string, splitMode harus diatur menjadi randomSampling.

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

Catatan

Bidang splitPK tidak boleh berupa ROWID untuk tampilan.

Tidak

Tidak ada

where

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

  • Kondisi `where` dapat digunakan untuk sinkronisasi data bisnis inkremental.

  • Jika kondisi `where` tidak dikonfigurasi atau kosong, seluruh tabel disinkronkan.

Tidak

Tidak ada

querySql (Mode lanjutan. Tidak didukung di antarmuka tanpa kode.)

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

Tidak

Tidak ada

fetchSize

Parameter ini menentukan jumlah catatan data 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 ekstraksi data.

Catatan

Nilai `fetchSize` yang terlalu besar (>2048) dapat menyebabkan kesalahan 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-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 kesalahan.
        },
        "speed":{
            "throttle":true,// Jika throttle bernilai false, parameter mbps diabaikan dan pengendalian aliran dinonaktifkan. Jika throttle bernilai true, pengendalian aliran diaktifkan.
            "concurrent":1, // Jumlah pekerjaan konkuren.
            "mbps":"12"// Laju pengendalian aliran. 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 nama pengguna yang dikonfigurasi, 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 bermasalah gagal ditulis dan dicatat sebagai data kotor.

Tidak

insert into

column

Bidang di tabel tujuan tempat Anda ingin menulis data. Pisahkan bidang dengan koma. Contoh: "column": ["id","name","age"]. Untuk menulis ke semua kolom secara berurutan, gunakan tanda bintang (*). Contoh: "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 stempel waktu.

Tidak

Tidak ada

batchSize

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

Tidak

1.024