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.
CatatanAnda 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.CatatanAnda 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
UPDATEdanDELETE, Anda harus mengatur parameterkeyuntuk 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
WHEREdanORDER BYmendukung pushdown, artinya oracle_fdw mengirimkan klausa tersebut ke database Oracle untuk diproses. -
Operasi
JOINmendukung pushdown, tetapi berlaku batasan berikut:-
Tabel-tabel tersebut harus didefinisikan pada server asing yang sama.
-
Pushdown tidak didukung untuk operasi
JOINyang melibatkan tiga tabel atau lebih. -
Operasi
JOINharus merupakan bagian dari pernyataanSELECT. -
Operasi
CROSS JOINtanpa kondisiJOINtidak mendukung pushdown. -
Jika klausa
JOINdi-push down, klausaORDER BYtidak 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
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
-
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>');
-
CREATE USER MAPPING FOR <postgresql_username> SERVER <server_name> OPTIONS (user '<oracle_username>', password '<oracle_password>');CatatanJika Anda tidak ingin menyimpan kredensial pengguna Oracle di database PostgreSQL, Anda dapat mengatur opsi
usermenjadi string kosong dan memberikan otorisasi eksternal yang diperlukan.Contoh:
CREATE USER MAPPING FOR pguser SERVER oradb OPTIONS (user 'orauser', password 'orapwd'); -
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');CatatanStruktur 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
truedanfalse. Nilai default:false. Untuk menjalankan operasiUPDATEdanDELETE, Anda harus mengatur parameter ini ketrueuntuk 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 parameterschema.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, danXMLTYPEdi tabel Oracle. Rentang nilai: 1 hingga 1073741823. Nilai default: 32767.readonly
Mengatur tabel Oracle menjadi read-only, sehingga mencegah operasi
INSERT,UPDATE, danDELETE.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');
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.