Oracleデータベースにアクセスする ~oracle_fdwの基本的な使い方~
PostgreSQLには、PostgreSQLの外部にある様々なデータに対してアクセスするための仕組みとして、外部データラッパー(FDW: Foreign Data Wrapper)が用意されています。その概要については、「外部データとの連携 ~FDWで様々なデータソースとつなぐ~」で紹介しています。今回は、Oracleデータベース用の外部データラッパーであるoracle_fdwを利用して、Oracleデータベースにアクセスする方法について解説します。
1. oracle_fdwとは
oracle_fdwとは、Oracleデータベースに対応した外部データラッパーです。Oracleデータベース上のテーブルやビュー(マテリアライズド・ビューを含む)に対応する外部テーブルを作成し、SELECT文やINSERT文などのSQL文でアクセスすることで、Oracleデータベース上のデータを扱えるようになります。利用イメージを図1に示します。
oracle_fdwは、PostgreSQLクライアントから外部テーブルにアクセスがあると、「Oracle Call Interface(以降、OCIと略します)ライブラリー」を経由して、外部にあるOracleデータベースのテーブルやビューのデータを参照/更新します。なお、OCIライブラリーは、PostgreSQLサーバー上にインストールしておく必要があります。

oracle_fdwは、LinuxとWindowsに対応していますが、この記事ではLinux上での動作を前提に説明します。また、確認に使用した環境は、PostgreSQL 11.1、oracle_fdw 2.1.0、Oracle Instant Client 18.5(OCIライブラリー)、Oracle Database 18c XEです。
2. oracle_fdwの使い方
oracle_fdwを利用するための具体的な準備と利用手順について説明します。なお、PostgreSQLサーバーには、PostgreSQL、oracle_fdw、およびOCIライブラリーがインストールされているものとします。Oracleデータベースには、連携先のテーブルが存在し、リモート接続用のリスナー設定が完了しているものとします。
2.1 oracle_fdwを使うための準備
環境変数の設定
oracle_fdwからOCIライブラリーを利用するために、以下の環境変数を設定します。
- 環境変数:LD_LIBRARY_PATH
説明:OCIライブラリーのインストール先のディレクトリーを設定します。
設定例:/usr/lib/oracle/18.5/client64/lib - 環境変数:NLS_LANG
説明:連携先Oracleデータベースの環境変数NLS_LANGと同じ値を設定します。
設定例:JAPANESE_JAPAN.AL32UTF8
Oracleデータベースにアクセスするための準備
oracle_fdwがOracleデータベースにアクセスするためには、図2のように、連携先の各種情報を4つの手順で設定します。なお、図中の括弧付き数字は、準備の手順を示しています。

- (1)oracle_fdwのエクステンション(EXTENTION)の作成
- PostgreSQLのエクステンションとして、oracle_fdwを作成します。エクステンションの作成後には、外部データラッパーのリストを表示して、正しく作成されていることを確認します。
Loading component...
Loading component...
Loading component...
さらに、PostgreSQL側で使用するローカルユーザー(postgres)が、定義された外部サーバー(ora_sv)を使用できるように、権限を付与します。
Loading component...
Loading component...
Loading component...
Loading component...
Loading component...
外部テーブルを作成する上で、以下の注意点があります。
Loading component...
Loading component...
Loading component...
2.2 oracle_fdwを利用したOracleデータベースへのアクセス
Loading component...
Loading component...
Loading component...
Loading component...
Loading component...
Loading component...
次に、UPDATE文で外部テーブル(f_ora_tbl)を更新し、データが更新されていることを確認します。
Loading component...
3. oracle_fdwを利用する上でのポイント
Loading component...
Loading component...
Loading component...
4. 外部テーブルの一括作成機能
Loading component...
Loading component...
Loading component...
Loading component...
2022年3月25日更新
こちらもおすすめ
Loading component...
Loading component...
富士通のソフトウェア公式チャンネル(YouTube)
富士通のミドルウェア製品のご紹介や各種イベント・セミナーの講演内容、デモンストレーションなどの動画をご覧いただけます。












