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の利用イメージ
図1 oracle_fdwの利用イメージ

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つの手順で設定します。なお、図中の括弧付き数字は、準備の手順を示しています。

Oracleデータベースにアクセスするための準備
図2 Oracleデータベースにアクセスするための準備
(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)

富士通のミドルウェア製品のご紹介や各種イベント・セミナーの講演内容、デモンストレーションなどの動画をご覧いただけます。

Loading component...

Loading component...