Memigrasikan database Oracle ke Cloud SQL untuk PostgreSQL menggunakan Striim

Last reviewed 2021-06-28 UTC

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 deployment terhubung ke database Oracle
dan menulis data ke instance Cloud SQL untuk PostgreSQL di Google Cloud.

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. Pengguna baru Google Cloud mungkin memenuhi syarat untuk mendapatkan uji coba gratis.

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

  1. 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.
  2. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  3. Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.

  4. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  5. 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:

  1. Mengaktifkan archivelog Striim.
  2. Mengaktifkan data log tambahan Striim.
  3. Mengaktifkan logging kunci utama Striim.
  4. 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.

  5. 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.

  6. 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.

  7. 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:

  1. Login ke akun Oracle Anda, lalu download file ojdbc8.jar di komputer lokal Anda.
    • Jika Anda belum memiliki akun Oracle, buat akun.
  2. 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.
  3. 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.

  4. 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
    
  5. 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

  6. (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
    
  7. 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

  8. 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:

  1. Output semua deklarasi kunci asing ke dalam file terpisah selama ekspor skema.
  2. Buat skema tabel di database Cloud SQL untuk PostgreSQL tanpa batasan kunci asing.
  3. Selesaikan replikasi data awal.
  4. Terapkan batasan kunci asing pada tabel.
  5. Buat pipeline replikasi berkelanjutan.

Tutorial ini menawarkan dua opsi untuk konversi skema, yang dijelaskan di bagian berikut:

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:

  1. Buka koneksi SSH ke instance Striim Anda.

  2. Buka direktori /opt/striim:

    cd /opt/striim
    
  3. Cantumkan semua argumen:

    bin/schemaConversionUtility.sh --help
    
  4. 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 file converted_foreignkey.sql untuk menerapkan batasan kunci asing.

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:

  1. 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
  2. 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 dengan CLOUD_SQL_SCHEMA dan USER dengan CLOUD_SQL_USERNAME yang dibuat sebelumnya.

  3. 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
  4. 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.

    1. 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:

      Konfigurasikan database Cloud SQL untuk PostgreSQL untuk mengizinkan akses
dari instance Striim.

    2. Jika Anda mengonfigurasi alamat IP pribadi, opsi konektivitas yang tersedia bergantung pada apakah instance Cloud SQL dan Striim berada di jaringan VPC yang sama.

      1. 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.

        instance Cloud SQL dikaitkan dengan jaringan VPC
default.

      2. Jika instance Striim berada di jaringan VPC yang berbeda dengan instance Cloud SQL Anda, konfigurasikan akses layanan pribadi pada jaringan VPC instance Striim.

  5. Membuat skema tabel tanpa batasan kunci asing di database Cloud SQL untuk PostgreSQL.

    1. Untuk mengekspor output.sql selama langkah konversi skema, gunakan file output.sql untuk membuat skema.

    2. Untuk mengekspor converted_tables.sql selama langkah konversi skema, gunakan file converted_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.

    3. Membuka sesi SSH dengan instance Striim Anda.

    4. 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

  6. Pastikan bahwa tabel telah dibuat:

    1. Menghubungkan ke database Cloud SQL untuk PostgreSQL:

      psql -h HOSTNAME -p 5432 -d CLOUD_SQL_DATABASE_NAME -U
      CLOUD_SQL_USERNAME
      
    2. Menampilkan daftar tabel dalam database ini

      \dt
      

      Outputnya adalah daftar tabel yang dibuat oleh skrip konversi skema tabel pada langkah sebelumnya.

  7. Membuat tabel checkpoint di database Cloud SQL untuk PostgreSQL:

    1. Menghubungkan ke database Cloud SQL untuk PostgreSQL:

      psql -h HOSTNAME -p 5432 -d CLOUD_SQL_DATABASE_NAME -U
      CLOUD_SQL_USERNAME
      
    2. 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.

  1. Pada adaptor Striim Database Reader, buka Sources, lalu telusuri dan pilih Database dari daftar.

  2. 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, gunakan CDB_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.

    • Username dan password: Gunakan pengguna Oracle (c##striimuser) 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 pun

      Misalnya, 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.

  3. Klik Simpan. Properti adaptor akan menampilkan:

    Properti Adaptor Striim Database Reader.

Menguji koneksi

Setelah Anda terhubung ke Oracle dari Striim, uji koneksinya.

  1. Klik menu drop-down Created untuk menguji konektivitas Striim ke database Oracle.

  2. Klik Deploy App.

  3. Pilih output adaptor ini, lalu klik Preview untuk menampilkan data secara real time saat Striim membacanya dari database sumber.

    tampilan real-time data sumber di antarmuka Striim.

  4. Klik menu drop-down Deployed, lalu klik Start App.

  5. (Opsional) Klik menu dropdown Deployed lalu klik Undeploy App untuk memperbaiki error yang terjadi.

  6. (Opsional) Klik Resume App setelah semua error diperbaiki untuk memulai ulang aplikasi.

  7. Klik grup deployment default.

  8. 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.

  1. Dalam Striim Flow Designer, buka Targets. Telusur, lalu pilih Cloud SQL Postgres dari daftar.
  2. Tarik Database Writer ke pipeline.
  3. 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: Kolom wajib diisi untuk Database Writer.

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.

Dengan mengklik ikon Application Progress, Anda dapat melihat progres replikasi database.

  1. Di Striim Flow Designer, deploy pipeline migrasi. Klik menu dropdown Created, lalu klik Deploy App. Setelah pemuatan awal selesai, status pipeline berubah menjadi Quiesced.

  2. Klik Undeploy the app untuk me-roll back deployment.

  3. 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.

  1. Di Striim, buka sesi SSH.

  2. 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.

  1. Di adaptor Striim Oracle Reader, buka Sources.
  2. Telusuri Oracle, lalu pilih Oracle CDC dari daftar yang terisi.

  3. Atur properti berikut:

    1. 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.

    2. Username/password: Gunakan nama pengguna Oracle (c##striimuser) yang Anda buat pada langkah-langkah prasyarat.

      Pengguna Oracle ini harus memiliki hak istimewa untuk membaca tabel Anda.

    3. 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 file tnsnames.ora yang terletak di $ORACLE_HOME/network/admin/tnsnames.ora pada instance Oracle.

      Ingat, PDB_NAME dan PDB_SERVICE_NAME berbeda. Anda telah menggunakan PDB_SERVICE_NAME sebelumnya di bagian ini. Lihat file tnsnames.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 file tnsnames.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.

    4. 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.

      1. Support PDB and CDB: Anda dapat menggunakan CDB atau PDB; luaskan Show optional properties dan alihkan tombol ke kanan.

      2. Quiesce marker table: Gunakan nama tabel yang Anda buat sebelumnya.

        Screenshot berikut memberikan ringkasan kolom yang wajib diisi untuk adaptor Oracle Reader:

        Kolom wajib diisi untuk adaptor Oracle Reader.

  4. 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.

  5. Menguji kemampuan Striim dalam membaca tabel database Oracle:

    1. Di adaptor Oracle Reader, pilih Deploy app.
    2. Pilih grup deployment default.
    3. Klik Deploy.
  6. 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.

  7. 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.

    Tab Data Preview menampilkan perubahan baru pada tabel sumber secara real time.

Memverifikasi kemampuan membaca data CDC dari Oracle

Untuk menguji apakah adaptor dapat membaca perubahan baru, ikuti petunjuk berikut:

  1. Gunakan pernyataan SQL untuk menyisipkan transaksi baru dalam tabel sumber Oracle.
  2. Pastikan transaksi baru muncul di tab Preview data pada adaptor Oracle Reader.
  3. 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.

  1. Di Striim Flow Designer, buka Targets, lalu telusuri dan pilih Cloud SQL Postgres dari daftar.
  2. Tarik Database Writer ke pipeline.
  3. 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:

  4. Klik Show optional properties.

  5. 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)
  6. 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

  1. Di Striim Flow Designer, klik ikon Configuration, lalu pilih App Settings.
  2. Klik Recovery Interval.
  3. Ketik 5 dan pilih Second dari menu drop-down.
  4. 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.

  1. Di Striim Flow Designer, pilih ikon Exceptions. Ikon menunjukkan tanda seru di antara dua panah melengkung.
  2. 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.

  1. Di adaptor Oracle Reader, pilih Deploy app.
  2. Pilih grup deployment default.
  3. 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.

  1. Di konsol Google Cloud, buka halaman Manage resource.

    Buka Manage resource

  2. Pada daftar project, pilih project yang ingin Anda hapus, lalu klik Delete.
  3. Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.

Langkah selanjutnya

Oracle, Java, dan MySQL adalah merek dagang terdaftar dari Oracle dan/atau afiliasinya. Nama lain mungkin merupakan merEk dagang dari pemiliknya masing-masing.