oracle_fdwプラグインは、オープンソースのサードパーティプラグインであり、 PolarDB for PostgreSQL (Compatible with Oracle) の外部データラッパーFDW (外部データラッパー) です。 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バージョンとデータベース・サーバー・バージョンの互換性マトリックスを参照して、クライアントとサーバーが相互にやり取りできることを確認してください。
使用量
oracle_fdw拡張機能をインストールします。
CREATE EXTENSION oracle_fdw;外部Oracleデータベース・サーバーを作成します。
Oracleデータベースの接続情報を設定し、 PolarDB for PostgreSQL (Compatible with Oracle) からOracleへのマッピングを作成します。 以下に例を示します。
CREATE SERVER oradb FOREIGN DATA WRAPPER oracle_fdw OPTIONS (dbserver '//host:port/dbname');外部Oracleデータベース・サーバーを作成するためのパラメーターは次のとおりです。
パラメーター
説明
必須
dbserver
Oracleデータベースの接続文字列には、IPアドレス、ポート番号、およびデータベース名が含まれます。
必須
isolation_level
トランザクション分離レベル、デフォルトはSERIALIZABLEです。
オプションのパラメータタイプは次のとおりです。
serializable: serializableです。
read_committed: read committed.
read_only: 読み取り専用です。
選択可能
nchar
Oracle側で文字変換を有効にするかどうか。
説明変更はパフォーマンスに影響を与える可能性があります。
選択可能
ユーザーマッピングを作成します。
PolarDB for PostgreSQL (Compatible with Oracle) のユーザーpguserを、対応するOracleデータベースのユーザーorauserにマッピングします。 Oracleデータベース・ユーザーのユーザー名とパスワードを設定する必要があります。 次に例を示します:
CREATE USER MAPPING FOR pguser SERVER oradb OPTIONS (user 'orauser', password 'orapwd');ユーザーマッピングを作成するためのパラメーターは次のとおりです。
Parameters
説明
必須
user
Oracleデータベース・ユーザーのユーザー名。
必須
password
Oracleデータベース・ユーザーのパスワード。
必須
説明Oracleユーザーの資格情報を PolarDB for PostgreSQL (Oracleと互換性がある) に格納しない場合は、userを空の文字列に設定し、外部認証を提供します。
外部テーブルマッピングを作成します。
PolarDB for PostgreSQL (Compatible with 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' );外部テーブルを作成するためのパラメーターは次のとおりです。
Parameters
説明
必須
table
Oracleデータベース内のマップされたテーブル名は通常大文字です。
必須
dblink
マップされたテーブルのデータベースリンクは、Oracleシステムカタログのデータベースリンクとまったく同じである必要があります。
選択可能
schema
大文字である必要があるOracleユーザー名は、現在接続されているユーザーに属していないテーブルにアクセスするために使用されます。
選択可能
max_long
OracleテーブルのLONG、LONG RAW、およびXMLTYPEタイプの列の最大長を制限します。
選択可能
sample_percent
統計をランダムに選択するためにPostgreSQLが使用するOracleテーブル・データの割合 (デフォルトは100) 。
選択可能
プリフェッチ
外部テーブルをスキャンするときにPostgreSQLとOracleの間で一度に転送されるデータの行数。
選択可能
キー
現在の列が主キー制約に含まれているかどうか。
選択可能
strip_zeros
データを転送するとき、文字列の末尾にあるASCII 0文字を削除するかどうか (Oracleでは合法、PostgreSQLでは違法) 。
選択可能
説明外部テーブルの構造定義は、Oracleデータベース上のマッピングされたテーブルの構造と完全に一致している必要があります。
PolarDB for PostgreSQL (Compatible with Oracle) からOracleへのoracle_fdwのデータ型マッピングについては、「type mapping table」をご参照ください。
使用法。
外部テーブルは、通常の PolarDB for PostgreSQL (Compatible with Oracle) テーブルを操作してリモートOracleデータベースのテーブルを操作するのと同じ方法で操作できます。
プラグインをアンインストールします。
DROP EXTENSION oracle_fdw;
型マッピングテーブル
oracle_fdwプラグインでは、 PolarDB for PostgreSQL (Compatible with 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、ビテア |
BLOB | bytea |
BEILE | bytea (読み取り専用) |
LONG RAW | bytea |
NUMBER | 数値、float4、float8、char、varchar、text |
NUMBER(n,m) (m<=0) | numeric、float4、float8、int2、int4、int8、boolean、char、varchar、text |
FLOAT | 数値、float4、float8、char、varchar、text |
BINARY_FLOAT | 数値、float4、float8、char、varchar、text |
BINARY_DOUBLE | 数値、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 | ジオメトリ (PostGIS) |
関連参照
oracle_fdwの詳細については、oracle_fdwの公式ドキュメントをご参照ください。