Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Bekerja dengan basis data Oracle menggunakan ekstensi oracle_fdw
Untuk mengakses database Oracle dari RDScluster , Anda dapat SQL menginstal dan menggunakan ekstensi. oracle_fdw
Ekstensi ini adalah pembungkus data asing untuk basis data Oracle. Untuk mempelajari selengkapnya tentang ekstensi ini, lihat dokumentasi oracle_fdw
oracle_fdw
Ekstensi ini didukung RDS untuk Postgre SQL 12.7, 13.3, dan versi yang lebih tinggi.
Topik
Mengaktifkan ekstensi oracle_fdw
Untuk menggunakan ekstensi oracle_fdw, lakukan prosedur berikut.
Untuk mengaktifkan ekstensi oracle_fdw
-
Jalankan perintah berikut menggunakan akun yang memiliki izin
rds_superuser
.CREATE EXTENSION oracle_fdw;
Contoh: Menggunakan server asing yang ditautkan ke database Amazon RDS untuk Oracle
Contoh berikut menunjukkan penggunaan server asing yang ditautkan ke Amazon RDS untuk database Oracle.
Untuk membuat server asing yang ditautkan ke database RDS untuk Oracle
-
Perhatikan hal berikut pada contoh RDS untuk Oracle DB:
-
Titik Akhir
-
Port
-
Nama basis data
-
-
Membuat server asing.
test=>
CREATE SERVER oradb FOREIGN DATA WRAPPER oracle_fdw OPTIONS (dbserver '//
endpoint
:port
/DB_name
');CREATE SERVER
-
Izinkan penggunaan kepada pengguna yang tidak memiliki hak istimewa
rds_superuser
, misalnyauser1
.test=>
GRANT USAGE ON FOREIGN SERVER oradb TO user1;
GRANT
-
Hubungkan sebagai
user1
, lalu buat pemetaan kepada pengguna Oracle.test=>
CREATE USER MAPPING FOR user1 SERVER oradb OPTIONS (user '
oracleuser'
, password 'mypassword'
);CREATE USER MAPPING
-
Buat tabel asing yang dihubungkan ke tabel Oracle.
test=>
CREATE FOREIGN TABLE
mytab
(a int) SERVER oradb OPTIONS (table 'MYTABLE'
);CREATE FOREIGN TABLE
-
Buat kueri tabel asing.
test=>
SELECT * FROM mytab;
a --- 1 (1 row)
Jika kueri melaporkan kesalahan berikut, periksa grup keamanan dan daftar kontrol akses (ACL) untuk memastikan bahwa kedua instance dapat berkomunikasi.
ERROR: connection for foreign table "mytab" cannot be established
DETAIL: ORA-12170: TNS:Connect timeout occurred
Bekerja dengan enkripsi bergerak
Enkripsi SQL Postgre--to-Oracle dalam perjalanan didasarkan pada kombinasi parameter konfigurasi klien dan server. Untuk contoh menggunakan Oracle 21c, lihat Tentang Nilai untuk Melakukan Negosiasi Enkripsi dan IntegritasACCEPTED
dengan, artinya enkripsi bergantung pada konfigurasi server database Oracle.
Jika database Anda aktif RDS untuk Oracle, lihat enkripsi jaringan asli Oracle untuk mengonfigurasi enkripsi.
Memahami tampilan dan izin pg_user_mappings
SQLKatalog Postgre pg_user_mapping
menyimpan pemetaan dari pengguna RDSPostgre SQL Aurora asing (jarak jauh). Akses ke katalog dibatasi, tetapi Anda menggunakan tampilan pg_user_mappings
untuk melihat pemetaan. Berikut ini Anda dapat menemukan contoh yang menunjukkan bagaimana izin berlaku dengan contoh basis data Oracle, tetapi informasi ini biasanya berlaku untuk pembungkus data asing apa pun.
Pada output berikut, Anda dapat menemukan peran dan izin yang dipetakan kepada tiga pengguna contoh yang berbeda. Pengguna rdssu1
dan rdssu2
adalah anggota dengan peran rds_superuser
, sedangkan user1
tidak. Contoh menggunakan metacommand psql
\du
untuk daftar peran yang ada.
test=>
\du
List of roles Role name | Attributes | Member of -----------------+------------------------------------------------------------+------------------------------------------------------------- rdssu1 | | {rds_superuser} rdssu2 | | {rds_superuser} user1 | | {}
Semua pengguna, termasuk pengguna yang memiliki hak istimewa rds_superuser
, diizinkan untuk melihat pemetaan pengguna (umoptions
) mereka sendiri di tabel pg_user_mappings
. Seperti yang ditunjukkan pada contoh berikut, saat rdssu1
mencoba untuk mendapatkan semua pemetaan pengguna, kesalahan ditampilkan meskipun hak istimewa rdssu1
rds_superuser
:
test=>
SELECT * FROM pg_user_mapping;
ERROR: permission denied for table pg_user_mapping
Berikut adalah beberapa contoh.
test=>
SET SESSION AUTHORIZATION rdssu1;
SET
test=>
SELECT * FROM pg_user_mappings;
umid | srvid | srvname | umuser | usename | umoptions -------+-------+---------+--------+------------+---------------------------------- 16414 | 16411 | oradb | 16412 | user1 | 16423 | 16411 | oradb | 16421 | rdssu1 | {user=oracleuser,password=mypwd} 16424 | 16411 | oradb | 16422 | rdssu2 | (3 rows)
test=>
SET SESSION AUTHORIZATION rdssu2;
SET
test=>
SELECT * FROM pg_user_mappings;
umid | srvid | srvname | umuser | usename | umoptions -------+-------+---------+--------+------------+---------------------------------- 16414 | 16411 | oradb | 16412 | user1 | 16423 | 16411 | oradb | 16421 | rdssu1 | 16424 | 16411 | oradb | 16422 | rdssu2 | {user=oracleuser,password=mypwd} (3 rows)
test=>
SET SESSION AUTHORIZATION user1;
SET
test=>
SELECT * FROM pg_user_mappings;
umid | srvid | srvname | umuser | usename | umoptions -------+-------+---------+--------+------------+-------------------------------- 16414 | 16411 | oradb | 16412 | user1 | {user=oracleuser,password=mypwd} 16423 | 16411 | oradb | 16421 | rdssu1 | 16424 | 16411 | oradb | 16422 | rdssu2 | (3 rows)
Karena perbedaan implementasi antara information_schema._pg_user_mappings
dan pg_catalog.pg_user_mappings
, maka rds_superuser
yang dibuat secara manual memerlukan izin tambahan untuk dapat melihat kata sandi di pg_catalog.pg_user_mappings
.
rds_superuser
tidak memerlukan izin tambahan untuk dapat melihat kata sandi di information_schema._pg_user_mappings
.
Pengguna yang tidak memiliki peran rds_superuser
dapat melihat kata sandi pg_user_mappings
hanya dalam kondisi berikut:
-
Pengguna saat ini adalah pengguna yang dipetakan dan memiliki server atau memegang hak istimewa
USAGE
atas server tersebut. -
Pengguna saat ini adalah pemilik server dan pemetaannya untuk
PUBLIC
.