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) |
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, atau19c cdb.Tidak didukung:
Database
12c cdbdan18c cdb.
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.
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;
Jika versi database adalah
12catau18c, jalankan pernyataan berikut untuk memeriksa apakah itu databasecdb. Tugas sinkronisasi real-time di Data Integration tidak mendukung database Oracle12cdan18ccdb.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.
Buat akun. Untuk informasi selengkapnya, lihat Buat akun Oracle.
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
Aktifkan archived log. Pernyataan SQL-nya sebagai berikut.
shutdown immediate; startup mount; alter database archivelog; alter database open;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.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;CatatanMenjalankan 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.
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
Untuk informasi selengkapnya tentang prosedur, lihat Konfigurasi tugas di antarmuka tanpa kode dan Konfigurasi tugas di editor kode.
Untuk semua parameter dan demo skrip editor kode, lihat Lampiran: Demo skrip dan deskripsi parameter.
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 Catatan Contohnya, jika selectedDatabase adalah | Ya | Tidak ada |
column | Kumpulan kolom yang akan disinkronkan. Gunakan array JSON untuk menggambarkan informasi bidang. Secara default, semua kolom digunakan, misalnya, ["*"].
| 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:
Catatan Parameter splitMode harus digunakan bersama parameter splitPk.
| 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.
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.
| 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 | 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, | 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 |