13 DRDAサーバーの構成

この項では、DRDAサーバーを構成するために実行する必要のあるタスクについて説明します。サポートされるオペレーティング・システムごとに、個別に説明します。所定のオペレーティング・システムおよびデータベースの使用経験が必要です。

リモートDRDAサーバーを構成するステップは、次のDRDAサーバーに適用されます。

  • DB2 UDB for z/OS

  • DB2 UDB for iSeries

  • DB2 UDB for Linux、UnixおよびWindows

DRDAデータベースを構成してゲートウェイによるアクセスを可能にするには、DRDAデータベースに対する操作と、ホスト・オペレーティング・システムの特定のコンポーネントに対する操作が必要です。ホスト・システムにOracleソフトウェアがインストールされない場合でも、ホスト・システムおよびDRDAデータベースに対するアクセスと、それらに関する知識が構成時に必要になります。ホスト・システムおよびDRDAデータベースの詳細は、ベンダーのドキュメントを参照してください。

トピック:

13.1 DB2 UDB for z/OS用のDRDAサーバーの構成

次のタスクを実行して、z/OSシステム上でDB2が稼働するDRDAサーバーを構成します。

  1. パッケージを所有するユーザーIDを定義します。

    特定のDRDAサーバーのゲートウェイを初めて使用するときに、Oracleの提供するパッケージがDRDAサーバーに自動的にバインドされます。使用するユーザーIDとパスワード(現在のOracleユーザーとして暗黙的に示されるユーザー、またはCREATE DATABASE LINKコマンドで明示的に定義されたユーザー)には、DRDAサーバーでパッケージを作成するための適切な権限が付与されている必要があります。このユーザーに必要な最小権限は次のとおりです。

    • BINDCOPYおよびEXECUTEのパッケージ権限。たとえば、次のようにします。

      GRANT BIND    ON PACKAGE oraclegtw.* TO userid
      GRANT COPY    ON PACKAGE oraclegtw.* TO userid
      GRANT EXECUTE ON PACKAGE oraclegtw.* TO PUBLIC
      
    • CREATE INのコレクション権限。たとえば、次のようにします。

      GRANT CREATE IN COLLECTION oraclegtw TO userid
      
    • BINDADDおよびBINDAGENTのシステム権限。たとえば、次のようにします。

      GRANT BINDADD   TO userid
      GRANT BINDAGENT TO userid
      
    • CREATETABのデータベース権限。たとえば、次のようにします。

      GRANT CREATETAB ON DATABASE database TO userid
      

    必要に応じて、DRDAゲートウェイのパッケージを手動でバインドすることもできます。DB2 UDB for z/OS用のパッケージを手動でバインドする方法の詳細は、「DRDAゲートウェイ・パッケージの手動バインド」を参照してください。

    パッケージの所有者になるユーザーIDを選択して、このユーザーIDがDB2とOS/390 (MVS)の両方に定義されていることを確認します。

    このユーザーIDには、SYSIBM.SYSPACKSTMT表に対するSELECT権限が付与されている必要があります。

  2. リカバリ・ユーザーIDを定義します。

    ゲートウェイの構成時に、リカバリ・ユーザーIDとパスワードがゲートウェイ初期化ファイルでHS_FDS_RECOVERY_ACCOUNTパラメータとHS_FDS_RECOVERY_PWDパラメータを使用して指定されます。分散トランザクションが失敗した場合は、これらのパラメータで定義されたユーザーIDとパスワードを使用して、リカバリ・プロセスがリモート・データベースに接続します。このユーザーIDには、パッケージに対する実行権限が付与されている必要があり、DRDAデータベースで定義されている必要があります。ユーザーIDがHS_FDS_RECOVERY_ACCOUNTで指定されていないときに、分散トランザクションがインダウトになると、ゲートウェイはRECOVERのユーザーIDに接続しようとします。

    リカバリに使用するユーザーIDとパスワードを決定します。

    HS_TRANSACTION_LOG表は、リカバリ・ユーザーと同じスキーマで作成する必要があります。

    リカバリ・ユーザーIDには、SYSIBM.SYSPACKSTMT表に対するSELECT権限が付与されている必要があります。

  3. DB2インスタンス用のDRDAのロケーション名を確認します。

    ゲートウェイ・パラメータとして、DRDAのロケーション名が必要です。ロケーション名を確認するには、DB2 SPUFIセッションで次のSQL問合せを実行します。

    SELECT CURRENT SERVER FROM any_table 
    

    any_table は、1つ以上の行が含まれる有効な表です。

    この問合せで戻された値が空白またはNULLの場合、DRDAのロケーション名は確定していません。システム管理者に連絡して、インスタンスのロケーション名を設定してください。

  4. ゲートウェイ用のDB2分散データ機能を構成します。

    DB2の分散データ機能(DDF)は、DRDAとDRDA以外のすべての分散データベース操作を管理するDB2のコンポーネントです。

    現在のサイトでDB2の分散操作を使用している場合、通常は、ゲートウェイを通じてアクセスする予定のDB2インスタンス上でDDFが稼働しています。DDFが稼働していない場合、適切なDB2のドキュメントに従ってDDFを構成および起動する必要があります。

    DB2インスタンス上でDDFが稼働していない場合でも、状況によってはDDFの通信データベース(CDB)表を変更し、ゲートウェイからのDRDAセッションの認可処理を指定する必要があります。この作業は、DB2 SPUFIユーティリティなどのユーティリティを使用して、適切に権限付与されたユーザーにより実行できます。CDB表を変更する場合、変更を反映するにはDDFを停止してから再起動する必要があります。追加のCDB表およびセキュリティの情報は、「セキュリティの考慮事項」を参照してください。

  5. オプションのステップ: z/OS上のDB2にOracle Date Exitをインストールします

    Oracleが提供するDB2 Date Exitを使用すると、Oracleのネイティブ構文を使用して日付文字列を指定できるようになります。Exitのインストールには、アセンブラ・ソースとJCLのアップロード、JCLのカスタマイズ、Date Exitをアセンブルしてインストールするジョブの実行が必要です。次のステップを実行して、Oracle Date Exitをインストールします。

    1. パラメータDSORG=PORECFM=FBLRECL=80およびBLKSIZE=6160を使用して、パーティション化されたデータセットを割り当てます。たとえば、

        userid.SRCLIB
      
    2. 次のファイルを$ORACLE_HOME/dg4db2/adminから前の手順で割り当てたPDSに次のPDSメンバーとしてASCIIモードでFTP送信します。

        dg4db2_zos_dta.asm  ->  DSNXVDTA
        dg4db2_zos_dta.jcl  ->  ORAXVDTA
        dg4db2_zos_dtx.asm  ->  DSNXVDTX
        dg4db2_zos_dtx.jcl  ->  ORAXVDTX
      
    3. ORA* JCLを編集して、指示に従ってJCLを更新します。更新後に、JCLを発行してExitをアセンブル、リンクおよびインストールします。

13.2 DB2 UDB for iSeries用のDRDAサーバーの構成

次のステップを実行するには、DB2 UDB for iSeriesおよびAS/400の使用経験が必要です。

  1. パッケージを所有するユーザーIDを定義します。

    特定のDRDAサーバーのゲートウェイを初めて使用するときに、Oracleの提供するパッケージが自動的にDRDAサーバーにバインドされます。使用するユーザーIDとパスワード(現在のOracleユーザーとして暗黙的に示されるユーザーか、 CREATE DATABASE LINKコマンドで明示的に定義されたユーザー)には、DRDAサーバーでパッケージを作成するための適切な権限が付与されている必要があります。このユーザーに必要な最小権限は次のとおりです。

    • CRTSQLPKGコマンドに対する使用権限:

    • パッケージが作成されるライブラリに対する変更権限

    パッケージの所有者になるユーザーIDを選択して、そのユーザーIDがDB2 UDB for iSeriesおよびAS/400で定義されていることを確認します。

    このユーザーIDには、QSYS2.SYSPACKAGE表に対するSELECT権限が付与されている必要があります。

  2. リカバリ・ユーザーIDを定義します。

    ゲートウェイの構成時に、リカバリ・ユーザーIDとパスワードがゲートウェイ初期化ファイルでHS_FDS_RECOVERY_ACCOUNTパラメータとHS_FDS_RECOVERY_PWDパラメータを使用して指定されます。分散トランザクションが失敗した場合は、これらのパラメータで定義されたユーザーIDとパスワードを使用して、リカバリ・プロセスがリモート・データベースに接続します。このユーザーIDには、パッケージに対する実行権限が付与されている必要があり、DRDAデータベースに定義されている必要があります。ユーザーIDがHS_FDS_RECOVERY_ACCOUNTで指定されていないときに、分散トランザクションがインダウトになると、ゲートウェイはRECOVERのユーザーIDに接続しようとします。

    リカバリに使用するユーザーIDとパスワードを決定します。

    HS_TRANSACTION_LOG表は、リカバリ・ユーザーと同じスキーマで作成する必要があります。

    このリカバリ・ユーザーIDには、QSYS2.SYSPACKAGE表に対するSELECT権限が付与されている必要があります。

  3. DB2 UDB for iSeriesインスタンス用のDRDAのロケーション名を確認します

    ゲートウェイ・パラメータとして、DRDAのロケーション名が必要です。ロケーション名を確認するには、STRSQLセッションで次のSQL問合せを実行します。システムでSQLを使用できない場合、AS/400コマンドのDSPRDBDIREを使用してLOCAL DRDAサーバーを識別します。

    SELECT CURRENT SERVER FROM any_table
     

    any_table は、1つ以上の行が含まれる有効な表です。

    この問合せで戻された値が空白またはNULLの場合、DRDAのロケーション名は確定していません。システム管理者に連絡して、インスタンスのロケーション名を設定してください。

13.3 DB2 UDB for Linux、UnixおよびWindows用のDRDAサーバーの構成

次に示すステップを実行するには、DB2 UDB for Linux、UnixおよびWindowsの使用経験、DB2 UDB for Linux、UnixおよびWindowsの通信サブシステムの構成、およびホストのシステム管理ツールが必要です。

  1. パッケージを所有するユーザーIDを定義します。

    特定のDRDAサーバーのゲートウェイを初めて使用するときに、Oracleの提供するパッケージがDRDAサーバーに自動的にバインドされます。使用するユーザーIDとパスワード(現在のOracleユーザーとして暗黙的に示されるユーザー、またはCREATE DATABASE LINKコマンドで明示的に定義されたユーザー)には、DRDAサーバーでパッケージを作成するための適切な権限が付与されている必要があります。このユーザーに必要な最小権限は次のとおりです。

    • BINDおよびEXECUTEのパッケージ権限。たとえば、次のようにします。

      GRANT BIND    ON PACKAGE oraclegtw.* TO userid
      GRANT EXECUTE ON PACKAGE oraclegtw.* TO PUBLIC
      
    • CREATEINのスキーマ権限。たとえば、次のようにします。

      GRANT CREATEIN ON SCHEMA otgdb2 TO userid
      GRANT CREATEIN ON SCHEMA oraclegtw TO userid
      
    • CONNECTBINDADDおよびCREATETABのデータベース権限。たとえば、次のようにします。

      GRANT CONNECT   ON DATABASE TO userid
      GRANT BINDADD   ON DATABASE TO userid
      GRANT CREATETAB ON DATABASE TO userid
      

    必要に応じて、DRDAゲートウェイのパッケージを手動でバインドすることもできます。DB2 UDB for Linux、UnixおよびWindows用のパッケージを手動でバインドする方法の詳細は、「DRDAゲートウェイ・パッケージの手動バインド」を参照してください。

    パッケージの所有者になるユーザーIDを選択して、このユーザーIDがDB2インスタンスIDとオペレーティング・システムの両方で定義されていることを確認します。

    このユーザーIDには、SYSIBM.SYSPLAN表に対するSELECT権限が付与されている必要があります。

  2. リカバリ・ユーザーIDを定義します。

    ゲートウェイの構成時に、リカバリ・ユーザーIDとパスワードがゲートウェイ初期化ファイルでHS_FDS_RECOVERY_ACCOUNTパラメータとHS_FDS_RECOVERY_PWDパラメータを使用して指定されます。分散トランザクションが失敗した場合は、これらのパラメータで定義されたユーザーIDとパスワードを使用して、リカバリ・プロセスがリモート・データベースに接続します。このユーザーIDには、パッケージに対する実行権限が付与されている必要があり、DRDAデータベースに定義されている必要があります。ユーザーIDがHS_FDS_RECOVERY_ACCOUNTで指定されていないときに、分散トランザクションがインダウトになると、ゲートウェイはRECOVERのユーザーIDに接続しようとします。

    リカバリに使用するユーザーIDとパスワードを決定します。

    HS_TRANSACTION_LOG表は、リカバリ・ユーザーと同じスキーマで作成する必要があります。

    リカバリ・ユーザーIDには、SYSIBM.SYSPLAN表に対するSELECT権限が付与されている必要があります。

  3. DB2 UDB for Linux、UnixおよびWindowsインスタンス用のDRDAのロケーション名を確認します

    ゲートウェイ・パラメータとして、DRDAのロケーション名が必要です。ロケーション名を確認するには、DB2 CLIセッションで次のSQL問合せを実行します。

    SELECT CURRENT SERVER FROM any_table
    

    any_table は、1つ以上の行が含まれる有効な表です。

    この問合せで戻された値が空白またはNULLの場合、DRDAのロケーション名は確定していません。システム管理者に連絡して、インスタンスのロケーション名を設定してください。

13.4 DRDAゲートウェイ・パッケージの手動バインド

ゲートウェイは複数のDB2パッケージを使用します。通常、それらのパッケージは、ゲートウェイがDB2インスタンスに初めて接続したときにアップロードおよびバインドされます。環境によっては、ユーザーIDにバインドの実行に必要な権限が付与されていないことや、ゲートウェイにバインドの実行を許可するのではなくパッケージを手動でバインドするほうが望ましいことがあります。

このような場合には、手動バインド向けに事前定義されたパッケージのセットが用意されています。こうしたパッケージには、特定のゲートウェイ初期化パラメータに設定値を設定する際に順守する必要のあるいくつかの制限事項があります。そうしていないと、ゲートウェイは自動的にパッケージを再バインドしようとします。

この項の内容は次のとおりです。

13.4.1 DB2 UDB for z/OS用パッケージの手動バインド

DB2 UDB for z/OS用パッケージを手動でバインドするには、次のステップを実行します。

  1. パラメータDSORG=PSRECFM=FBLRECL=80およびBLKSIZE=3120を使用して、z/OSで順編成のデータセットを割り当てます。たとえば、
    userid.DBRMFILE.XMIT
    
  2. パラメータDSORG=PORECFM=FBLRECL=80およびBLKSIZE=6160を使用して、パーティション化されたデータセットを割り当てます。たとえば、
    userid.TG4DRDA.CNTL
    
  3. 次のファイルを前の手順で割り当てた順次編成のデータセットにBINARYモードでFTP送信します。
    $ORACLE_HOME/dg4db2/admin/dg4db2_zos_dbrm.xmit
    

    PUTコマンドを使用して、順次編成のデータセットのコンテンツを置換します。

  4. 次のファイルを前の手順で割り当てたPDSにASCIIモードでFTP送信します。
    $ORACLE_HOME/dg4db2/admin/dg4db2_zos_bind.jcl
    

    PUTコマンドを使用して、PDSにメンバー名BINDとしてファイルを配置します。

  5. ISPF (オプション6)のTSOコマンド・オプションを使用して、RECEIVEコマンドを発行します。
    RECEIVE INDS('userid.DBRMFILE.XMIT')
    

    RECEIVEコマンドへのパラメータとしてDA(userid.DDODBC.DBRMLIB)を指定します。これにより、xmitファイルが解凍され、指定したPDS名が作成されます。

  6. BIND JCL (userid.TG4DRDA.CNTL(BIND))を編集して、指示に従ってJCLを更新します。更新後、JCLを発行して、パッケージの実際のバインドとパッケージに対する実行権限の付与を実行します。

これらのパッケージをゲートウェイで使用するために、次の初期化パラメータをゲートウェイ初期化ファイルで設定してください。

  • HS_OPEN_CURSORS=200

  • HS_FDS_PACKAGE_COLLID=NULLID

13.4.2 DB2 UDB for Linux、UnixおよびWindows用パッケージの手動バインド

DB2 UDB for Linux、UNIXおよびWindows用のパッケージを手動でバインドするには、次のステップを実行します。

  1. 次のファイルを$ORACLE_HOME/dg4db2/adminディレクトリからDB2インスタンスを実行しているホストにコピーします。
     DDOC510A.bnd
     DDOC510B.bnd
     DDOC510C.bnd
     DDON510A.bnd
     DDON510B.bnd
     DDON510C.bnd
     DDOR510A.bnd
     DDOR510B.bnd
     DDOR510C.bnd
     DDOS510A.bnd
     DDOS510B.bnd
     DDOS510C.bnd
     DDOU510A.bnd
     DDOU510B.bnd
     DDOU510C.bnd
     dg4db2_luw_pkglist.lst
    

    FTP経由でコピーする場合、末尾が.bndのファイルはBINARYモードで転送する必要があり、末尾が.lstのファイルはASCIIモードで転送する必要があります。

  2. DB2インスタンスに接続して、バインド・コマンドを発行します。たとえば、
    $ db2 'connect to <database_name> user <userid> using <password>'
    $ db2 'bind @dg4db2_luw_pkglist.lst grant public'
    

これらのパッケージをゲートウェイで使用するには、次の初期化パラメータをゲートウェイ初期化ファイルで設定します。

  • HS_OPEN_CURSORS=200

  • HS_FDS_PACKAGE_COLLID=NULLID