Datastream memungkinkan Anda melakukan streaming data historis dan perubahan yang sedang berlangsung dari database Oracle sumber ke tujuan untuk analisis real-time dan sinkronisasi database.
Sebelum mengonfigurasi sumber Oracle, tinjau perilaku replikasi, versi dan jenis database yang didukung, penyiapan database, praktik terbaik, dan batasan umum di Datastream.
Perilaku
Datastream mendukung dua metode untuk mengekstrak perubahan pada data dari file log pengulangan online: pembaca log biner Oracle (Pratinjau) dan Oracle LogMiner.
Dengan metode pembaca log biner (Pratinjau), perilaku berikut akan diamati:
Jika ada jeda pembacaan saat mengekstrak perubahan dari file log online, Datastream akan mengekstrak perubahan dari file log yang diarsipkan.
Datastream hanya mereplikasi perubahan yang di-commit ke tujuan. Transaksi yang tidak di-commit atau di-roll back tidak akan direplikasi.
Pembaca biner mendukung replikasi kolom
VARCHAR2Oracle yang lebih panjang dari 4.000 karakter.
Datastream juga mendukung fitur Oracle LogMiner untuk mengekspos perubahan pada data. Metode ini memiliki perilaku berikut:
- Semua skema atau skema tertentu dari database tertentu, serta semua tabel dari skema atau tabel tertentu, dapat dipilih.
- Semua data historis direplikasi.
- Semua perubahan bahasa pengolahan data (DML), seperti penyisipan, pembaruan, dan penghapusan dari database dan tabel yang ditentukan, akan direplikasi.
- Datastream mereplikasi perubahan yang di-commit dan, dalam beberapa kasus, perubahan yang tidak di-commit ke tujuan. Datastream membaca perubahan yang tidak di-commit. Jika terjadi rollback, output Datastream juga mencakup operasi yang berlawanan. Misalnya, jika ada operasi
INSERTyang di-roll back, maka data output juga akan berisi operasiDELETEyang sesuai. Dalam hal ini, peristiwa akan muncul sebagai peristiwaDELETEdengan hanyaROWID.
Pengisian ulang berbasis ROWID
Di Oracle, ROWID adalah kolom pseudo yang menyimpan ID unik untuk baris dalam tabel. Datastream menggunakan nilai ROWID untuk operasi pengisian ulang. Oleh karena itu, sebaiknya Anda tidak melakukan tindakan apa pun yang dapat mengubah nilai ROWID di database Oracle sumber hingga operasi pengisian ulang selesai.
Tindakan yang dapat mengubah nilai ROWID mencakup:
Perpindahan fisik baris:
- Operasi ekspor dan impor: saat Anda mengekspor tabel, lalu mengimpornya kembali, lokasi fisik baris mungkin berubah, sehingga menghasilkan nilai
ROWIDbaru. - Perintah
ALTER TABLE (...) MOVE: memindahkan tabel ke tablespace yang berbeda dapat mengubah penyimpanan fisik dan menyebabkan perubahanROWID. - Perintah
ALTER TABLE (...) SHRINK SPACE: perintah ini mengompresi tabel, yang berpotensi memindahkan baris dan memengaruhi nilaiROWID-nya. - Operasi partisi: memisahkan, menggabungkan, atau memindahkan partisi dapat mengubah penempatan fisik baris dan nilai
ROWID-nya.
- Operasi ekspor dan impor: saat Anda mengekspor tabel, lalu mengimpornya kembali, lokasi fisik baris mungkin berubah, sehingga menghasilkan nilai
Operasi flashback:
- Perintah
FLASHBACK TABLE: memulihkan tabel ke status sebelumnya melibatkan penghapusan dan penyisipan ulang baris, sehingga membuat nilaiROWIDbaru. FLASHBACK_TRANSACTION_QUERY: Mirip denganFLASHBACK TABLE. Me-roll back transaksi dapat menyebabkan perubahanROWIDjika baris dihapus atau diperbarui dalam transaksi.
- Perintah
Memecahkan masalah pengisian ulang tabel partisi Oracle 11.2.0.4
Jika pengisian ulang gagal untuk tabel berpartisi di Oracle 11.2.0.4 dengan error pengambilan yang tidak terduga (indeks di luar batas), hal ini disebabkan oleh bug metadata Oracle yang menyebabkan kueri ke ALL_OBJECTS gagal menampilkan sub-partisi.
- Solusi: cabut sementara hak istimewa
SELECT ON DBA_EXTENTSdari pengguna Datastream (misalnya,REVOKE SELECT ON sys.dba_extents FROM USER_NAME;). Tindakan ini akan memaksa Datastream menggunakan pengisian ulang berbasis indeks, sehingga mengabaikan masalah metadata.
Database standby
Saat Anda menggunakan database standby Oracle Active Data Guard sebagai sumber, Datastream akan membaca redo log yang diarsipkan. Untuk memastikan bahwa
Datastream hanya memproses redo log yang telah berhasil
diterapkan ke database standby, Anda harus memfilter tampilan Oracle standar, seperti
V$ARCHIVED_LOG dan GV$ARCHIVED_LOG, untuk hanya menyertakan data dengan
filter APPLIED = 'YES'.
Anda dapat melakukannya dengan membuat tampilan kustom. Pastikan Anda memberikan akses yang sesuai ke tampilan ini untuk pengguna Datastream Anda. Misalnya:
CREATE OR REPLACE VIEW USER_NAME.local_v$archived_log AS
SELECT * FROM sys.v_$ARCHIVED_LOG
WHERE RESETLOGS_CHANGE# = (SELECT resetlogs_change# FROM v$database)
AND APPLIED = 'YES';
CREATE OR REPLACE VIEW USER_NAME.local_gv$archived_log AS
SELECT * FROM sys.gv_$ARCHIVED_LOG
WHERE RESETLOGS_CHANGE# = (SELECT resetlogs_change# FROM v$database)
AND APPLIED = 'YES';
CREATE SYNONYM USER_NAME.v$archived_log FOR USER_NAME.local_v$archived_log;
CREATE SYNONYM USER_NAME.gv$archived_log FOR USER_NAME.local_gv$archived_log;
Penggunaan filter APPLIED = 'YES' memiliki implikasi pada keaktualan data.
Datastream menunggu hingga Managed Recovery Process (MRP) database standby menerapkan log dan memperbarui kolom APPLIED menjadi YES sebelum mengekstrak perubahan. Jika proses MRP tertunda atau dijeda, misalnya, jika Anda
menangguhkan proses penerapan standby, hal ini akan langsung memengaruhi keaktualan
data yang direplikasi. Datastream memasuki loop percobaan ulang dan menunda pemrosesan
hingga log yang diarsipkan yang baru diterapkan tersedia.
Konfigurasi ini sangat relevan saat mereplikasi tabel yang menyertakan kolom objek besar (LOB). Untuk operasi UPDATE, nilai mendetail kolom LOB tidak ada dalam redo log; oleh karena itu, Datastream harus mengkueri database untuk mengambil baris terkait. Jika Datastream memproses redo log yang belum diterapkan dan mencoba mengambil nilai LOB dari database standby, Datastream mungkin akan mengambil nilai yang salah dan sudah tidak berlaku. Dengan memfilter log untuk memastikan log diterapkan sepenuhnya terlebih dahulu, Datastream akan mengambil data yang benar.
Versi
Datastream mendukung versi database Oracle berikut:
- Oracle 11g, Versi 11.2.0.4 (hanya didukung dengan metode CDC Logminer)
- Oracle 12c, Versi 12.1.0.2
- Oracle 12c, Versi 12.2.0.1
- Oracle 18c
- Oracle 19c
- Oracle 21c
Datastream mendukung jenis database Oracle berikut:
- Dihosting sendiri secara lokal atau di penyedia cloud mana pun
- Amazon RDS untuk Oracle
- Oracle Cloud
- Oracle Exadata
- Oracle RAC
- Database standby Oracle Active Data Guard
Penyiapan
Untuk menyiapkan database Oracle sumber agar data darinya dapat di-streaming ke tujuan, Anda harus mengonfigurasi database untuk memberikan akses, menyiapkan logging, dan menentukan kebijakan retensi.
Lihat Mengonfigurasi database Oracle sumber untuk mempelajari cara mengonfigurasi database ini agar Datastream dapat menarik data dari database tersebut ke tujuan.
Praktik terbaik
Bagian ini menjelaskan praktik terbaik yang direkomendasikan untuk mengonfigurasi sumber Oracle Anda agar dapat digunakan dengan Datastream.
Kepekaan huruf besar/kecil untuk pembaca biner
Saat mengonfigurasi sumber Oracle dengan metode CDC pembaca biner dan menentukan nama direktori untuk log redo dan arsip, perhatikan bahwa nama tersebut peka huruf besar/kecil. Pastikan nama direktori yang Anda berikan di profil koneksi Datastream sama persis dengan nama direktori di database Oracle Anda.
Konkurensi CDC
Untuk meminimalkan jeda replikasi, pastikan Datastream dapat memproses redo log secepat sumber Oracle membuatnya. Saat menggunakan metode CDC pembaca biner, konkurensi Datastream berada di tingkat file redo log: setiap tugas yang ditentukan oleh maxConcurrentCdcTasks memproses satu file dalam satu waktu.
Sebaiknya gunakan metodologi berikut:
- Menyesuaikan konkurensi di Datastream: Identifikasi jumlah rata-rata pengalihan redo log selama jam sibuk bisnis Anda dan konfigurasikan parameter
maxConcurrentCdcTaskssebagaimana mestinya. Untuk mengetahui informasi selengkapnya, lihat Jumlah maksimum tugas CDC. - Konfigurasikan pengalihan log Oracle: Konfigurasikan Oracle untuk sering mengalihkan log, misalnya, setiap 10-20 menit. Hal ini menciptakan aliran unit kerja yang lebih kecil secara stabil, sehingga tugas serentak Datastream dapat bekerja secara paralel secara efektif.
Sebaiknya optimalkan setelan Anda agar ada cukup tugas serentak di Datastream untuk menangani pembuatan redo log yang lebih kecil dari Oracle secara rutin. Untuk mengetahui informasi selengkapnya, lihat kontrol konkurensi streaming.
Batasan umum
Batasan umum untuk menggunakan database Oracle sebagai sumber meliputi:
- Streaming dibatasi hingga 10.000 tabel. Jika aliran data menyertakan lebih dari 10.000 tabel, aliran data tersebut mungkin akan mengalami error.
- Datastream mendukung arsitektur multi-tenant Oracle (CDB/PDB). Namun, Anda hanya dapat mereplikasi satu pluggable database dalam satu aliran data.
- Oracle Autonomous Database tidak didukung.
- Untuk tabel yang tidak memiliki kunci utama, Datastream menggunakan
ROWIDbaris untuk melakukan operasi penggabungan di sisi konsumen. Perhatikan bahwaROWIDmungkin tidak unik. Misalnya, jika Anda menghapus dan menyisipkan ulang baris dengan utilitas Ekspor/Impor Oracle,ROWIDbaris tersebut mungkin berubah. Jika Anda menghapus baris, Oracle dapat menetapkan ulangROWID-nya ke baris baru yang disisipkan nanti. - Tabel yang diatur indeks (IOT) tidak didukung.
- Tabel sementara tidak didukung.
- Jenis data Oracle berikut tidak didukung dan tidak direplikasi. Kolom jenis ini direplikasi sebagai nilai
NULLdi tujuan:ANYDATA,ANYDATASET,ANYTYPEVARRAY(Oracle Array)BFILE,BFILENAMEINTERVAL DAY TO SECOND,INTERVAL YEAR TO MONTHLONG,LONG RAWUROWIDUDT- Jenis media dan spasial:
ORDAUDIO,ORDDATASOURCE,ORDDICOM,ORDDOC,ORDIMAGE,ORDVIDEO,SDO_GEOMETRY(dan semua jenisMDSYS.SDO_*lainnya).
Untuk melakukan streaming kolom jenis data objek besar, seperti
XMLTYPE, binary large object (BLOB), character large object (CLOB), dan national character large object (NCLOB), Anda harus menyertakan flagstreamLargeObjectsdalam konfigurasi streaming. Jika Anda tidak menyertakan flag, Datastream tidak akan melakukan streaming kolom tersebut dan kolom tersebut akan diganti dengan nilaiNULLdi tujuan. Untuk mengetahui informasi selengkapnya, lihat Mengaktifkan streaming objek besar untuk sumber Oracle. Saat melakukan streaming jenis data ini, Datastream harus mengkueri database sumber untuk mengambil nilai LOB yang hilang pada waktu tertentu (dalam proses pencarian aktif yang disebut suplementasi). Hal ini terjadi dalam skenario berikut:- Saat payload LOB yang tidak berubah dihapus dari redo log selama
UPDATE - Selama operasi DML apa pun yang melibatkan jenis XML biner
- Selama DML yang diurai pada tabel yang berisi LOB jika aliran data menggunakan metode LogMiner
Karena Datastream mengalirkan kolom ini dengan mengkueri database, perubahan sementara mungkin tidak terekam dalam skenario yang melibatkan update cepat dan berturut-turut atau penghapusan cepat setelah penyisipan. Perhatikan bahwa operasi
DELETEtidak memicu penambahan. Batasan ini sangat relevan saat menggunakan mode tulis hanya-tambah, yang mengharapkan semua perubahan perantara dicatat.- Saat payload LOB yang tidak berubah dihapus dari redo log selama
Untuk Oracle 11g, tabel yang memiliki kolom jenis data
ANYDATAatauUDTtidak didukung, dan seluruh tabel tidak akan direplikasi.Oracle Label Security (OLS) tidak direplikasi.
Datastream secara berkala mengambil skema terbaru dari sumber saat peristiwa diproses. Jika skema berubah, beberapa peristiwa dari skema baru mungkin dibaca saat skema lama masih diterapkan. Dalam hal ini, Datastream mendeteksi perubahan skema, memicu pengambilan skema, dan memproses ulang peristiwa yang gagal.
Tidak semua perubahan pada skema sumber dapat dideteksi secara otomatis, sehingga dapat menyebabkan kerusakan data. Perubahan skema berikut dapat menyebabkan kerusakan data atau kegagalan memproses peristiwa di downstream:
- Menghapus kolom
- Menambahkan kolom ke bagian tengah tabel
- Mengubah jenis data kolom
- Mengurutkan ulang kolom
- Menghapus tabel (relevan jika tabel yang sama kemudian dibuat ulang dengan data baru yang ditambahkan)
- Memotong tabel
Datastream tidak mendukung replikasi tampilan.
Datastream tidak mendukung replikasi kolom virtual (
GENERATED ALWAYS AS (...) VIRTUAL), karena Oracle tidak menyimpan nilai kolom virtual di disk atau menulisnya ke redo log. Kolom virtual dihilangkan dari skema tujuan. Jika kolom virtual adalah bagian dari kunci utama gabungan, Datastream hanya menggunakan kolom non-virtual sebagai kunci utama di tujuan, yang dapat menyebabkan penimpaan kunci duplikat jika kolom yang tersisa tidak unik.Datastream mendukung tampilan terwujud. Namun, tampilan baru yang dibuat saat streaming berjalan tidak akan diisi ulang secara otomatis.
Saat menggunakan metode Oracle LogMiner, pernyataan
SAVEPOINTtidak didukung dan dapat menyebabkan perbedaan data jika terjadi rollback.Saat menggunakan metode pembaca biner, tabel berpartisi secara dinamis tidak didukung.
Saat menggunakan metode Oracle LogMiner, Datastream tidak mendukung replikasi tabel dan kolom yang namanya melebihi 30 karakter.
Datastream mendukung encoding himpunan karakter berikut untuk database Oracle:
AL16UTF16AL32UTF8IN8ISCIIIW8ISO8859P8JA16SJISJA16SJISTILDEKO16MSWIN949US7ASCIIUTF8WE8ISO8859P1WE8ISO8859P9WE8ISO8859P15WE8MSWIN1252ZHT16BIG5
Datastream tidak mendukung replikasi nilai tanggal nol. Tanggal tersebut diganti dengan nilai
NULL.Datastream tidak mendukung konektivitas langsung ke database menggunakan fitur Single Client Access Name (SCAN) di lingkungan Oracle Real Application Clusters (RAC). Untuk mengetahui informasi tentang solusi potensial, lihat Perilaku dan batasan sumber Oracle.
Jika sumbernya adalah database standby Oracle Active Data Guard, Datastream hanya mendukung enkripsi tingkat tablespace dan tidak mendukung enkripsi tingkat kolom.
Batasan tambahan saat menggunakan pembaca biner
Metode pembaca biner berperforma tinggi hanya didukung untuk Oracle 12c dan yang lebih baru. Untuk Oracle 11g dan versi sebelumnya, Anda harus menggunakan LogMiner.
Pembaca biner tidak mendukung fitur berikut:
- Transparent Database Encryption (TDE)
- Hybrid Columnar Compression
- File yang Aman
- ASM tidak didukung untuk sumber Amazon RDS.
- Metode CDC pembaca biner tidak mendukung Oracle 11g dan versi yang lebih lama.
Langkah berikutnya
- Pelajari cara mengonfigurasi sumber Oracle untuk digunakan dengan Datastream.