Dalam tutorial ini, Anda menggunakan Striim untuk memigrasikan Oracle® Database Enterprise Edition 18c atau lebih baru dari lingkungan lokal atau lingkungan cloud ke instance Cloud SQL untuk PostgreSQL di Google Cloud. Tutorial ini menggunakan tabel dalam skema contoh HR Oracle.
Tutorial ini ditujukan untuk para arsitek database perusahaan, engineer database, dan pemilik data yang berencana menggunakan Striim untuk memigrasikan atau mereplikasi database Oracle ke Cloud SQL untuk PostgreSQL. Anda harus memiliki pemahaman dasar tentang cara menggunakan Striim untuk membangun pipeline. Anda juga harus memahami UI web Striim , konsep utama Striim, dan cara membuat aplikasi menggunakan Striim's Flow Designer.
Striim adalah partner teknologi migrasi database Google Cloud. Striim menyederhanakan migrasi online dengan menggunakan antarmuka tarik lalu lepas untuk menyiapkan perpindahan data berkelanjutan antar-database. Untuk migrasi ke Google Cloud, Striim menawarkan platform streaming yang tidak mengganggu untuk ekstrak, transformasi, dan muat (ETL) yang efisien untuk di-deploy dan mudah diiterasi. Untuk membangun pipeline migrasi, Anda akan menggunakan Striim's Flow Designer selama tutorial ini.
Jika Anda tidak terbiasa dengan migrasi database, lihat bincang teknologi dari Cloud Next '19 ini.
Arsitektur
Migrasi database menggunakan Striim melibatkan dua tahap pemindahan data berurutan:
- Tahap 1: Replikasi awal satu kali database Oracle.
- Tahap 2: Replikasi berkelanjutan dari setiap perubahan yang dilakukan pada sistem database sumber setelahnya dengan menggunakan pengambilan data perubahan (CDC).
Diagram berikut mengilustrasikan arsitektur deployment dasar:
Arsitektur ini melibatkan pengoperasian aplikasi Striim pada instance Compute Engine. Layanan ini terhubung ke database Oracle yang dihosting di infrastruktur lokal atau di cloud, dan menulis data ke instance Cloud SQL untuk PostgreSQL di Google Cloud.
Untuk menghindari masalah jaringan atau konektivitas antara instance Striim dan Cloud SQL, gunakan jaringan yang sama untuk kedua instance. Anda dapat men-deploy Striim dari Google Cloud Marketplace pada instance Compute Engine atau, jika memerlukan ketersediaan yang tinggi, Anda dapat men-deploy Striim sebagai cluster.
Untuk tutorial ini, deploy dari Cloud Marketplace.
Keuntungan men-deploy Striim dari Cloud Marketplace adalah memungkinkan Anda terhubung ke berbagai database dan sumber data menggunakan adaptor bawaannya. Anda dapat menghubungkan adaptor menggunakan Flow Designer, antarmuka tarik lalu lepas yang interaktif dari Striim, untuk membentuk grafik asiklik. Grafik ini juga dikenal sebagai pipeline Striim atau aplikasi Striim.
Kasus penggunaan migrasi dalam tutorial ini menggunakan tiga adaptor Striim:
- Database Reader: Membaca data dari database sumber Oracle selama tahap pemuatan awal.
- Oracle Reader: Membaca data menggunakan LogMiner dari database sumber Oracle selama tahap replikasi data berkelanjutan.
- Database Writer: Menulis data ke database Cloud SQL untuk PostgreSQL selama pemuatan awal dan selama replikasi data berkelanjutan.
Tujuan
Menyiapkan database Oracle sebagai database sumber untuk migrasi atau replikasi.
Menyiapkan database Cloud SQL untuk PostgreSQL sebagai database target untuk migrasi atau replikasi.
Memenuhi prasyarat untuk menginstal dan menjalankan Striim.
Mengkonversikan skema database Oracle ke skema yang sesuai di PostgreSQL.
Menjalankan pemuatan awal dari database Oracle Anda ke Cloud SQL untuk PostgreSQL.
Menyiapkan replikasi berkelanjutan dari database Oracle Anda ke Cloud SQL untuk PostgreSQL.
Biaya
Dalam dokumen ini, Anda menggunakan komponen Google Cloud yang dapat ditagih berikut:
Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda,
gunakan kalkulator harga.
Solusi Striim di Cloud Marketplace menawarkan lisensi uji coba gratis dengan jangka waktu terbatas. Saat uji coba berakhir, biaya penggunaan akan ditagihkan ke akun Google Cloud Anda. Anda juga bisa mendapatkan lisensi Striim langsung dari Striim untuk deployment lokal dan di mesin virtual (VM) Compute Engine. Anda mungkin juga dikenai biaya terkait dengan menjalankan database Oracle di luar Google Cloud.
Sebelum memulai
- Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
Tutorial ini mengasumsikan bahwa Anda sudah memiliki hal sebagai berikut:
- Oracle Database Enterprise Edition 18c atau lebih baru untuk Linux x86-64 yang ingin Anda migrasikan.
- Compute Engine menjalankan CentOS yang telah terinstal Striim. Anda dapat men-deploy Striim melalui solusi Google Cloud Marketplace
Menyiapkan database Oracle
Bagian berikut membahas perubahan konfigurasi yang mungkin perlu Anda hubungkan ke database Oracle dan memigrasikannya dengan Striim. Untuk detail konfigurasi, lihat Tugas Konfigurasi Oracle Dasar.
Memilih sumber untuk Oracle CDC
Meskipun ada berbagai sumber CDC Oracle, tutorial ini menggunakan LogMiner. Anda dapat membaca opsi alternatif di sumber Oracle CDC Alternatif.
Menyiapkan Oracle Database Enterprise Edition 18c (atau yang lebih baru)
Untuk menyiapkan database Oracle, ikuti petunjuk di halaman dokumentasi Striim untuk langkah-langkah berikut:
- Mengaktifkan
archivelog
Striim. - Mengaktifkan data log tambahan Striim.
- Mengaktifkan logging kunci utama Striim.
Membuat pengguna Oracle dengan hak istimewa LogMiner untuk Striim.
Untuk menjalankan langkah-langkah ini, Anda harus terhubung ke database container (CDB), terlepas dari apakah Anda memigrasikan CDB atau database pluggable (PDB). Sebaiknya menginstal dan menggunakan SQL*Plus untuk berinteraksi dengan database Oracle.
Membuat tabel
quiescemarker
Striim.Adaptor Oracle Reader Striim untuk CDC memerlukan tabel guna menyimpan metadata saat menutup aplikasi. Jika menggunakan LogMiner sebagai sumber untuk CDC (seperti tutorial ini), Anda memerlukan tabel quiescemarker. Anda harus terhubung ke CDB saat mengikuti langkah-langkah membuat tabel.
Membuat konektivitas jaringan antara database Oracle dan instance Striim.
Secara default, Oracle listener berada di
1521
. Pastikan alamat IP untuk instance Striim diizinkan untuk terhubung ke port pemroses Oracle dan tidak ada aturan firewall yang memblokirnya. Port tempat pemroses Oracle dikonfigurasi ada dalam file$ORACLE_HOME/network/admin/tnsnames.ora
.Catat system change number (SCN) untuk database Oracle.
SCN adalah stempel waktu internal yang digunakan untuk mereferensikan perubahan yang terjadi pada database.
Di database Oracle Anda, dapatkan SCN terlama:
SELECT MIN(start_scn) FROM gv$transaction;
Salin nomor ini. Anda akan memerlukannya nanti dalam langkah-langkah pipeline replikasi berkelanjutan.
Menyiapkan instance Striim
Untuk informasi tentang sistem operasi yang mendukung Striim, lihat persyaratan sistem. Untuk menggunakan Oracle Reader dengan LogMiner, tempatkan driver JDBC Oracle di classpath Java pada instance Striim Anda. Lakukan langkah-langkah berikut di setiap server Striim yang menjalankan adaptor Oracle Reader:
- Login ke
akun Oracle Anda,
lalu
download file
ojdbc8.jar
di komputer lokal Anda.- Jika Anda belum memiliki akun Oracle, buat akun.
Klik link Download untuk file
ojdbc8.jar
.- Klik Saya telah meninjau dan menyetujui Perjanjian Lisensi Oracle untuk mendownload file ini, jika Anda menyetujui persyaratan lisensi.
Di Cloud Shell, buat bucket Cloud Storage, lalu upload file
.jar
ke dalamnya:gsutil mb -b on -l REGION gs://BUCKET_NAME gsutil cp PATH/ojdbc8.jar gs://BUCKET_NAME
Ganti kode berikut:
- REGION: region tempat Anda ingin membuat Bucket Cloud Storage
- BUCKET_NAME: nama bucket Cloud Storage tempat Anda ingin menyimpan file
ojdbc8.jar
- PATH: jalur ke tempat Anda mendownload file
ojdbc8.jar
Setelah file tersimpan di komputer lokal Anda, sebaiknya upload file
.jar
ke bucket Cloud Storage agar Anda dapat mendownloadnya ke instance manapun.Buka sesi SSH dengan instance Striim, lalu download file
.jar
ke instance Striim dan tempatkan di direktori/opt/striim/lib
:sudo su - striim gsutil cp gs://BUCKET_NAME/ojdbc8.jar /opt/striim/lib
Verifikasi bahwa file
ojdbc8.jar
memiliki izin file yang benar:sudo ls -l /opt/striim/lib/ojdbc8.jar
Output akan muncul seperti berikut:
-rwxrwx--- striim striim
(Opsional) Jika file
.jar
tidak memiliki izin sebelumnya, tetapkan izin yang benar:sudo chmod 770 /opt/striim/lib/ojdbc8.jar sudo chown striim /opt/striim/lib/ojdbc8.jar sudo chgrp striim /opt/striim/lib/ojdbc8.jar
Hentikan dan mulai ulang Striim.
Setelah melakukan perubahan konfigurasi apa pun (seperti perubahan izin sebelumnya), Anda harus memulai ulang Striim.
Jika Anda menggunakan distribusi Linux CentOS 7, hentikan Striim:
sudo systemctl stop striim-node sudo systemctl stop striim-dbms
Jika Anda menggunakan distribusi Linux CentOS 7, jalankan Striim:
sudo systemctl start striim-dbms sudo systemctl start striim-node
Jika Anda ingin mempelajari lebih lanjut cara menghentikan dan memulai ulang Striim untuk sistem operasi lain, lihat Memulai dan menghentikan Striim
Menginstal klien psql pada instance Striim.
Anda akan menggunakan klien ini untuk terhubung ke instance Cloud SQL dan membuat skema dalam tutorial ini nanti.
Menyiapkan skema Cloud SQL untuk PostgreSQL
Saat Anda menyalin atau terus mereplikasi data tabel dari satu database ke database lainnya, Striim biasanya mengharuskan database target berisi tabel yang sesuai dengan skema yang benar. Google Cloud tidak memiliki utilitas untuk menyiapkan skema, tetapi Anda dapat menggunakan utilitas konversi skema dari Striim atau utilitas open source seperti ora2pg.
Mempertahankan kunci asing selama pemuatan awal
Selama fase pemuatan awal, perhatikan penanganan kunci asing. Kunci asing menetapkan hubungan antara tabel-tabel dalam database relasional. Pembuatan atau penyisipan kunci asing yang tidak berurutan ke dalam database target dapat merusak hubungan antara kedua tabel tersebut. Jika integritas antara dua database disusupi, error dapat terjadi. Oleh karena itu, penting untuk membuat output seluruh deklarasi kunci asing ke dalam file terpisah selama ekspor skema nanti pada bagian ini.
Selama replikasi berkelanjutan di pipeline CDC, peristiwa database sumber diterapkan ke database target sesuai urutan kemunculannya. Jika Anda mempertahankan kunci asing dengan benar pada sumber, operasi kunci asing akan direplikasi dari sumber ke database target dengan urutan yang sama.
Sebaliknya, pipeline pemuatan awal secara default akan memuat tabel Anda sesuai urutan abjad. Jika Anda tidak menonaktifkan kunci asing sebelum pemuatan awal, error pelanggaran terhadap kunci asing akan terjadi. Untuk mereplikasi data selama pemuatan awal dari tabel database sumber ke tabel target di Cloud SQL untuk PostgreSQL, Anda harus menonaktifkan batasan kunci asing pada tabel. Jika tidak, batasan dapat dilanggar selama proses replikasi.
Per Juni 2021, Cloud SQL untuk PostgreSQL tidak mendukung opsi konfigurasi untuk menonaktifkan batasan kunci asing.
Untuk menangani batasan kunci asing:
- Output semua deklarasi kunci asing ke dalam file terpisah selama ekspor skema.
- Buat skema tabel di database Cloud SQL untuk PostgreSQL tanpa batasan kunci asing.
- Selesaikan replikasi data awal.
- Terapkan batasan kunci asing pada tabel.
- Buat pipeline replikasi berkelanjutan.
Tutorial ini menawarkan dua opsi untuk konversi skema, yang dijelaskan di bagian berikut:
- Utilitas konversi skema Striim (direkomendasikan)
- Pengonversi skema database Oracle ke PostgreSQL (Ora2Pg)
Mengonversi skema menggunakan utilitas konversi skema Striim
Gunakan utilitas konversi skema Striim untuk menyiapkan Cloud SQL untuk PostgreSQL guna mengintegrasikan data dengan skema target dan membuat tabel yang mencerminkan database Oracle sumber.
Alat konversi skema Striim mengonversi objek sumber berikut menjadi objek target yang setara:
- Tables
- Kunci utama
- Jenis data
- Batasan unik
NOT NULL
Batasan- Kunci asing
Dengan menggunakan utilitas konversi skema Striim, Anda dapat menganalisis database sumber dan membuat skrip DDL untuk membuat skema yang setara dalam database target.
Sebaiknya buat skema secara manual di database target dengan menggunakan skrip DDL yang dihasilkan. Cara termudah adalah memilih subset tabel Anda, mengekspor skema, lalu mengimpor skema ke database Cloud SQL untuk PostgreSQL target Anda.
Contoh berikut menunjukkan cara menyiapkan database Cloud SQL untuk PostgreSQL target Anda untuk pemuatan awal dengan mengimpor skema menggunakan utilitas konversi skema Striim:
Buka koneksi SSH ke instance Striim Anda.
Buka direktori
/opt/striim
:cd /opt/striim
Cantumkan semua argumen:
bin/schemaConversionUtility.sh --help
Jalankan utilitas konversi skema dan sertakan flag yang sesuai dengan kasus penggunaan Anda:
bin/schemaConversionUtility.sh \ -s=oracle \ -d=SOURCE_DATABASE_CONNECTION_URL \ -u=SOURCE_DATABASE_USERNAME \ -p=SOURCE_DATABASE_PASSWORD \ -b=SOURCE_TABLES_TO_CONVERT \ -t=postgres \ -f=false
Ganti kode berikut:
- SOURCE_DATABASE_CONNECTION_URL: URL koneksi untuk database
Oracle—misalnya,
"jdbc:oracle:thin:@12.123.123.12:1521/APPSPDB.WORLD"
atau"jdbc:oracle:thin:@12.123.123.12:1521:XE"
- SOURCE_DATABASE_USERNAME: Nama pengguna Oracle yang digunakan untuk terhubung ke database Oracle
- SOURCE_DATABASE_PASSWORD: Sandi Oracle yang akan digunakan untuk terhubung ke database Oracle
- SOURCE_TABLES_TO_CONVERT: nama tabel dari database sumber yang digunakan untuk mengonversi skema
Pastikan Anda menggunakan argumen
-f=false
. Argumen ini mengekspor deklarasi kunci asing ke dalam file terpisah.Folder output mungkin berisi beberapa atau semua file berikut. Untuk mengetahui detail selengkapnya tentang file ini, lihat dokumentasi utilitas konversi skema Striim.
Nama file output Deskripsi converted_tables.sql
Berisi semua tabel yang dikonversi tanpa memerlukan paksaan converted_tables_with_striim_intelligence.sql
Berisi semua tabel yang terkonversi yang telah dikonversi dengan beberapa paksaan conversion_failed_tables.sql
Berisi tabel tempat konversi dilakukan, tetapi pemetaan tidak diperoleh converted_foreignkey.sql
Berisi semua deklarasi batasan kunci asing conversion_failed_foreignkey.sql
Berisi semua konversi kunci asing yang gagal conversion_report.txt
Berisi laporan panjang tentang konversi skema Dalam tutorial ini, Anda akan menggunakan file
converted_tables.sql
untuk membuat tabel yang setara di database Cloud SQL untuk PostgreSQL tanpa batasan kunci asing. Setelah replikasi awal, Anda akan menggunakan fileconverted_foreignkey.sql
untuk menerapkan batasan kunci asing.- SOURCE_DATABASE_CONNECTION_URL: URL koneksi untuk database
Oracle—misalnya,
Mengonversi skema menggunakan Ora2Pg
Opsi lain untuk mengonversi skema tabel Oracle ke skema PostgreSQL yang setara adalah utilitas Ora2Pg. Anda dapat menginstal utilitas ini pada VM Google Cloud terpisah.
Utilitas Ora2Pg mengonversi skema Oracle dan mengekspor pernyataan DDL
yang diperlukan untuk membuat tabel yang setara di database PostgreSQL. Pernyataan
DDL ini diekspor dalam file output yang bernama output.sql
.
Selama ekspor skema, Anda mengekspor dan menyimpan semua deklarasi kunci asing ke dalam file terpisah menggunakan flag berikut di file konfigurasi Ora2Pg:
FILE_PER_FKEYS 1
Secara default, kunci asing diekspor ke dalam file output utama (output.sql
).
Saat Anda mengaktifkan flag FILE_PER_FKEYS
(1
), kunci asing diekspor ke dalam
file terpisah bernama FKEYS_output.sql
.
Dalam tutorial ini, Anda akan menggunakan file output.sql
untuk membuat tabel yang setara di
database Cloud SQL untuk PostgreSQL tanpa batasan kunci asing.
Setelah replikasi awal, gunakan file FKEY_output.sql
untuk menerapkan
batasan kunci asing.
Menyiapkan instance Cloud SQL untuk PostgreSQL
Agar Striim dapat menulis data ke instance Cloud SQL untuk PostgreSQL, Anda harus membuat instance Cloud SQL. Anda juga perlu membuat tabel database dan skema yang menjadi tujuan penulisan Striim:
Di Cloud Shell, membuat instance Cloud SQL untuk PostgreSQL. Sebaiknya konfigurasikan Cloud SQL untuk menggunakan alamat IP pribadi. Menggunakan
--network
parameter untuk mengonfigurasi alamat ini:$INSTANCE_NAME=INSTANCE_NAME gcloud beta sql instances create INSTANCE_NAME \ --database-version=POSTGRES_12 \ --network=NETWORK \ --cpu=NUMBER_CPUS \ --memory=MEMORY_SIZE \ --region=REGION
Ganti kode berikut:
- INSTANCE_NAME: nama instance
- NETWORK: nama jaringan VPC yang Anda gunakan untuk instance ini
- NUMBER_CPUS: jumlah vCPU dalam instance
- MEMORY_SIZE: jumlah memori untuk instance. Misalnya, 3072 MiB atau 9 GiB. GiB diasumsikan jika Anda tidak menentukan unit.
- REGION: region tempat Anda membuat bucket Cloud Storage
Membuat nama pengguna dan sandi pada instance Cloud SQL:
CLOUD_SQL_USERNAME=CLOUD_SQL_USERNAME gcloud sql users create $CLOUD_SQL_USERNAME \ --instance=$INSTANCE_NAME \ --password=CLOUD_SQL_PASSWORD
Ganti kode berikut:
- CLOUD_SQL_USERNAME: nama pengguna untuk instance Cloud SQL Anda
- CLOUD_SQL_PASSWORD: sandi untuk nama pengguna Cloud SQL
Pengguna ini diberi kepemilikan atas tabel PostgreSQL. Striim juga menggunakan kredensial pengguna ini untuk terhubung ke database Cloud SQL untuk PostgreSQL.
File skema yang diekspor selama langkah konversi skema mungkin memiliki pernyataan DDL yang memberikan kepemilikan kepada pengguna, seperti dalam contoh berikut:
CREATE SCHEMA <SCHEMA_NAME>; ALTER SCHEMA <SCHEMA_NAME> OWNER TO <USER>;
Anda mungkin perlu mengganti
SCHEMA_NAME
denganCLOUD_SQL_SCHEMA
danUSER
denganCLOUD_SQL_USERNAME
yang dibuat sebelumnya.Membuat database PostgreSQL
CLOUD_SQL_DATABASE_NAME=CLOUD_SQL_DATABASE_NAME gcloud sql databases create $CLOUD_SQL_DATABASE_NAME \ --instance=$INSTANCE_NAME
Ganti kode berikut:
- CLOUD_SQL_DATABASE_NAME: Nama database PostgreSQL
Konfigurasikan database Cloud SQL untuk PostgreSQL untuk mengizinkan akses dari instance Striim. Opsi konektivitas bergantung pada apakah Anda mengonfigurasi instance Cloud SQL agar menggunakan alamat IP publik atau pribadi.
Jika Anda mengonfigurasi alamat IP publik, tambahkan alamat IP instance Striim sebagai alamat yang diotorisasi pada instance Cloud SQL. Screenshot berikut menunjukkan cara melakukannya dari konsol Google Cloud:
Jika Anda mengonfigurasi alamat IP pribadi, opsi konektivitas yang tersedia bergantung pada apakah instance Cloud SQL dan Striim berada di jaringan VPC yang sama.
Jika instance Striim berada di jaringan VPC yang sama dengan instance Cloud SQL Anda, instance Striim dapat terhubung dengan instance Cloud SQL.
Screenshot berikut menunjukkan bahwa instance Cloud SQL dikaitkan dengan jaringan VPC default. Jika instance Striim juga dibuat dalam jaringan VPC default, instance tersebut dapat terhubung dengan instance Cloud SQL secara pribadi.
Jika instance Striim berada di jaringan VPC yang berbeda dengan instance Cloud SQL Anda, konfigurasikan akses layanan pribadi pada jaringan VPC instance Striim.
Membuat skema tabel tanpa batasan kunci asing di database Cloud SQL untuk PostgreSQL.
Untuk mengekspor
output.sql
selama langkah konversi skema, gunakan fileoutput.sql
untuk membuat skema.Untuk mengekspor
converted_tables.sql
selama langkah konversi skema, gunakan fileconverted_tables.sql
untuk membuat skema.Anda dapat menjalankan kedua skrip menggunakan klien PostgreSQL mana pun yang memiliki konektivitas ke instance Cloud SQL untuk PostgreSQL. Namun, sebaiknya gunakan klien PostgreSQL yang Anda instal sebelumnya pada instance Striim.
Membuat skema:
psql -h HOSTNAME -p CLOUD_SQL_PORT -d CLOUD_SQL_DATABASE_NAME -U CLOUD_SQL_USERNAME -f PATH_TO_MAIN_SQL_FILE
Ganti kode berikut:
- HOSTNAME: Alamat IP instance Cloud SQL
- CLOUD_SQL_PORT: port instance Cloud SQL yang akan dihubungkan
—secara default port ini adalah
5432
- PATH_TO_MAIN_SQL_FILE: jalur ke skrip utama pada instance Striim
Contoh:
psql -h 12.123.123.123 -d testdb -U hr -p 5432 -f output.sql
Pastikan bahwa tabel telah dibuat:
Menghubungkan ke database Cloud SQL untuk PostgreSQL:
psql -h HOSTNAME -p 5432 -d CLOUD_SQL_DATABASE_NAME -U CLOUD_SQL_USERNAME
Menampilkan daftar tabel dalam database ini
\dt
Outputnya adalah daftar tabel yang dibuat oleh skrip konversi skema tabel pada langkah sebelumnya.
Membuat tabel checkpoint di database Cloud SQL untuk PostgreSQL:
Menghubungkan ke database Cloud SQL untuk PostgreSQL:
psql -h HOSTNAME -p 5432 -d CLOUD_SQL_DATABASE_NAME -U CLOUD_SQL_USERNAME
Buat tabel:
CREATE TABLE chkpoint ( id character varying(100) primary key, sourceposition bytea, pendingddl numeric(1), ddl text);
Striim memerlukan tabel ini untuk mempertahankan checkpoint selama proses replikasi berkelanjutan.
Memuat database Oracle ke database Cloud SQL untuk PostgreSQL
Bagian ini menjelaskan proses replikasi awal database Oracle yang berjalan sekali ke database Cloud SQL untuk PostgreSQL.
Membuat koneksi ke Oracle dari Striim
Ikuti panduan dalam artikel Menjalankan Striim di Google Cloud. Untuk pemuatan awal, gunakan adaptor Striim Database Reader untuk terhubung ke Oracle dari Striim. Anda juga dapat menggunakan wizard CDC Striim.
Pada adaptor Striim Database Reader, buka Sources, lalu telusuri dan pilih Database dari daftar.
Tetapkan properti berikut di jendela Database:
- Nama: mengidentifikasi komponen pipeline migrasi ini.
- Adaptor:
DatabaseReader
Connection URL: masukkan string unik untuk terhubung ke database Oracle:
jdbc:oracle:thin:@HOSTNAME:ORACLE_PORT:SID
ATAU
jdbc:oracle:thin:@HOSTNAME:ORACLE_PORT/PDB_OR_CDB_SERVICE_NAME
Ganti kode berikut:
- ORACLE_PORT: Port database Oracle (
1521
secara default) - SID: SID database Oracle
- PDB_OR_CDB_SERVICE_NAME: Nama layanan PDB atau CDB Oracle: Jika
tabel Anda berada di PDB, gunakan
PDB_SERVICE_NAME
; jika mereka berada di CDB, gunakanCDB_SERVICE_NAME
.
Anda dapat menemukan port dan nama layanan dalam file
tnsnames.ora
yang terletak di$ORACLE_HOME/network/admin/tnsnames.ora
pada instance Oracle.- ORACLE_PORT: Port database Oracle (
Username dan password: Gunakan pengguna Oracle (
c##striim
user) yang Anda buat pada langkah prasyarat. Striim menggunakan nama pengguna dan sandi ini untuk terhubung ke database Oracle Anda dan membaca setiap tabel.Tables: Untuk Oracle, Database Reader juga memerlukan daftar nama tabel untuk direplikasi. Properti ini ditentukan dalam kolom Tables di bagian Show optional properties. Format untuk properti ini adalah sebagai berikut:
ORACLE_SCHEMA.ORACLE_TABLE_NAME
Ganti kode berikut:
- ORACLE_SCHEMA: Nama skema Oracle
- ORACLE_TABLE_NAME: Nama tabel Oracle dalam skema tersebut
Anda juga dapat menentukan beberapa tabel dan tampilan terwujud sebagai daftar yang dipisahkan oleh titik koma, atau dengan karakter pengganti berikut:
%
: rangkaian karakter apa pun_
: karakter tunggal apa punMisalnya,
HR.%
membaca semua tabel dalam skema HR. Setidaknya, satu tabel harus cocok dengan karakter pengganti. Jika tidak, Database Reader akan gagal dengan error sebagai berikut:Could not find tables specified in the database
Quiesce On IL Completion: Alihkan kolom ini menjadi hijau dengan menggesernya ke kanan untuk menjeda pipeline saat pemuatan awal selesai.
Output To: Beri nama output dari adaptor ini. Gunakan string yang peka huruf besar/kecil tanpa spasi atau karakter khusus.
Klik Simpan. Properti adaptor akan menampilkan:
Menguji koneksi
Setelah Anda terhubung ke Oracle dari Striim, uji koneksinya.
Klik menu drop-down Created untuk menguji konektivitas Striim ke database Oracle.
Klik Deploy App.
Pilih output adaptor ini, lalu klik Preview untuk menampilkan data secara real time saat Striim membacanya dari database sumber.
Klik menu drop-down Deployed, lalu klik Start App.
(Opsional) Klik menu dropdown Deployed lalu klik Undeploy App untuk memperbaiki error yang terjadi.
(Opsional) Klik Resume App setelah semua error diperbaiki untuk memulai ulang aplikasi.
Klik grup deployment default.
Pastikan opsi Validate table mappings diaktifkan, lalu klik Deploy.
Panel data pratinjau dan status pipeline berubah menjadi Quiesced.
Pada tahap tutorial ini, Anda telah berhasil memverifikasi bahwa Striim dapat membuat koneksi ke database Oracle Anda dan membaca data di dalamnya.
Menambahkan database Cloud SQL untuk PostgreSQL sebagai target
Untuk migrasi ini, Anda akan menulis data ke instance Cloud SQL untuk PostgreSQL. Striim menyediakan penulis database generik, yang bernama Database Writer, yang dapat Anda gunakan untuk migrasi.
- Dalam Striim Flow Designer, buka Targets. Telusur, lalu pilih Cloud SQL Postgres dari daftar.
- Tarik Database Writer ke pipeline.
Atur properti berikut:
Adapter:
DatabaseWriter
Connection URL: Masukkan string unik untuk membuat koneksi ke instance Cloud SQL:
jdbc:postgresql://CLOUD_SQL_IP_ADDRESS:CLOUD_SQL_PORT/CLOUD_SQL_DATABASE_NAME?stringtype=unspecified
Ganti kode berikut:
- CLOUD_SQL_IP_ADDRESS: Alamat IP instance Cloud SQL
Contoh:
jdbc:postgresql://12.123.12.12:5432/postgres?stringtype=unspecified
Username dan password: Masukkan nama pengguna dan sandi Cloud SQL yang Anda buat sebelumnya.
Tables: Membuat pemetaan dari nama tabel database Oracle ke nama tabel Cloud SQL. Menentukan tabel database Oracle mana yang akan ditulis dengan tabel Cloud SQL. Pemetaan ini menggunakan format berikut:
ORACLE_SCHEMA.ORACLE_TABLE_NAME,CLOUD_SQL_SCHEMA.CLOUD_SQL_TABLE_NAME
Ganti kode berikut:
- CLOUD_SQL_SCHEMA: Nama skema PostgreSQL
- CLOUD_SQL_TABLE_NAME: Nama tabel PostgreSQL
Untuk memetakan beberapa tabel, Anda dapat menggunakan simbol karakter pengganti (%) di kolom Tables—misalnya:
HR.%,hr.%
Kolom yang wajib diisi untuk Database Writer ditandai dalam screenshot berikut:
Men-deploy pipeline migrasi
Setelah pipeline migrasi siap, deploy-lah melalui Striim Flow Designer dan mulai aplikasi. Anda juga dapat melihat pratinjau data yang direplikasi secara real time. Gunakan Monitor reports untuk melacak progres replikasi Untuk melacak progres, pilih ikon Application Progress.
Di Striim Flow Designer, deploy pipeline migrasi. Klik menu dropdown Created, lalu klik Deploy App. Setelah pemuatan awal selesai, status pipeline berubah menjadi
Quiesced
.Klik Undeploy the app untuk me-roll back deployment.
Memverifikasi bahwa pemuatan data berhasil dengan memeriksa jumlah baris:
SELECT COUNT(*) FROM <TARGET CLOUD SQL TABLE>;
Anda akan melihat output bukan nol. Jika tidak, pemuatan data akan gagal.
Pemuatan data awal dari database Oracle ke Cloud SQL untuk PostgreSQL bersifat atomik. Antara seluruh pemuatan data berhasil atau seluruh pemuatan data gagal. Jika pemuatan awal gagal, Anda harus memuat data kembali.
Mengaktifkan batasan kunci asing pada tabel Cloud SQL untuk PostgreSQL
Setelah pemuatan awal selesai, aktifkan batasan kunci asing pada
tabel target. Gunakan file dengan deklarasi kunci asing (FKEY_output.sql
atau
converted_foreignkey.sql
) yang Anda buat selama
konversi skema.
Di Striim, buka sesi SSH.
Buat batasan kunci asing pada tabel:
psql -h HOSTNAME -d CLOUD_SQL_DATABASE_NAME -U CLOUD_SQL_USERNAME -p CLOUD_SQL_PORT -f PATH_TO_FOREIGN_KEY_FILE
Ganti kode berikut:
- CLOUD_SQL_USERNAME: Nama pengguna Cloud SQL untuk PostgreSQL
PATH_TO_FOREIGN_KEY_FILE: jalur ke skrip dengan batasan kunci asing pada instance Striim
Contoh:
psql -h 12.123.123.123 -d testdb -U hr -p 5432 -f output.sql
Mereplikasi database Oracle secara terus-menerus ke Cloud SQL untuk PostgreSQL
Setelah menyelesaikan pemuatan data awal, buat pipeline terpisah untuk mereplikasi perubahan pada database Oracle. Selama pipeline masih berjalan, this pipeline ini juga akan menjaga database sumber tetap sinkron dengan database target.
Membuat koneksi ke Oracle dari Striim
Untuk replikasi berkelanjutan, Anda menggunakan adaptor Striim Oracle Reader untuk terhubung dari Striim ke database Oracle. Adaptor Striim ini dapat membaca data CDC dari Oracle.
- Di adaptor Striim Oracle Reader, buka Sources.
Telusuri Oracle, lalu pilih Oracle CDC dari daftar yang terisi.
Atur properti berikut:
Connection URL:
HOSTNAME:ORACLE_PORT/SID
ATAU
HOSTNAME:ORACLE_PORT/CDB_SERVICE_NAME
Ganti kode berikut:
- CDB_SERVICE_NAME: Nama layanan CDB Oracle
URL koneksi adalah sebuah string unik yang digunakan untuk terhubung ke database Oracle. Tidak seperti adaptor Database Reader yang digunakan untuk pemuatan awal, Anda akan menggunakan nama layanan CDB, terlepas dari apakah tabel database Anda berada di PDB atau CDB.
Misalnya:
12.123.123.12:1521/ORCLCDB.WORLD
.Username/password: Gunakan nama pengguna Oracle (
c##striim
user) yang Anda buat pada langkah-langkah prasyarat.Pengguna Oracle ini harus memiliki hak istimewa untuk membaca tabel Anda.
Tables: Anda juga memerlukan daftar nama tabel untuk direplikasi. Nama ini ditentukan dalam format berikut, berdasarkan apakah tabel berada dalam CDB atau PDB.
Untuk tabel CDB:
ORACLE_SCHEMA.ORACLE_TABLE_NAME
Untuk tabel PDB:
PDB_NAME.ORACLE_SCHEMA.ORACLE_TABLE_NAME
Ganti kode berikut:
- PDB_NAME: Nama PDB Oracle
Perintah ini mereplikasi tabel CDB atau PDB Anda. Anda dapat menemukan
PDB_NAME
Anda di filetnsnames.ora
yang terletak di$ORACLE_HOME/network/admin/tnsnames.ora
pada instance Oracle.Ingat,
PDB_NAME
danPDB_SERVICE_NAME
berbeda. Anda telah menggunakanPDB_SERVICE_NAME
sebelumnya di bagian ini. Lihat filetnsnames.ora
untuk mendapatkan nama PDB:sudo su - oracle // Login as oracle user cat ORACLE_HOME/network/admin/tnsnames.ora
Berikut adalah contoh
PDB_NAME
(APPSPDB
) dalam filetnsnames.ora
:APPSPDB = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP) (HOST = orainst) (PORT = 1521)) ) (CONNECT_DATA = (SERVICE NAME = APPSPDB.WORLD) ) )
Untuk menentukan beberapa tabel dan tampilan terwujud sebagai daftar, pisahkan nama tabel atau nama tampilan dengan titik koma atau karakter pengganti. Setidaknya, satu tabel harus sesuai dengan karakter pengganti; jika tidak, Oracle Reader akan gagal dengan error
Could not find tables specified in the database
.Start SCN: Untuk pipeline berkelanjutan, Anda harus menyediakan SCN database Oracle. Striim membutuhkannya untuk mulai mereplikasi semua transaksi. Masukkan nilai SCN yang Anda buat sebelumnya.
Support PDB and CDB: Anda dapat menggunakan CDB atau PDB; luaskan Show optional properties dan alihkan tombol ke kanan.
Quiesce marker table: Gunakan nama tabel yang Anda buat sebelumnya.
Screenshot berikut memberikan ringkasan kolom yang wajib diisi untuk adaptor Oracle Reader:
Test connection: Klik Test connection. URL koneksi, nama pengguna, dan sandi dibutuhkan untuk menguji konektivitas database. Jika Striim berhasil membuat koneksi, tanda centang hijau akan muncul.
Menguji kemampuan Striim dalam membaca tabel database Oracle:
- Di adaptor Oracle Reader, pilih Deploy app.
- Pilih grup deployment default.
- Klik Deploy.
Klik ikon gelombang (Output) untuk adaptor ini. Ikon mata (Preview) yang muncul digunakan untuk melihat pratinjau data secara real time saat Striim membacanya dari sumber.
Klik Start App pada dropdown Deployed.
Jika terjadi error, pilih Undeploy App dari menu dropdown yang sama dan perbaiki error tersebut. Setelah memperbaiki error, klik Resume App untuk memulai ulang aplikasi.
Saat pipeline dimulai, status pipeline akan diperbarui menjadi Running. Semua perubahan baru pada tabel sumber akan ditampilkan di jendela pratinjau. Karena adaptor Oracle Reader menggunakan CDC, satu-satunya perubahan tabel yang muncul di panel data pratinjau adalah perubahan yang terjadi setelah aplikasi diluncurkan.
Memverifikasi kemampuan membaca data CDC dari Oracle
Untuk menguji apakah adaptor dapat membaca perubahan baru, ikuti petunjuk berikut:
- Gunakan pernyataan SQL untuk menyisipkan transaksi baru dalam tabel sumber Oracle.
- Pastikan transaksi baru muncul di tab Preview data pada adaptor Oracle Reader.
- Hentikan aplikasi, lalu klik Undeploy. Sekarang Anda siap untuk langkah selanjutnya.
Hingga titik ini, Anda belum menambahkan adaptor target ke pipeline. Tidak ada data yang disalin kecuali jika Anda menambahkan adaptor target. Di bagian berikutnya, Anda akan menambahkan adaptor target.
Menambahkan database Cloud SQL untuk PostgreSQL sebagai target
Untuk menulis data ke database Cloud SQL untuk PostgreSQL, Anda perlu menambahkan adaptor Database Writer ke pipeline Anda. Untuk pipeline replikasi berkelanjutan, gunakan adaptor yang sama dengan yang Anda gunakan di pipeline pemuatan awal.
- Di Striim Flow Designer, buka Targets, lalu telusuri dan pilih Cloud SQL Postgres dari daftar.
- Tarik Database Writer ke pipeline.
Atur properti berikut:
Adapter:
DatabaseWriter
.Connection URL: Masukkan URL koneksi yang Anda gunakan untuk membuat koneksi ke instance Cloud SQL:
jdbc:postgresql://CLOUD_SQL_IP_ADDRESS:CLOUD_SQL_PORT/CLOUD_SQL_DATABASE_NAME?stringtype=unspecified
Contoh:
jdbc:postgresql://12.123.12.12:5432/postgres?stringtype=unspecified
Username dan password: Masukkan nama pengguna dan sandi Cloud SQL yang Anda buat sebelumnya.
Tables: Buat pemetaan dari nama tabel database Oracle ke nama tabel Cloud SQL. Menentukan tabel database Oracle mana yang akan ditulis ke tabel Cloud SQL. Pemetaan ini menggunakan format berikut:
ORACLE_SCHEMA.ORACLE_TABLE_NAME,CLOUD_SQL_SCHEMA.CLOUD_SQL_TABLE_NAME
Untuk memetakan beberapa tabel, Anda dapat menggunakan simbol karakter pengganti (%) di kolom Tables. Contoh:
HR.%,hr.%
Selain properti tersebut, Anda juga harus menetapkan properti berikut untuk pipeline replikasi berkelanjutan:
Klik Show optional properties.
Pilih nilai berikut untuk kolom Ignorable Exception Code:
23505,NO_OP_UPDATE,NO_OP_DELETE
Karena Anda memulai pipeline CDC dari titik historis, mungkin akan ada duplikasi. Striim menghapus duplikat pada target dengan menggunakan properti kode pengecualian yang dapat diabaikan sebelumnya. Detail tentang kode pengecualian dapat ditemukan pada tabel berikut:
Kode pengecualian Detail 23505
Nilai kunci utama duplikat melanggar batasan unik NO_OP_UPDATE
Tidak dapat memperbarui baris pada target (biasanya karena tidak ada kunci utama yang sesuai) NO_OP_DELETE
Tidak dapat menghapus baris pada target (biasanya karena tidak ada kunci utama yang sesuai) Masukkan
chkpoint
di kolom Check Point Table. Striim menggunakan tabel ini untuk menyimpan metadata yang terkait dengan checkpoint pada pipeline replikasi berkelanjutan.
Mengaktifkan pemulihan dan enkripsi
Sebelum men-deploy pipeline CDC, sebaiknya aktifkan pemulihan. Jika aplikasi Striim atau VM tidak aktif, mengaktifkan pemulihan akan membantu memastikan bahwa Striim dapat melanjutkan pemrosesan. Langkah ini juga membantu memastikan semantik pemrosesan tepat satu kali. Semantik ini melacak checkpoint baca item terakhir pada database sumber, dan checkpoint tulis item terakhir pada database target. Jika aplikasi atau VM gagal, Striim mengoordinasikan dua checkpoint tersebut untuk membantu memastikan tidak ada data yang hilang atau terduplikasi. Pemulihan tidak berlaku untuk aplikasi pemuatan awal.
Mengaktifkan pemulihan
- Di Striim Flow Designer, klik ikon Configuration, lalu pilih App Settings.
- Klik Recovery Interval.
- Ketik
5
dan pilih Second dari menu drop-down. - Klik enable encryption. Striim mengenkripsi semua aliran yang memindahkan data antara server Striim, atau dari agen penerusan, ke server Striim.
Mengaktifkan enkripsi
- Di Striim Flow Designer, klik ikon Configuration, pilih App Settings, lalu di bagian Encryption, centang kotak centang.
Lihat situs Striim untuk mempelajari lebih lanjut metode pemulihan Striim.
Mengaktifkan logging pengecualian
Sebelum men-deploy pipeline replikasi berkelanjutan, sebaiknya aktifkan penyimpanan pengecualian di Striim. Sebagai bagian dari aplikasi CDC, mungkin ada duplikat yang ditulis oleh aplikasi pemuatan awal. Aplikasi Striim mengabaikan error tersebut, menulisnya ke penyimpanan (untuk Anda tinjau dan proses) dan melanjutkan pemrosesan.
- Di Striim Flow Designer, pilih ikon Exceptions. Ikon menunjukkan tanda seru di antara dua panah melengkung.
- Klik Aktifkan.
Men-deploy pipeline
Setelah pipeline siap, Anda dapat men-deploy-nya dan memulai aplikasi. Anda juga dapat meninjau data karena data direplikasi secara real time dan melihat laporan pemantauan. Jika pipeline berhasil memulai replikasi berkelanjutan, status pipeline berubah menjadi Running.
- Di adaptor Oracle Reader, pilih Deploy app.
- Pilih grup deployment default.
- Klik Deploy.
Anda dapat membiarkan pipeline tetap berjalan selama Anda ingin tabel Oracle tetap sinkron dengan tabel Cloud SQL.
Anda telah menyelesaikan tutorial. Jika Anda tertarik untuk mempelajari sumber Oracle CDC lainnya, bagian berikut akan membahasnya.
Sumber CDC Oracle alternatif
Selain LogMiner, adaptor Striim dapat membaca database Oracle melalui XStream atau file jejak Oracle Golden Gate.
Untuk membaca dari XStream, gunakan adaptor Oracle Reader Striim. XStream mungkin memiliki performa yang lebih baik, tetapi memerlukan lisensi Golden Gate dan hanya didukung untuk Oracle Database 11.2.0.4.
Untuk membaca file jejak Golden Gate, gunakan adaptor GG Trail Reader Striim.
Tabel berikut menjelaskan perbedaan antara LogMiner dan XStream:
Database Oracle Fitur CDC |
Didukung oleh LogMiner? |
Didukung oleh XStream Out? |
---|---|---|
Membaca bahasa definisi data (DDL), ROLLBACK , dan
transaksi yang tidak di-commit |
Ya | Tidak |
Menggunakan fungsi DATA() dan BEFORE() |
Ya | Tidak |
Menggunakan QUIESCE (lihat Perintah konsol)
|
Ya | Tidak |
Menerima peristiwa CDC | Menerima peristiwa dalam batch seperti yang ditentukan oleh properti
FetchSize Oracle Reader |
Menerima peristiwa data perubahan yang berkelanjutan |
Membaca dari tabel yang berisi jenis yang tidak didukung | Tidak akan membaca tabel | Membaca kolom jenis yang didukung |
Pembersihan
Agar tidak perlu membayar biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam tutorial ini, hapus project yang berisi resource tersebut, atau simpan project dan hapus setiap resource.
- Di konsol Google Cloud, buka halaman Manage resource.
- Pada daftar project, pilih project yang ingin Anda hapus, lalu klik Delete.
- Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.
Langkah selanjutnya
- Lihat dokumentasi Striim: Panduan Migrasi PostgreSQL Oracle ke Google Cloud
- Tonton video tentang memigrasikan Database Oracle ke Cloud SQL PostgreSQL.
- Untuk arsitektur referensi, diagram, dan praktik terbaik lainnya, jelajahi Cloud Architecture Center.
Oracle, Java, dan MySQL adalah merek dagang terdaftar dari Oracle dan/atau afiliasinya. Nama lain mungkin merupakan merEk dagang dari pemiliknya masing-masing.