11 Oracle Database Gateway for ODBCの構成

ゲートウェイおよびOracle以外のシステムに対応するODBCドライバのインストール後、次のタスクを実行してOracle Database Gateway for ODBCを構成します。

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

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

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

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

  5. ゲートウェイ初期化パラメータ値の暗号化

  6. 複数のODBCデータソースにアクセスするためのゲートウェイの構成

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

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

  1. 初期化パラメータ・ファイルの作成
  2. 初期化パラメータ値の設定

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

Oracle Database Gateway for ODBC用に、初期化ファイルを作成する必要があります。Oracleには、サンプルの初期化ファイルinitdg4odbc.oraが付属します。サンプル・ファイルは、$ORACLE_HOME/hs/adminディレクトリに格納されています。

ODBCゲートウェイ用の初期化ファイルを作成するには、サンプルの初期化ファイルをコピーして名前をinitsid.oraに変更します。sidは、ゲートウェイの接続先になるOracle以外のシステムのインスタンスで使用されるシステム識別子(SID)です。

ゲートウェイ・システム識別子(SID)は、ゲートウェイ・インスタンスを識別する英数字の文字列です。アクセスするODBCソースごとに、1つのゲートウェイ・インスタンスが(したがって1つのゲートウェイSIDが)必要です。

2つのODBCソースにアクセスする場合は、ゲートウェイのインスタンスごとに1つずつ、合計2つのゲートウェイSIDが必要です。ODBCソースが1つのみ存在し、そのアクセスに使用するゲートウェイ・パラメータ設定のセットを状況に応じて使い分ける場合、単一のODBCソースに対して複数のゲートウェイSIDが必要です。SIDは、初期化パラメータ・ファイルのファイル名の一部として使用されます。

初期化パラメータ値の設定

初期化ファイルの作成後に、初期化パラメータの値を設定する必要があります。複数の初期化パラメータを使用して、ゲートウェイの動作を変更できます。HS_FDS_CONNECT_INFOおよびthe HS_FDS_SHAREABLE_NAME初期化パラメータを設定する必要があります。その他の初期化パラメータにはデフォルト値があるか、オプションになります。デフォルト値を使用してオプションのパラメータを省略できます。また、インストールに合わせた値でパラメータを指定できます。設定可能な初期化パラメータの完全なリストは、「初期化パラメータ」を参照してください。初期化パラメータに加えた変更は、次のゲートウェイ・セッションまで反映されません。

HS_FDS_CONNECT_INFO初期化パラメータでは、Oracle以外のシステムに接続するのに必要な情報を指定します。HS_FDS_CONNECT_INFOは、次のように設定します。

HS_FDS_CONNECT_INFO=dsn_value

dsn_valueodbc.ini ファイルに構成されているデータソース名です

HS_FDS_SHAREABLE_NAME初期化パラメータでは、ODBCドライバ・マネージャのフルパスを指定します。HS_FDS_SHAREABLE_NAMEは次のように設定します。

HS_FDS_SHAREABLE_NAME=full_path_of_odbc_driver

ここで、full_path_of_odbc_driverは、ODBCドライバ・マネージャのフルパスです。

注意:

デフォルト値をそのまま使用するか、変更するかを決定する前に、「初期化パラメータ」ですべての初期化パラメータの詳細を参照してください。

例: 初期化パラメータ値の設定

次に、DataDirect Technologies社のSQL Server ODBCドライバを使用するodbc.iniファイルの例を示します。ODBCドライバは、$ODBCHOME(/opt/odbc520ディレクトリ)にインストールされます。

[ODBC Data Sources]
SQLServerWP=DataDirect 5.20 SQL Server Wire Protocol

[SQLServerWP]
Driver=/opt/odbc520/lib/ivmsss18.so
Description=DataDirect 5.20 SQL Server Wire Protocol
Database=oratst
LogonID=TKHOUSER
Password=TKHOUSER
Address=sqlserver-pc,1433
QuotedId=Yes
AnsiNPW=No

[ODBC]
Trace=0
TraceFile=/opt/odbc520/odbctrace.out
TraceDll=/opt/odbc520/lib/odbctrac.so
InstallDir=/opt/odb520
ConversionTableLocation=/opt/odbc520/tables
UseCursorLib=0

Gateway for ODBCを、このドライバを使用するように構成するには、initsid.oraに次の行が必要です。

HS_FDS_CONNECT_INFO=SQLServerWP
HS_FDS_SHAREABLE_NAME=/opt/odbc520/lib/libodbc.so
set ODBCINI=/opt/odbc/odbc.ini

ODBCドライバの使用によりいくつかの環境変数を設定する必要がある場合、それらの変数は、初期化ファイルに設定するか、環境に設定することができます。

HS_FDS_CONNECT_INFO初期化パラメータ値は、odbc.iniファイルのODBCデータソース名と一致する必要があります。

注意:

ODBCドライバで引用識別子または区切り識別子がサポートされる場合、それを有効化する必要があります。

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

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

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

ゲートウェイ用の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/hs/adminディレクトリにあります。$ORACLE_HOMEはゲートウェイのインストール先のディレクトリです。

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ファイルにエントリを追加します。

注意:

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

Linuxの場合:

SID_LIST_LISTENER=
   (SID_LIST=
      (SID_DESC= 
         (SID_NAME=gateway_sid)
         (ORACLE_HOME=oracle_home_directory)
         (PROGRAM=dg4odbc)
         (ENVS=LD_LIBRARY_PATH=odbc_library_dir:oracle_home_directory/lib)
      )
   )

説明:

変数 説明

gateway_sid

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

oracle_home_directory

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

odbc_library_dir

ODBCドライバのライブラリ・パスを指定します。

dg4odbc

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

既存のOracle Net Listenerがすでに存在する場合、既存のlistener.oraファイルのSID_LISTに次の構文を追加します。

Linuxの場合:

SID_LIST_LISTENER=
(SID_LIST= 
   (SID_DESC=.
     .
   )
   (SID_DESC=.
     .
   )
   (SID_DESC=
      (SID_NAME=gateway_sid)
      (ORACLE_HOME=oracle_home_directory)
      (PROGRAM=dg4odbc)
(ENVS=LD_LIBRARY_PATH=odbc_library_dir:oracle_home_directory/lib)
   )
)

関連項目:

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

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

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

  1. PATH環境変数を$ORACLE_HOME/binに設定します。$ORACLE_HOMEはゲートウェイのインストール先のディレクトリです。

    たとえば、Linuxプラットフォームで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
    

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

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

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

    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のステータス確認による出力の一部です。この例で、dg4odbcはSIDです。

.
.
.
Services Summary...
Service "dg4odbc" has 1 instance(s).
  Instance "dg4odbc", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully

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

ゲートウェイを使用してODBCデータソースにアクセスする前に、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ツールを使用することはできません。手動でファイルを編集する必要があります。

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

関連項目:

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

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

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

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以外のシステムに接続することを指定します。

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管理者ガイド』を参照してください。

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

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

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

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

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

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接続記述子を指定します。

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

SQL> SELECT * FROM DUAL@dblink;

関連項目:

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

ゲートウェイ初期化パラメータ値の暗号化

ゲートウェイでは、ユーザーIDとパスワードを使用してリモート・データベースの情報にアクセスします。ユーザーIDおよびパスワードは、リソース・リカバリなどの機能を処理するために、ゲートウェイ初期化ファイルで定義される場合があります。セキュリティを意識した現在の環境では、初期化ファイルでアクセス可能なプレーン・テキスト・パスワードは、セキュアではないとみなされます。セキュリティを向上するために、異機種間サービスの一部としてdg4pwd暗号化ユーティリティが追加されました。このユーティリティには、このゲートウェイからアクセスできます。機密値を含む初期化パラメータは、暗号化された形式で格納できます。

関連項目:

このユーティリティの使用方法の詳細は、『Oracle Database Heterogeneous Connectivityユーザーズ・ガイド』を参照してください。

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

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

  • ゲートウェイがdg4odbcというSIDを使用してインストールおよび構成されていること。

  • ゲートウェイがdsn1という1つのODBCデータソースにアクセスするよう構成されていること。

  • dsn2およびdsn3という2つのODBCデータソースが追加されること(dsn2およびdsn3はodbc.iniファイルに構成されたデータソース名)。

複数のODBCデータソースの例: ゲートウェイの構成

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

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

  • dg4odbc2(データソースdsn2にアクセスするゲートウェイ用)。

  • dg4odbc3(データソースdsn3にアクセスするゲートウェイ用)。

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

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

$ cd ORACLE_HOME/hs/admin
$ cp initdg4odbc.ora initdg4odbc2.ora
$ cp initdg4odbc.ora initdg4odbc3.ora

次のように各新規ファイルのHS_FDS_CONNECT_INFOパラメータの値を変更します。

initdg4odbc2.oraでは、次のように入力します。

HS_FDS_CONNECT_INFO=dsn2

initdg4odbc3.oraでは、次のように入力します。

HS_FDS_CONNECT_INFO=dsn3

注意:

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

複数のODBCデータソースの例: Oracle Net Listenerの構成

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

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

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

SID_LIST_LISTENER=
(SID_LIST=
   (SID_DESC=
      (SID_NAME=dg4odbc)
      (ORACLE_HOME=oracle_home_directory)
      (PROGRAM=dg4odbc)
(ENVS=LD_LIBRARY_PATH=odbc_library_dir:oracle_home_directory/lib)
   )
   (SID_DESC=
      (SID_NAME=dg4odbc2)
      (ORACLE_HOME=oracle_home_directory)
      (PROGRAM=dg4odbc)
(ENVS=LD_LIBRARY_PATH=odbc_library_dir:oracle_home_directory/lib)
   )
   (SID_DESC=
      (SID_NAME=dg4odbc3)
      (ORACLE_HOME=oracle_home_directory)
      (PROGRAM=dg4odbc)
(ENVS=LD_LIBRARY_PATH=odbc_library_dir:oracle_home_directory/lib)
   )
)

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

複数のODBCデータソースの例: Oracle Net Listenerの停止および起動

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

$ lsnrctl stop
$ lsnrctl start

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

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

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

old_dsn_using=(DESCRIPTION=
              (ADDRESS=
                (PROTOCOL=TCP)
                (PORT=port_number)
                (HOST=host_name))
                (CONNECT_DATA=
                    (SID=dg4odbc))
               (HS=OK))
new_dsn2_using=(DESCRIPTION=
              (ADDRESS=
                (PROTOCOL=TCP)
                (PORT=port_number)
                (HOST=host_name))
                (CONNECT_DATA=
                    (SID=dg4odbc2))
                (HS=OK))
new_dsn3_using=(DESCRIPTION=
              (ADDRESS=
                (PROTOCOL=TCP)
                (PORT=port_number)
                (HOST=host_name))
                (CONNECT_DATA=
                    (SID=dg4odbc3))
                (HS=OK)) 

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

複数のODBCデータソースの例: ODBCデータへのアクセス

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

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

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

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

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

SQL> SELECT * FROM ALL_USERS@ODBC2;
SQL> SELECT * FROM ALL_USERS@ODBC3;