All Products
Search
Document Center

ApsaraDB RDS:Sinkronisasi database Oracle dengan oracle_fdw

Last Updated:Jun 21, 2026

ApsaraDB RDS for PostgreSQL menyediakan ekstensi oracle_fdw yang memungkinkan Anda menghubungkan ke database Oracle dan menyinkronkan datanya melalui foreign table di PostgreSQL.

Prasyarat

  • Instans ApsaraDB RDS for PostgreSQL Anda harus memenuhi persyaratan berikut:

    • Versi utama adalah PostgreSQL 12.

    • Versi mesin minor adalah 20200421 atau lebih baru.

    Catatan

    Anda dapat menjalankan SHOW rds_supported_extensions; untuk memeriksa apakah oracle_fdw didukung. Jika tidak, lakukan peningkatan versi mesin minor.

  • Versi Oracle Client adalah 11.2 atau lebih baru.

  • Versi Oracle Server yang diperlukan bergantung pada versi Oracle Client. Untuk informasi selengkapnya, lihat dokumentasi resmi Oracle.

  • Tambahkan blok CIDR VPC dari instans ApsaraDB RDS for PostgreSQL Anda (misalnya, 172.xx.xx.xx/16) ke daftar putih alamat IP instans database Oracle.

    Catatan

    Anda dapat menemukan blok CIDR VPC di halaman Database Connection instans Anda. Di halaman Database Connection, temukan blok CIDR (misalnya, 172.x.x.x/16) pada baris Network Type. Untuk informasi selengkapnya, klik ikon tanda tanya di samping blok CIDR tersebut.

Informasi latar belakang

oracle_fdw adalah ekstensi foreign table PostgreSQL yang memungkinkan Anda membaca data dari database Oracle dan menyederhanakan sinkronisasi data antara PostgreSQL dan Oracle.

Untuk informasi selengkapnya, lihat dokumentasi oracle_fdw.

Catatan penggunaan

  • Untuk menjalankan operasi UPDATE dan DELETE, Anda harus mengatur parameter key untuk kolom kunci primer saat membuat foreign table. Untuk informasi selengkapnya, lihat Buat foreign table.

  • oracle_fdw harus mampu mengenali dan mengonversi tipe data kolom dalam foreign table. Untuk informasi tentang aturan konversi tipe data ekstensi oracle_fdw, lihat Data types.

  • Klausa WHERE dan ORDER BY mendukung pushdown, artinya oracle_fdw mengirimkan klausa tersebut ke database Oracle untuk diproses.

  • Operasi JOIN mendukung pushdown, tetapi berlaku batasan berikut:

    • Tabel-tabel tersebut harus didefinisikan pada server asing yang sama.

    • Pushdown tidak didukung untuk operasi JOIN yang melibatkan tiga tabel atau lebih.

    • Operasi JOIN harus merupakan bagian dari pernyataan SELECT.

    • Operasi CROSS JOIN tanpa kondisi JOIN tidak mendukung pushdown.

    • Jika klausa JOIN di-push down, klausa ORDER BY tidak akan di-push down.

  • Setelah Anda menginstal ekstensi PostGIS, ekstensi oracle_fdw mendukung tipe data spasial berikut:

    • POINT

    • LINE

    • POLYGON

    • MULTIPOINT

    • MULTILINE

    • MULTIPOLYGON

Instal dan uninstal ekstensi

Penting

Sebelum menginstal ekstensi, pastikan instans ApsaraDB RDS for PostgreSQL Anda memiliki versi mesin utama dan minor yang didukung. Untuk informasi selengkapnya, lihat Prasyarat.

Instal ekstensi

CREATE EXTENSION oracle_fdw;

Uninstal ekstensi

DROP EXTENSION oracle_fdw;

Prosedur

  1. Buat server untuk memetakan ke database Oracle. Anda dapat menggunakan salah satu perintah berikut:

    • CREATE SERVER <server_name>
      FOREIGN DATA WRAPPER oracle_fdw
      OPTIONS (dbserver '//<oracle_internal_endpoint>:<oracle_internal_port>/<database_name>');
    • CREATE SERVER oradb
      FOREIGN DATA WRAPPER oracle_fdw
      OPTIONS (host '<oracle_internal_endpoint>', port '<oracle_internal_port>', dbname '<database_name>');
  2. CREATE USER MAPPING
    FOR <postgresql_username> SERVER <server_name>
    OPTIONS (user '<oracle_username>', password '<oracle_password>');
    Catatan

    Jika Anda tidak ingin menyimpan kredensial pengguna Oracle di database PostgreSQL, Anda dapat mengatur opsi user menjadi string kosong dan memberikan otorisasi eksternal yang diperlukan.

    Contoh:

    CREATE USER MAPPING
    FOR pguser SERVER oradb
    OPTIONS (user 'orauser', password 'orapwd');
  3. 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

    Struktur foreign table harus sesuai dengan struktur tabel Oracle yang bersangkutan.

    Tabel berikut menjelaskan parameter dalam klausa OPTIONS.

    Parameter

    Deskripsi

    key

    Menentukan apakah kolom yang bersangkutan merupakan kunci primer. Nilai yang valid adalah true dan false. Nilai default: false. Untuk menjalankan operasi UPDATE dan DELETE, Anda harus mengatur parameter ini ke true untuk semua kolom kunci primer.

    table

    Nama tabel. Parameter ini wajib diisi dan biasanya dalam huruf kapital. Anda juga dapat mengatur nilai parameter ini ke ekspresi SQL Oracle. Contoh:OPTIONS (table '(SELECT col FROM tab WHERE val = ''string'')'). Jika Anda menggunakan ekspresi SQL, jangan gunakan parameter schema.

    schema

    Pemilik tabel, yang biasanya berupa username Oracle dalam huruf kapital. Gunakan parameter ini untuk mengakses tabel yang tidak dimiliki oleh pengguna koneksi saat ini.

    max_long

    Panjang maksimum kolom dengan tipe data LONG, LONG RAW, dan XMLTYPE di tabel Oracle. Rentang nilai: 1 hingga 1073741823. Nilai default: 32767.

    readonly

    Mengatur tabel Oracle menjadi read-only, sehingga mencegah operasi INSERT, UPDATE, dan DELETE.

    sample_percent

    Persentase pengambilan sampel data tabel Oracle yang digunakan untuk statistik tabel PostgreSQL. Rentang nilai: 0,000001 hingga 100. Nilai default: 100.

    prefetch

    Jumlah baris yang ditransfer sekaligus antara PostgreSQL dan Oracle selama pemindaian foreign table. Rentang nilai: 0 hingga 1024. Nilai default: 200. Nilai 0 menonaktifkan fitur prefetch.

Setelah menyelesaikan langkah-langkah ini, Anda dapat mengoperasikan tabel Oracle melalui foreign table. Operasi dasar seperti DELETE, INSERT, UPDATE, dan SELECT didukung. Anda juga dapat mengimpor definisi foreign table dengan menjalankan perintah berikut:

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

Parameter case dapat memiliki nilai berikut:

  • keep: Mempertahankan nama objek dari Oracle, yang biasanya dalam huruf kapital.

  • lower: Mengonversi semua nama objek menjadi huruf kecil.

  • smart: Mengonversi nama objek yang seluruhnya terdiri dari huruf kapital menjadi huruf kecil.