全部产品
Search
文档中心

ApsaraDB RDS:Gunakan ekstensi oracle_fdw untuk terhubung ke database Oracle

更新时间:Jun 25, 2025

Topik ini menjelaskan cara menggunakan ekstensi oracle_fdw untuk terhubung ke database Oracle. Anda juga dapat menggunakan ekstensi ini untuk menyinkronkan data antara tabel dalam database PostgreSQL dan tabel dalam database Oracle.

Prasyarat

  • Instansi ApsaraDB RDS for PostgreSQL Anda harus menjalankan PostgreSQL 12 dengan versi mesin minor 20200421 atau yang lebih baru.

    Catatan

    Anda dapat mengeksekusi pernyataan SHOW rds_supported_extensions; untuk memeriksa apakah versi mesin minor saat ini dari instansi RDS Anda mendukung ekstensi oracle_fdw. Jika versi mesin minor saat ini tidak mendukung ekstensi oracle_fdw, Anda harus terlebih dahulu memperbarui versi mesin minor.

  • Versi klien Oracle harus 11.2 atau yang lebih baru.

  • Versi server Oracle didasarkan pada versi klien Oracle. Untuk informasi lebih lanjut, lihat dokumentasi Oracle.

  • Anda harus menambahkan blok CIDR dari virtual private cloud (VPC) tempat instansi RDS Anda berada ke Daftar putih alamat IP dari database Oracle yang ingin Anda hubungkan. Contoh blok CIDR: 172.xx.xx.xx/16.

    Catatan

    Anda dapat melihat blok CIDR dari VPC tempat instansi RDS berada di halaman Database Connection pada konsol ApsaraDB RDS. The CIDR block of the VPC

Informasi latar belakang

Ekstensi oracle_fdw dikembangkan oleh PostgreSQL untuk mengelola tabel asing. Ekstensi ini memberikan akses mudah ke database Oracle dan memungkinkan Anda menyinkronkan data antara database PostgreSQL dan database Oracle.

Untuk informasi lebih lanjut, lihat oracle_fdw.

Catatan penggunaan

  • Jika Anda ingin mengeksekusi pernyataan UPDATE atau DELETE, Anda harus mengatur parameter key menjadi true untuk kolom kunci utama saat membuat tabel asing. Untuk informasi lebih lanjut, lihat bagian Buat Tabel Asing dari topik ini.

  • Tipe data kolom dalam tabel asing harus dapat diidentifikasi dan dikonversi untuk ekstensi oracle_fdw. Untuk informasi lebih lanjut tentang aturan konversi yang didukung oleh ekstensi oracle_fdw, lihat Tipe Data.

  • Ekstensi oracle_fdw dapat mendorong klausa WHERE dan ORDER BY ke database Oracle.

  • Ekstensi oracle_fdw dapat mendorong operasi JOIN ke database Oracle. Pushdown memiliki batasan berikut:

    • Kedua tabel untuk operasi JOIN harus didefinisikan dalam pemetaan database yang sama.

    • Operasi JOIN pada tiga tabel atau lebih tidak dapat didorong.

    • Operasi JOIN harus disertakan dalam pernyataan SELECT.

    • Operasi CROSS JOIN tanpa kondisi JOIN tidak dapat didorong.

    • Jika operasi JOIN didorong, klausa ORDER BY tidak akan didorong.

  • Setelah PostGIS diinstal, ekstensi oracle_fdw mendukung lebih banyak tipe data spasial berikut:

    • Titik

    • Garis

    • Polygon

    • MultiPoint

    • MultiLine

    • MultiPolygon

Buat dan hapus ekstensi oracle_fdw

Penting

Sebelum membuat ekstensi oracle_fdw, pastikan bahwa versi mesin utama dan versi mesin minor dari instansi RDS for PostgreSQL Anda memenuhi persyaratan yang dijelaskan dalam Prasyarat.

Buat Ekstensi

CREATE EXTENSION oracle_fdw;

Hapus Ekstensi

DROP EXTENSION oracle_fdw;

Gunakan ekstensi oracle_fdw

  1. Eksekusi salah satu pernyataan berikut untuk membuat pemetaan database Oracle:

    • CREATE SERVER <Nama Server>
      FOREIGN DATA WRAPPER oracle_fdw
      OPTIONS (dbserver '//<Titik akhir internal yang digunakan untuk terhubung ke database Oracle>:<Port internal yang digunakan untuk terhubung ke database Oracle>/<Nama database Oracle yang ingin Anda hubungkan>');
    • CREATE SERVER oradb
      FOREIGN DATA WRAPPER oracle_fdw
      OPTIONS (host '<Titik akhir internal yang digunakan untuk terhubung ke database Oracle>', port '<Port internal yang digunakan untuk terhubung ke database Oracle>', dbname '<Nama database Oracle yang ingin Anda hubungkan>');
  2. Eksekusi pernyataan berikut untuk membuat pemetaan pengguna:

    CREATE USER MAPPING
    FOR <Nama pengguna yang digunakan untuk masuk ke database PostgreSQL> SERVER <Nama pemetaan pengguna>
    OPTIONS (user '<Nama pengguna yang digunakan untuk masuk ke database Oracle>', password '<Kata sandi yang digunakan untuk masuk ke database Oracle>');
    Catatan

    Jika Anda tidak menyimpan kredensial pengguna Oracle di database PostgreSQL, atur parameter user ke string kosong dan berikan kredensial otorisasi eksternal.

    Contoh:

    CREATE USER MAPPING
    FOR pguser SERVER oradb
    OPTIONS (user 'orauser', password 'orapwd');
  3. Eksekusi pernyataan berikut untuk membuat tabel asing:

    CREATE FOREIGN TABLE oratab (
              id        integer OPTIONS (key 'true')  NOT NULL,
              text      character varying(30),
              floating  double precision  NOT NULL
           ) SERVER oradb OPTIONS (table 'ORATAB',
                                   schema 'ORAUSER',
                                   max_long '32767',
                                   readonly 'false',
                                   sample_percent '100',
                                   prefetch '200');
    Catatan

    Skema tabel asing harus konsisten dengan skema tabel Oracle yang dipetakan.

    Tabel berikut menjelaskan parameter dalam OPTIONS.

    Parameter

    Deskripsi

    key

    Menentukan apakah akan menetapkan kolom sebagai kolom kunci utama. Nilai valid: true dan false. Nilai default: false. Jika Anda ingin mengeksekusi pernyataan UPDATE dan DELETE, Anda harus mengatur nilai menjadi true untuk semua kolom kunci utama.

    table

    Wajib. Nama tabel Oracle. Nilainya harus dalam huruf besar. Anda juga dapat menggunakan pernyataan SQL Oracle untuk menentukan nilai parameter table. Contoh: OPTIONS (table '(SELECT col FROM tab WHERE val = ''string'')'). Dalam hal ini, jangan gunakan parameter schema.

    schema

    Nama pengguna Oracle untuk mengakses tabel yang tidak dimiliki oleh pengguna yang terhubung saat ini. Nilainya harus dalam huruf besar.

    max_long

    Panjang maksimum kolom yang memiliki tipe data LONG, LONG RAW, atau XMLTYPE dalam tabel Oracle. Nilai valid: 1 hingga 1073741823. Nilai default: 32767.

    readonly

    Menentukan apakah tabel Oracle bersifat hanya-baca. Jika nilainya true, Anda tidak dapat mengeksekusi pernyataan INSERT, UPDATE, atau DELETE.

    sample_percent

    Persentase blok tabel Oracle yang dipilih secara acak untuk menghitung statistik tabel PostgreSQL. Nilai valid: 0.000001 hingga 100. Nilai default: 100.

    prefetch

    Jumlah baris yang diambil untuk satu transmisi bolak-balik antara PostgreSQL dan Oracle selama pemindaian tabel asing. Nilai valid: 0 hingga 1024. Nilai default: 200. Nilai 0 menunjukkan bahwa fitur prefetch dinonaktifkan.

Setelah Anda membuat tabel asing, Anda dapat menggunakannya untuk melakukan operasi pada tabel Oracle. Pernyataan SQL dasar seperti DELETE, INSERT, UPDATE, dan SELECT didukung. Definisi tabel asing dapat diimpor. Contoh pernyataan:

IMPORT FOREIGN SCHEMA <ora_schema_name>
FROM SERVER <server_name>
INTO <schema_name>
OPTIONS (case 'lower');
Catatan

Anda dapat mengatur parameter case ke salah satu nilai valid berikut:

  • keep: menggunakan nama objek yang sama seperti di Oracle. Dalam banyak kasus, nama tersebut dalam huruf besar.

  • lower: mengonversi semua nama objek menjadi huruf kecil.

  • smart: mengonversi hanya nama objek yang sepenuhnya dalam huruf besar menjadi huruf kecil.