全部產品
Search
文件中心

PolarDB:oracle_fdw(Oracle外部表格)

更新時間:Oct 26, 2024

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版本與資料庫伺服器版本之間的相容矩陣,確保用戶端與伺服器之間可相容互動。

使用方法

  1. 安裝外掛程式。

    CREATE EXTENSION oracle_fdw;
  2. 建立外部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端開啟字元轉換。

    說明

    修改可能會影響效能。

  3. 建立使用者映射。

    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為空白字串,並提供外部授權。

  4. 建立外部表格映射。

    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表中 LONGLONG RAWXMLTYPE類型列的最大長度。

    sample_percent

    PostgreSQL用於計算因統計資訊而隨機播放的Oracle表資料的比例(預設100)。

    prefetch

    掃描外表時PostgreSQL與Oracle之間一次性傳輸的資料行數。

    key

    當前列是否包含在主鍵約束中。

    strip_zeros

    資料傳遞時,是否去除字串後的ASCII 0字元(在Oracle中合法,在PostgreSQL中非法)。

    說明
    • 外部表格的結構定義需要與Oracle資料庫上的被映射表的結構完全一致。

    • oracle_fdw對PolarDB PostgreSQL版(相容Oracle)到Oracle的資料類型映射,請參見類型映射表格

  5. 使用方法。

    您可以使用操作PolarDB PostgreSQL版(相容Oracle)普通表相同的方式來操作外部表格,從而操縱遠程Oracle資料庫中的表。

  6. 卸載外掛程式。

    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的官方文檔