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) |
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 database19c CDB.Tidak didukung:
database
12c CDBdan18c CDB.
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.
Jalankan salah satu pernyataan berikut untuk melihat versi database Oracle.
Pernyataan 1:
select * from v$version;Pernyataan 2:
select version from v$instance;
Jika versi database adalah
12catau18c, jalankan pernyataan berikut untuk memeriksa apakah database tersebut merupakanCDB. Tugas sinkronisasi real-time Data Integration tidak mendukung versi database Oracle12cdan18cCDB.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.
Buat akun. Untuk informasi selengkapnya, lihat Buat akun Oracle.
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
Aktifkan log arsip dengan menjalankan pernyataan SQL berikut.
shutdown immediate; startup mount; alter database archivelog; alter database open;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.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;CatatanMenjalankan 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.
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
Untuk informasi selengkapnya tentang prosedur, lihat Konfigurasi menggunakan antarmuka tanpa kode dan Konfigurasi menggunakan editor kode.
Untuk daftar lengkap parameter dan demo skrip untuk editor kode, lihat Lampiran: Demo skrip dan deskripsi parameter.
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 Catatan Contohnya, jika selectedDatabase adalah | 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, ["*"].
| 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:
Catatan Parameter splitMode harus digunakan bersama parameter splitPk.
| 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.
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.
| 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 | 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: | 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 |