oracle_fdw是一個開源第三方外掛程式,是PolarDB PostgreSQL版(相容Oracle)的一個外部資料封裝器FDW(Foreign Data Wrapper)。您可以使用oracle_fdw外掛程式與外部的Oracle資料庫進行互動。
前提條件
oracle_fdw依賴於Oracle Instant Client的動態連結程式庫與Oracle資料庫伺服器進行互動。
可以與oracle_fdw外掛程式協同工作的Oracle Instant Client版本如下所示:
11.2
12.1、12.2
18.3、18.5
19.3、19.6、19.8、19.9、19.10、19.11、19.12、19.14
21
說明使用前,請您自行查閱Oracle官方文檔中Instant Client版本與資料庫伺服器版本之間的相容矩陣,確保用戶端與伺服器之間可相容互動。
使用方法
安裝外掛程式。
CREATE EXTENSION oracle_fdw;建立外部Oracle資料庫伺服器。
配置Oracle資料庫的串連資訊,建立PolarDB PostgreSQL版(相容Oracle)到Oracle的映射。樣本如下:
CREATE SERVER oradb FOREIGN DATA WRAPPER oracle_fdw OPTIONS (dbserver '//host:port/dbname');建立外部Oracle資料庫伺服器參數說明如下:
參數
說明
是否必填
dbserver
Oracle資料庫的串連串,包含IP地址、連接埠號碼、資料庫名。
是
isolation_level
交易隔離等級,預設為SERIALIZABLE。
可選的參數類型如下:
serializable:序列化。
read_committed:讀已提交。
read_only:唯讀。
否
nchar
是否在Oracle端開啟字元轉換。
說明修改可能會影響效能。
否
建立使用者映射。
將PolarDB PostgreSQL版(相容Oracle)的使用者pguser與對應Oracle資料庫的使用者orauser進行映射。需要配置Oracle資料庫使用者的使用者名稱、密碼。樣本如下:
CREATE USER MAPPING FOR pguser SERVER oradb OPTIONS (user 'orauser', password 'orapwd');建立使用者映射參數說明如下:
參數
說明
是否必填
user
Oracle資料庫使用者的使用者名稱。
是
password
Oracle資料庫使用者的密碼。
是
說明如果您不想在PolarDB PostgreSQL版(相容Oracle)中儲存Oracle使用者的憑證,可以設定user為空白字串,並提供外部授權。
建立外部表格映射。
在PolarDB PostgreSQL版(相容Oracle)中建立一個外部表格,映射到Oracle資料庫的一個已有的表上。樣本如下:
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' );建立外部表格參數說明如下:
參數
說明
是否必填
table
Oracle資料庫中的被映射表名,一般是大寫。
是
dblink
被映射表的資料庫連結,必須與Oracle系統目錄中的完全一致。
否
schema
Oracle使用者名稱,需要大寫,用於訪問不屬於當前串連使用者的表。
否
max_long
限制Oracle表中 LONG、LONG RAW、XMLTYPE類型列的最大長度。
否
sample_percent
PostgreSQL用於計算因統計資訊而隨機播放的Oracle表資料的比例(預設100)。
否
prefetch
掃描外表時PostgreSQL與Oracle之間一次性傳輸的資料行數。
否
key
當前列是否包含在主鍵約束中。
否
strip_zeros
資料傳遞時,是否去除字串後的ASCII 0字元(在Oracle中合法,在PostgreSQL中非法)。
否
說明外部表格的結構定義需要與Oracle資料庫上的被映射表的結構完全一致。
oracle_fdw對PolarDB PostgreSQL版(相容Oracle)到Oracle的資料類型映射,請參見類型映射表格。
使用方法。
您可以使用操作PolarDB PostgreSQL版(相容Oracle)普通表相同的方式來操作外部表格,從而操縱遠程Oracle資料庫中的表。
卸載外掛程式。
DROP EXTENSION oracle_fdw;
類型映射表格
在oracle_fdw外掛程式中,PolarDB PostgreSQL版(相容Oracle)與Oracle兩種資料庫的資料類型映射如下:
Oracle類型 | 可能的PostgreSQL類型 |
CHAR | char, varchar, text |
NCHAR | char, varchar, text |
VARCHAR | char, varchar, text |
VARCHAR2 | char, varchar, text, json |
NVARCHAR2 | char, varchar, text |
CLOB | char, varchar, text, json |
LONG | char, varchar, text |
RAW | uuid, bytea |
BLOB | bytea |
BEILE | bytea (read-only) |
LONG RAW | bytea |
NUMBER | numeric, float4, float8, char, varchar, text |
NUMBER(n,m) with m<=0 | numeric, float4, float8, int2, int4, int8, boolean, char, varchar, text |
FLOAT | numeric, float4, float8, char, varchar, text |
BINARY_FLOAT | numeric, float4, float8, char, varchar, text |
BINARY_DOUBLE | numeric, float4, float8, char, varchar, text |
DATE | date, timestamp, timestamptz, char, varchar, text |
TIMESTAMP | date, timestamp, timestamptz, char, varchar, text |
TIMESTAMP WITH TIME ZONE | date, timestamp, timestamptz, char, varchar, text |
TIMESTAMP WITH LOCAL TIME ZONE | date, timestamp, timestamptz, char, varchar, text |
INTERVAL YEAR TO MONTH | interval, char, varchar, text |
INTERVAL DAY TO SECOND | interval, char, varchar, text |
XMLTYPE | xml, char, varchar, text |
MDSYS.SDO_GEOMETRY | geometry (PostGIS) |
相關參考
更多oracle_fdw進階使用方法,請參見oracle_fdw的官方文檔 。