14 Oracle Database Gateway for DRDAの構成

ゲートウェイのインストール後、次のタスクを実行してOracle Database Gateway for DRDAを構成します。

  1. ゲートウェイ初期化パラメータ・ファイルの構成

  2. ゲートウェイ用のOracle Netの構成

  3. 2フェーズ・コミットの構成

  4. データ・ディクショナリ・サポート用の表およびビューの作成

  5. ゲートウェイ・アクセス用のOracle Databaseの構成

  6. データベース・リンクの作成

  7. 複数のDRDAデータベースにアクセスするためのゲートウェイの構成

HS_TRANSACTION_LOG表の作成、不要になった表およびビューの削除、データ・ディクショナリ・サポート用の表およびビューの作成など、各ステップを実行するためのSQLスクリプトが用意されています。

これらのスクリプトは、実行するためのツールがゲートウェイに付属していないため、データベース固有のツール(DB2 UDB for z/OSでのSPUFIなど)を使用してDRDAサーバー・プラットフォーム上で実行する必要があります。これらのスクリプトを実行する場合に使用するユーザーIDには、適切な権限を付与する必要があります。

SQLスクリプトはdg4db2/adminディレクトリにあります。ファイル名にDB2プラットフォーム識別子(例: "zos"、"as400"および"luw")とバージョン固有の番号(例: vw7、vw8)を使用することにより、適切なプラットフォームのスクリプトが指定されます。

14.1 ゲートウェイ初期化パラメータ・ファイルの構成

次のタスクを実行して、ゲートウェイ初期化パラメータ・ファイルを構成します。

  1. ゲートウェイ用のシステム識別子の選択
  2. 初期化パラメータ・ファイルのカスタマイズ

14.1.1 ゲートウェイ用のシステム識別子の選択

ゲートウェイ・システム識別子(SID)は、ゲートウェイ・インスタンスを識別する英数字の文字列です。アクセスするDRDAデータベースごとに、1つのゲートウェイ・インスタンスが(したがって1つのゲートウェイSIDが)必要です。ただし、2つのDRDAデータベースにアクセスする場合は、ゲートウェイのインスタンスごとに1つずつ、合計2つのゲートウェイSIDが必要です。DRDAデータベースが1つのみ存在し、そのアクセスに使用するゲートウェイ・パラメータ設定のセットを状況に応じて使い分ける場合、単一のDRDAデータベースに対して複数のゲートウェイSIDを使用します。SIDは、初期化パラメータ・ファイルのファイル名の一部として使用されます。

14.1.2 初期化パラメータ・ファイルのカスタマイズ

必要に応じて、追加パラメータを使用してパラメータ・ファイルを調整します。サポートされている初期化パラメータのリストは、「初期化パラメータ」を参照してください。また、パラメータ・ファイルを調整するためのセキュリティ面については、「セキュリティに関する考慮事項」を参照してください。

14.2 ゲートウェイ用のOracle Netの構成

ゲートウェイでは、Oracle Databaseと通信するためにOracle Netが必要です。ゲートウェイの構成後、次のタスクを実行して、ゲートウェイと連携動作するようにOracle Netを構成します。

  1. ゲートウェイ用のOracle Net Listenerの構成
  2. ゲートウェイ用のOracle Net Listenerの停止および起動

14.2.1 ゲートウェイ用のOracle Net Listenerの構成

Oracle Net Listenerは、Oracle Databaseからの着信リクエストをリスニングします。Oracle Net Listenerでゲートウェイをリスニングするためには、ゲートウェイに関する情報をOracle Net Listenerの構成ファイル(listener.ora)に追加する必要があります。このファイルのデフォルトの場所は$ORACLE_HOME/network/adminです。$ORACLE_HOMEはゲートウェイのインストール先のディレクトリです。

次のエントリをlistener.oraファイルに追加する必要があります。

  • Oracle Net ListenerがリスニングするOracle Netアドレスのリスト

  • Oracle Net Listenerが着信接続リクエストに応じて起動するゲートウェイの実行可能ファイルの名前

listener.oraエントリのサンプル(listener.ora.sample)は$ORACLE_HOME/dg4db2/adminディレクトリにあります。$ORACLE_HOMEはゲートウェイのインストール先のディレクトリです。

14.2.1.1 listener.oraファイルのエントリの構文

Oracle Databaseは、Oracle Netおよびサポートされている任意のプロトコル・アダプタを使用してゲートウェイと通信します。次に、TCP/IPプロトコル・アダプタを使用してOracle Net Listenerがリスニングするアドレスの構文を示します。

LISTENER=
        (ADDRESS= 
          (PROTOCOL=TCP)
          (HOST=host_name)
          (PORT=port_number))

説明:

変数 説明

host_name

ゲートウェイがインストールされているマシンの名前。IPv6形式は、このリリースでサポートされています。詳細は、『Oracle Database Net Servicesリファレンス』を参照してください。

port_number

Oracle Net Listenerにより使用されるポート番号。同じマシン上で稼働する他のリスナーが存在する場合、port_numberの値は、他のリスナーのポート番号とは異なる必要があります。

着信接続リクエストに応じてゲートウェイを起動するようOracle Net Listenerを構成するには、listener.oraファイルにエントリを追加します。

ノート:

listener.oraファイルと次のステップで構成するtnsnames.oraファイルで同じSID値を使用する必要があります。

SID_LIST_LISTENER=
   (SID_LIST=
      (SID_DESC= 
         (SID_NAME=gateway_sid)
         (ORACLE_HOME=oracle_home_directory)
         (PROGRAM=dg4db2)
      )
   )

説明:

変数 説明

gateway_sid

ゲートウェイのSIDを指定します。tnsnames.oraファイルの接続記述子エントリに指定されているゲートウェイSIDと同じです。

oracle_home_directory

ゲートウェイが存在するOracleホーム・ディレクトリを指定します。

dg4db2

Oracle Database Gateway for DRDAの実行可能ファイル名を指定します。

複数のデータベースSIDでリスニングするOracle Net Listenerがすでに稼働中の場合、既存のlistener.oraファイルのSID_LISTに次の構文のみを追加します。

SID_LIST_LISTENER=
(SID_LIST= 
   (SID_DESC=.
     .
   )
   (SID_DESC=.
     .
   )
   (SID_DESC=
      (SID_NAME=gateway_sid)
      (ORACLE_HOME=oracle_home_directory)
      (PROGRAM=dg4db2)
   )
)

関連項目:

listener.oraファイルの変更方法の詳細は、『Oracle Database Net Services管理者ガイド』を参照してください。

14.2.2 ゲートウェイ用のOracle Net Listenerの停止および起動

新規設定を反映するには、次のようにOracle Net Listenerを停止して再起動する必要があります。

  1. PATH環境変数を$ORACLE_HOME/binに設定します。$ORACLE_HOMEはゲートウェイのインストール先のディレクトリです。BourneシェルまたはKornシェルを使用している場合、次のように入力します。
    $ PATH=$ORACLE_HOME/bin:$PATH;export PATH
    $ LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH
    

    Cシェルを使用している場合、次のように入力します。

    $ setenv PATH $ORACLE_HOME/bin:$PATH
    $ setenv LD_LIBRARY_PATH $ORACLE_HOME/lib:$LD_LIBRARY_PATH
    

    表14-1に、異なるプラットフォームで使用するパラメータ値を示します。

    表14-1 UNIXベース・プラットフォームのOracle Database Gateway for DRDAのパラメータ値

    プラットフォーム パラメータ値

    Oracle Solaris (SPARC) 64ビットおよびOracle Solaris on x86-64 (64ビット)

    LD_LIBRARY_PATH_64=$ORACLE_HOME/lib

    HP-UX Itanium

    LD_LIBRARY_PATH=$ORACLE_HOME/lib

    Linux x86 64ビット

    LD_LIBRARY_PATH=$ORACLE_HOME/lib

    IBM AIX on POWER Systems (64ビット)

    LIBPATH=$ORACLE_HOME/lib

  2. リスナーがすでに実行中の場合、次のようにlsnrctlコマンドを使用してリスナーを停止し、新規設定を使用して起動します。
    $ lsnrctl stop
    $ lsnrctl start 
    
  3. 次のように新規設定に基づくリスナーのステータスを確認します。
    $ lsnrctl status
    

    次の例は、lsnrctlのステータス確認による出力の一部です。

.
.
.
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=204.179.99.15)(PORT=1551)))
Services Summary...
Service "dg4db2" has 1 instance(s).
  Instance "dg4db2", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully

この例で、サービス名は、インストール時に割り当てられたデフォルトのSID値であるdg4db2です。

ノート:

tnsnames.oraファイルとlistener.oraファイルで同じSID値を使用する必要があります。

14.3 2フェーズ・コミットの構成

2フェーズ・コミットのサポートでは、DB2サーバーで$ORACLE_HOME/dg4db2/admin/dg4db2_tx.sqlスクリプトを実行する必要があります。このスクリプトは、2フェーズ・コミットのゲートウェイによって使用されるオブジェクトを作成します。スクリプトを編集して、デフォルトのリカバリ・アカウント・スキーマ(RECOVER)をHS_FDS_RECOVERY_ACCOUNT初期化パラメータに指定されたアカウント名で置き換えます。詳細は、「初期化パラメータ」を参照してください。

14.4 データ・ディクショナリ・サポート用の表およびビューの作成

データ・ディクショナリ変換サポートを有効化するには、ゲートウェイを通じてアクセスするOracle以外のシステムごとに、データ・ディクショナリ表およびビューを作成する必要があります。

次のステップを実行し、データベース固有のツールを使用してデータ・ディクショナリ表およびビューを作成します。

  1. 以前のゲートウェイ・リリースからアップグレードします。

    以前のリリースのゲートウェイからアップグレードする場合、適切なスクリプトを実行して古いデータ・ディクショナリ定義を削除します。

    • DB2 UDB for Linux、UnixおよびWindowsに接続する場合は、次のスクリプトを実行します。

      $ORACLE_HOME/dg4db2/admin/dg4db2_luw_drop.sql
      
    • DB2 UDB for z/OSに接続する場合は、次のスクリプトを実行します。

      $ORACLE_HOME/dg4db2/admin/dg4db2_zos_drop.sql
      
    • DB2 UDB for iSeriesに接続する場合は、次のスクリプトを実行します。

      $ORACLE_HOME/dg4db2/admin/dg4db2_as400_drop.sql
      
  2. データ・ディクショナリ表を作成します。

    適切なスクリプトを実行してデータ・ディクショナリ表を作成します。

    • DB2 UDB for Linux、UnixおよびWindowsに接続する場合は、次のスクリプトを実行します。

      $ORACLE_HOME/dg4db2/admin/dg4db2_luw_tab.sql
      
    • DB2 UDB for z/OSに接続する場合は、次のスクリプトを実行します。

      $ORACLE_HOME/dg4db2/admin/dg4db2_zos_tab.sql
      
    • DB2 UDB for iSeriesに接続する場合は、次のスクリプトを実行します。

      $ORACLE_HOME/dg4db2/admin/dg4db2_as400_tab.sql
      
  3. データ・ディクショナリ・ビューを作成します。

    適切なスクリプトを実行してデータ・ディクショナリ・ビューを作成します。

    • DB2 UDB for Linux、UnixおよびWindowsに接続する場合は、次のスクリプトを実行します。

      DB2 UDB for Linux、UnixおよびWindows V7の場合:

      $ORACLE_HOME/dg4db2/admin/dg4db2_luw_vw7.sql
      

      DB2 UDB for Linux、Unix、Windows V8およびV9の場合:

      $ORACLE_HOME/dg4db2/admin/dg4db2_luw_vw8.sql	 
      
    • DB2 UDB for z/OSに接続する場合は、次のスクリプトを実行します。

      DB2 UDB for z/OS V7 (RACFセキュリティ)の場合:

      $ORACLE_HOME/dg4db2/admin/dg4db2_zos_vw7r.sql
      

      DB2 UDB for z/OS V7 (DB2セキュリティ)の場合:

      $ORACLE_HOME/dg4db2/admin/dg4db2_zos_vw7s.sql
      

      DB2 UDB for z/OS V8 and V9 (RACFセキュリティ)の場合:

      $ORACLE_HOME/dg4db2/admin/dg4db2_zos_vw8r.sql
      

      DB2 UDB for z/OS V8 and V9 (DB2セキュリティ)の場合:

      $ORACLE_HOME/dg4db2/admin/dg4db2_zos_vw8s.sql
      
    • DB2 UDB for iSeriesに接続する場合は、次のスクリプトを実行します。

      DB2 UDB for iSeries V5.1の場合:

      $ORACLE_HOME/dg4db2/admin/dg4db2_as400_vw51.sql
      

      DB2 UDB for iSeries V5.2の場合:

      $ORACLE_HOME/dg4db2/admin/dg4db2_as400_vw52.sql
      

      DB2 UDB for iSeries V5.3以降の場合:

      $ORACLE_HOME/dg4db2/admin/dg4db2_as400_vw53.sql
      

14.5 ゲートウェイ・アクセス用のOracle Databaseの構成

ゲートウェイを使用してDB2データにアクセスする前に、Oracle Databaseを構成してOracle Netを通じたゲートウェイとの通信を使用可能にする必要があります。

Oracle Databaseを構成するには、tnsnames.oraファイルに接続記述子を追加する必要があります。デフォルトでは、このファイルの場所は$ORACLE_HOME/network/adminになります。$ORACLE_HOMEはOracle Databaseのインストール先のディレクトリです。tnsnames.oraファイルの構成にOracle Net AssistantやOracle Net Easy Configツールを使用することはできません。手動でファイルを編集する必要があります。

tnsnames.oraエントリのサンプル(tnsnames.ora.sample)は$ORACLE_HOME/dg4db2/adminディレクトリにあります。$ORACLE_HOMEはゲートウェイのインストール先のディレクトリです。

関連項目:

tnsnames.oraファイルの編集の詳細は、『Oracle Database Net Services管理者ガイド』を参照してください。

14.5.1 tnsnames.oraの構成

ゲートウェイの接続記述子を追加するには、tnsnames.oraファイルを編集します。次に、TCP/IPプロトコルを使用するOracle Netエントリの構文を示します。

connect_descriptor=
   (DESCRIPTION=
      (ADDRESS=
         (PROTOCOL=TCP)
         (HOST=host_name)
         (PORT=port_number)
      )
      (CONNECT_DATA=
         (SID=gateway_sid))
      (HS=OK))

説明:

変数 説明

connect_descriptor

データベース・リンクの作成時に指定された接続先オブジェクトの記述(dg4db2など)。

sqlnet.oraファイルで次のパラメータ設定を確認してください。

  • names.directory_path = (TNSNAMES)

ノート: sqlnet.oraファイルは、通常、$ORACLE_HOME/network/adminに格納されています。

TCP

TCP/IP接続に使用されるTCPプロトコルです。

host_name

ゲートウェイが稼働しているマシンを指定します。

port_number

ゲートウェイをリスニングしているOracle Net Listenerにより使用されるポート番号と一致させます。Oracle Net Listenerのポート番号は、Oracle Net Listenerにより使用されるlistener.oraファイルで確認できます。「listener.oraファイルのエントリの構文」を参照してください。

gateway_sid

ゲートウェイのSIDを指定し、ゲートウェイをリスニングするOracle Net Listenerのlistener.oraファイル内で指定されたSIDと一致させます。詳細は、「ゲートウェイ用のOracle Net Listenerの構成」を参照してください。

(HS=OK)

この接続記述子でOracle以外のシステムに接続することを指定します。

14.5.2 tnsnames.oraファイルの複数のリスナー用の構成

高可用性を確保するために、接続ディスクリプタ内で複数のリスナーを指定できます。

 connect_descriptor=
    (DESCRIPTION=
       (ADDRESS=
          (PROTOCOL=TCP)
          (HOST=host_name_1)
          (PORT=port_number_1)
       )
       (ADDRESS=
          (PROTOCOL=TCP)
          (HOST=host_name_2)
          (PORT=port_number_2)
       )
       (CONNECT_DATA=
          (SID=gateway_sid))
       (HS=OK))

これは、host_name_1port_number_1のリスナーが使用できない場合に、host_name_2port_number_2の2番目のリスナーが引き継ぐことを示しています。

関連項目:

tnsnames.oraファイルの編集の詳細は、『Oracle Database Net Services管理者ガイド』を参照してください。

14.6 データベース・リンクの作成

Oracle Databaseに接続されたすべてのOracleクライアントは、ゲートウェイを通じてDB2データにアクセスします。OracleクライアントとOracle Databaseは、異なるマシン上に存在できます。ゲートウェイは、Oracle Databaseからの接続のみを受け入れます。

ゲートウェイへの接続は、Oracleセッションでゲートウェイが初めて使用されるときに、データベース・リンクを介して確立されます。この場合の接続とは、Oracle Databaseとゲートウェイ間の接続を示します。接続は、Oracleセッションが終了するまで確立されたままです。別のセッションまたはユーザーが同じデータベース・リンクにアクセスし、ゲートウェイおよびDRDAデータベースに対する別個の接続を取得することも可能です。

データベース・リンクは、ゲートウェイ・セッションの継続中はアクティブです。セッション中にデータベース・リンクをクローズする場合は、ALTER SESSION文を使用します。

DRDAサーバーにアクセスするには、データベース・リンクを作成する必要があります。パブリック・データベース・リンクは、最も一般的なデータベース・リンクです。

SQL> CREATE PUBLIC DATABASE LINK dblink CONNECT TO
2  "user" IDENTIFIED BY "password" USING 'tns_name_entry';

説明:

変数 説明

dblink

完全なデータベース・リンク名。

tns_name_entry

ゲートウェイを識別するtnsnames.oraファイルのOracle Net接続記述子を指定します。

データベース・リンクの作成後に、次のようにDRDAデータベースへの接続を確認できます。

SQL> SELECT * FROM DUAL@dblink;

関連項目:

データベース・リンクの使用の詳細は、『Oracle Database管理者ガイド』を参照してください。

14.7 複数のDRDAデータベースにアクセスするためのゲートウェイの構成

複数のDRDAデータベースにアクセスするためのゲートウェイの構成作業は、単一のデータベースを対象とするゲートウェイの構成作業とほぼ同じです。構成の例では、次のことを想定しています。

  • ゲートウェイがデフォルトのSIDであるdg4db2を使用してインストールおよび構成されていること

  • ORACLE_HOME環境変数がゲートウェイのインストール先のディレクトリに設定されていること

  • ゲートウェイがdb1という1つのDRDAデータベース用に構成されていること

  • IPアドレスが204.179.79.15であるホストにdb2およびdb3という2つのDRDAデータベースが追加されること

14.7.1 複数のDRDAデータベースの例: ゲートウェイの構成

DRDAデータベースごとに1つのシステムIDを選択

DRDAデータベースごとにゲートウェイの個別のインスタンスが必要です。各インスタンスには、固有のゲートウェイ・システムID(SID)が必要です。この例では、DRDAデータベースにアクセスするインスタンスに対して次のゲートウェイSIDが選択されます。

  • dg4db22 (データベースdb2にアクセスするゲートウェイ用)

  • dg4db23(データベースdb3にアクセスするゲートウェイ用)

2つの初期化パラメータ・ファイルの作成

ゲートウェイのインスタンスごとに初期化パラメータ・ファイルを作成するため、元の初期化パラメータ・ファイル $ORACLE_HOME/dg4db2/admin/initdg4db2.oraを2回コピーします。次のように、1つのファイルにはdb2のゲートウェイSIDを含む名前を付け、もう1つのファイルにはdb3のゲートウェイSIDを含む名前を付けます。

$ cd $ORACLE_HOME/dg4db2/admin
$ cp initdg4db2.ora initdg4db22.ora
$ cp initdg4db2.ora initdg4db23.ora

ノート:

状況に応じて異なるゲートウェイ・パラメータ設定を使用するために、同じDRDAデータベースに対して複数のゲートウェイSIDを割り当てる場合も、同じ手順に従ってください。複数の初期化パラメータ・ファイルを作成し、それぞれに異なるSIDおよび異なるパラメータ設定を使用します。

14.7.2 複数のDRDAデータベースの例: Oracle Net Listenerの構成

listener.oraへのエントリの追加

Oracle Net Listener構成ファイル listener.oraに、2つの新規エントリを追加します。複数のゲートウェイ・インスタンスが同じデータベースにアクセスする場合でも、ゲートウェイ・インスタンスごとに1つのエントリが必要です。

次の例では、インストールされていた最初のゲートウェイのエントリが1番目に、新しいエントリがその後に続いて示されています。

SID_LIST_LISTENER=
(SID_LIST=
   (SID_DESC=
      (SID_NAME=dg4db2)
      (ORACLE_HOME=oracle_home_directory)
      (PROGRAM=dg4db2)
   )
   (SID_DESC=
      (SID_NAME=dg4db22)
      (ORACLE_HOME=oracle_home_directory)
      (PROGRAM=dg4db2)
   )
   (SID_DESC=
      (SID_NAME=dg4db23)
      (ORACLE_HOME=oracle_home_directory)
      (PROGRAM=dg4db2)
   )
)

ここで、oracle_home_directoryは、ゲートウェイが存在するディレクトリです。

14.7.3 複数のDRDAデータベースの例: Oracle Net Listenerの停止および起動

リスナーがすでに実行中の場合、次のようにlsnrctlコマンドを使用してリスナーを停止し、新規設定を使用して起動します。

$ lsnrctl stop
$ lsnrctl start

14.7.4 複数のデータベースの例: ゲートウェイ・アクセス用のOracle Databaseの構成

例:

14.7.4.1 複数のゲートウェイ・インスタンス用のOracle Netの構成

2つの接続記述子エントリをtnsnames.oraファイルに追加します。複数のゲートウェイ・インスタンスが同じデータベースにアクセスする場合でも、ゲートウェイ・インスタンスごとに1つのエントリが必要です。

次のDRDAの例では、最初にインストールされた元のゲートウェイ用のエントリの次に、新規ゲートウェイ・インスタンス用の2つのエントリが続いています。

old_db_using=(DESCRIPTION=
              (ADDRESS=
                (PROTOCOL=TCP)
                (PORT=port_number)
                (HOST=host_name))
                (CONNECT_DATA=
                    (SID=dg4db2))
               (HS=OK))
new_db2_using=(DESCRIPTION=
              (ADDRESS=
                (PROTOCOL=TCP)
                (PORT=port_number)
                (HOST=host_name))
                (CONNECT_DATA=
                    (SID=dg4db22))
                (HS=OK))
new_db3_using=(DESCRIPTION=
              (ADDRESS=
                (PROTOCOL=TCP)
                (PORT=port_number)
                (HOST=host_name))
                (CONNECT_DATA=
                    (SID=dg4db23))
                (HS=OK)) 

PORTの値は、ゲートウェイをリスニングしているOracle Net ListenerのTCP/IPポート番号です。この番号は、Oracle Net Listenerにより使用されるlistener.oraファイルで確認できます。HOSTの値は、ゲートウェイが稼働しているマシンの名前です。この名前も、Oracle Net Listenerにより使用されるlistener.oraファイルで確認できます。

14.7.5 複数のDRDAデータベースの例: DB2データへのアクセス

次のように入力してdg4db22ゲートウェイ用のデータベース・リンクを作成します。

SQL> CREATE PUBLIC DATABASE LINK DRDA2 CONNECT TO
  2  "user2" IDENTIFIED BY "password2" USING 'new_db2_using';

次のように入力してdg4db23ゲートウェイ用のデータベース・リンクを作成します。

SQL> CREATE PUBLIC DATABASE LINK DRDA3 CONNECT TO
  2  "user3" IDENTIFIED BY "password3" USING 'new_db3_using';

データベース・リンクの作成後に、次のように新規DRDAデータベースへの接続を確認できます。

SQL> SELECT * FROM ALL_USERS@DRDA2;
SQL> SELECT * FROM ALL_USERS@DRDA3;