すべてのプロダクト
Search
ドキュメントセンター

ApsaraDB RDS:oracle_fdwプラグインの使用

最終更新日:Jan 11, 2024

このトピックでは、oracle_fdwプラグインを使用してOracleデータベースに接続する方法について説明します。 このプラグインを使用して、PostgreSQLデータベースのテーブルとOracleデータベースのテーブル間でデータを同期することもできます。

前提条件

  • ApsaraDB RDS for PostgreSQLインスタンスは、20200421以降のマイナーエンジンバージョンでPostgreSQL 12を実行します。
    説明 SHOW rds_supported_extensions; ステートメントを実行して、現在のマイナーエンジンバージョンのRDSインスタンスがoracle_fdwプラグインをサポートしているかどうかを確認できます。 現在のマイナーエンジンバージョンがoracle_fdwプラグインをサポートしていない場合は、まずマイナーエンジンバージョンを更新する必要があります。
  • Oracleクライアントのバージョンが11.2以降です。
  • Oracleサーバーのバージョンは、Oracleクライアントのバージョンに基づいています。 詳細は、「Oracleドキュメント」をご参照ください。
  • RDSインスタンスが存在する仮想プライベートクラウド (VPC) のCIDRブロックを、接続するOracleデータベースのIPアドレスホワイトリストに追加する必要があります。 CIDRブロックの例: 172.xx. xx.xx/16
    説明 ApsaraDB RDSコンソールの [データベース接続] ページで、RDSインスタンスが存在するVPCのCIDRブロックを表示できます。 The CIDR block of the VPC

背景情報

oracle_fdwプラグインは、外部テーブルを管理するためにPostgreSQLによって開発されています。 このプラグインを使用すると、Oracleデータベースに簡単にアクセスでき、PostgreSQLデータベースとOracleデータベース間でデータを同期できます。

詳細については、「oracle_fdw」をご参照ください。

注意事項

  • UPDATEまたはDELETEステートメントを実行する場合は、外部テーブルを作成するときに、主キー列のkeyパラメーターをtrueに設定する必要があります。 詳細については、このトピックの「外部テーブルの作成」セクションをご参照ください。
  • 外部テーブルの列のデータ型は、oracle_fdwプラグインに対して識別可能で、変換可能である必要があります。 oracle_fdwプラグインでサポートされている変換ルールの詳細については、「データ型」をご参照ください。
  • oracle_fdwプラグインは、WHERE句とORDER BY句をOracleデータベースにプッシュダウンできます。
  • oracle_fdwプラグインは、JOIN操作をOracleデータベースにプッシュダウンできます。 プッシュダウンには次の制限があります。
    • JOIN操作の両方のテーブルは、同じデータベースマッピングで定義する必要があります。
    • 3つ以上のテーブルに対するJOIN操作はプッシュダウンできません。
    • JOIN操作はSELECTステートメントに含める必要があります。
    • JOIN条件のないクロスJOIN操作はプッシュダウンできません。
    • JOIN操作がプッシュダウンされた場合、ORDER BY句はプッシュダウンされません。
  • PostGISのインストール後、oracle_fdwプラグインはさらに次の空間データ型をサポートします。
    • Point
    • 回線
    • Polygon
    • マルチポイント
    • マルチライン
    • MultiPolygon

手順

  1. 次のステートメントを実行して、oracle_fdwプラグインを作成します。
    拡張の作成oracle_fdw;
  2. 次のいずれかのステートメントを実行して、Oracleデータベース・マッピングを作成します。
    • CREATE SERVER <サーバー名>
      外国データラッパーoracle_fdw
      オプション (dbserver '// <Oracleデータベースへの接続に使用される内部エンドポイント >:< Oracleデータベースへの接続に使用される内部ポート>/<接続するOracleデータベースの名前>'); 
    • サーバーの作成oradb
      外国データラッパーoracle_fdw
      オプション (ホスト '<Oracleデータベースへの接続に使用される内部エンドポイント>' 、ポート '<Oracleデータベースへの接続に使用される内部ポート>' 、dbname '<接続するOracleデータベースの名前>'); 
  3. 次のステートメントを実行して、ユーザーマッピングを作成します。
    ユーザーマッピングを作成する
    FOR <PostgreSQLデータベースへのログインに使用されるユーザー名> SERVER <ユーザーマッピングの名前>
    オプション (ユーザー '<Oracleデータベースへのログインに使用されるユーザー名>' 、パスワード '<Oracleデータベースへのログインに使用されるパスワード>'); 
    説明 Oracleユーザー資格情報をPostgreSQLデータベースに格納しない場合は、ユーザーパラメーターを空の文字列に設定し、外部権限付与資格情報を指定します。

    例:

    ユーザーマッピングを作成する
    pguserのサーバーoradbのため
    オプション (ユーザー 'orauser' 、パスワード 'orapwd'); 
  4. 次のステートメントを実行して、外部テーブルを作成します。
    FOREIGN TABLE oratabを作成 (
              id整数OPTIONS (キー 'true') NOT NULL、
              テキスト文字の変化 (30) 、
              浮動倍精度NOT NULL
           ) サーバーoradbオプション (テーブル 'ORATAB' 、
                                   スキーマ 'ORAUSER' 、
                                   max_long '32767' 、
                                   読み取り専用の「偽」、
                                   sample_percent '100' 、
                                   プリフェッチ '200'); 
    説明 外部テーブルのスキーマは、マップされたOracleテーブルのスキーマと一致している必要があります。

    次の表に、OPTIONSのパラメーターを示します。

    パラメーター説明
    キー列を主キー列として設定するかどうかを指定します。 有効な値は、true および false です。 デフォルト値:false UPDATEおよびDELETEステートメントを実行する場合は、すべての主キー列に対して値をtrueに設定する必要があります。
    table必須。 Oracleテーブルの名前。 値は大文字でなければなりません。 Oracle SQL文を使用して、テーブル・パラメータの値を定義することもできます。 例: OPTIONS (テーブル '(SELECT col FROM tab WHERE val = ''string'')') この場合、schemaパラメーターは使用しないでください。
    schema現在接続されているユーザーに属していないテーブルにアクセスするためのOracleユーザー名。 値は大文字でなければなりません。
    max_longOracleテーブルのLONG、LONG RAW、またはXMLTYPEデータ型を持つ列の最大長。 有効な値: 1 ~ 1073741823 デフォルト値: 32767
    読み取り専用Oracleテーブルが読み取り専用かどうかを指定します。 値がtrueの場合、INSERT、UPDATE、またはDELETEステートメントは実行できません。
    sample_percentPostgreSQLテーブル統計を計算するためにランダムに選択されたOracleテーブルブロックの割合。 有効な値: 0.000001〜100。 デフォルト値:100
    プリフェッチ外部テーブルスキャン中にPostgreSQLとOracle間の1回の往復送信でフェッチされる行数。 有効値: 0~1024。 デフォルト値:200 値0は、プリフェッチ機能が無効であることを示します。

外部テーブルを作成した後、外部テーブルを使用してOracleテーブルに対する操作を実行できます。 DELETE、INSERT、UPDATE、SELECTなどの基本的なSQL文がサポートされています。 外部テーブル定義をインポートできます。 例:

インポート外国スキーマ <ora_schema_name>
サーバーから <server_name>
INTO <schema_name>
オプション (ケース 'lower '); 
説明 caseパラメーターは、次のいずれかの有効な値に設定できます。
  • keep: Oracleと同じオブジェクト名を使用します。 ほとんどの場合、名前は大文字です。
  • lower: すべてのオブジェクト名を小文字に変換します。
  • smart: すべて大文字のオブジェクト名のみを小文字に変換します。

oracle_fdwプラグインの削除

次のSQL文を実行して, oracle_fdw部品を削除します。

ドロップ拡張oracle_fdw;