ヘッダーをスキップ
Oracle Database Gateway for DRDAユーザーズ・ガイド
11gリリース1(11.1)
E05816-01
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

3 Oracle Database Gateway for DRDAの使用方法

Oracle Database Gateway for DRDAを使用する場合、対応するゲートウェイ・システムと、そのゲートウェイに関連付けられたリモートDRDAデータベースに接続します。この場合、データベース・リンクの処理方法と使用方法を理解することが重要です。データベース・リンクの詳細は、『Oracle Databaseリファレンス』に記載されています。そのドキュメントのデータベース・リンク情報を確認し、データベース・リンクの処理について理解してください。その後、この章の内容に戻り、リモートDRDAデータベースへのデータベース・リンクを設定する方法について理解してください。

この章には、次の項が含まれます。

3.1 データベース・リンクの処理

DRDAデータベースへのパスを定義するデータベース・リンクの管理を担当するのは、分散データベース・システムのデータベース管理者とアプリケーション管理者です。タスクは次のとおりです。

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

データベース・リンクを作成してリモート・データベースへのパスを定義するには、CREATE DATABASE LINK文を使用します。CONNECT TO句では、リモート・データベースでのセッションの作成時に使用するリモート・ユーザーIDおよびパスワードを指定します。USING句では、tnsnames.ora接続記述子を示します。


注意:

CONNECT TO句にユーザーIDおよびパスワードを指定しないと、Oracle DatabaseのユーザーIDおよびパスワードが使用されます。


関連項目:

詳細は、Oracle Database Gatewayのインストレーションおよび構成ガイドの第15章「セキュリティ上の考慮事項」を参照してください。

次の例では、DRDAサーバー・データベースの情報にアクセスするデータベース・リンクを作成します。

CREATE PUBLIC DATABASE LINK dblink
CONNECT TO userid IDENTIFIED BY password
USING 'tns_name_entry';

変数の意味は次のとおりです。

dblinkは、完全なデータベース・リンク名です。

user idは、リモート・データベースでのセッションの確立に使用されるユーザーIDです。このユーザーIDは、DRDAサーバーの有効なユーザーIDである必要があります。また、SQLコマンドで参照されるDRDAサーバー上の任意の表またはファイルに対する権限を持っている必要があります。ユーザーIDは、8文字以下で指定してください。

passwordは、リモート・データベースでのセッションの確立に使用されるパスワードです。パスワードは、DRDAサーバーの有効なパスワードである必要があります。パスワードは、8文字以下で指定してください。

tns_name_entryでは、ゲートウェイの識別に使用されるOracle Net接続記述子を指定します。

データベース・リンクのガイドライン

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

3.1.2 データベース・リンクの削除

データベース・リンクは、DROP DATABASE LINK文を使用して削除できます。たとえば、DBLINKというパブリック・データベース・リンクを削除するには、次の文を使用します。

DROP PUBLIC DATABASE LINK dblink;

注意:

インダウト状態の分散トランザクションを解決する必要がある場合は、データベース・リンクを削除しないでください。データベース・リンクの削除方法の詳細は、『Oracle Database管理者ガイド』を参照してください。


関連項目:

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

3.1.3 使用可能なデータベース・リンクの調査

各データベースのデータ・ディクショナリには、そのデータベースに関するすべてのデータベース・リンクの定義が格納されます。USER_DB_LINKSデータ・ディクショナリ・ビューには、定義済のデータベース・リンクが表示されます。ALL_DB_LINKSデータ・ディクショナリ・ビューには、アクセス可能なすべての(パブリックおよびプライベートの)データベース・リンクが表示されます。

3.1.4 アクティブなデータベース・リンク数の制限

ユーザー・プロセスからリモート・データベースへの接続数は、パラメータOPEN_LINKSを使用して制限できます。このパラメータにより、単一のユーザー・プロセスで単一のSQL文と同時に使用できるリモート接続の数を制御します。アクティブなデータベース・リンク数の制限方法の詳細は、『Oracle Databaseリファレンス』を参照してください。

3.2 ゲートウェイへのアクセス

ゲートウェイにアクセスするには、Oracle Databaseで次の手順を実行します。

  1. Oracle Databaseへのログイン

  2. DRDAデータベースへのデータベース・リンクの作成

  3. DRDAデータベースからのデータの取得

Oracle Databaseへのログイン

ゲートウェイにアクセスするためにOracle Databaseにログインします。

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

たとえば、次のコマンドを使用します。

CREATE PUBLIC DATABASE LINK DRDA
CONNECT TO ORADRDA IDENTIFIED BY oracle_pw
USING 'tns_name_entry'

DRDAデータベースからのデータの取得

次の問合せでは、DRDAサーバーのユーザー・プロファイルとしてORACLEという名前を使用し、SECUREライブラリのTABLEファイルを取得します。ORACLEユーザー・プロファイルは、DRDAサーバーでSECURE.TABLEファイルにアクセスするための適切な権限を保持している必要があります。

SELECT * FROM SECURE.TABLE@DRDA

次に、権限が不十分な場合に表示されるエラー・メッセージの例を示します。

ORA-1031:   insufficient privileges
DG4DRDA V11.1.0.5.0 grc=0, drc=-777 (83TC,0000), errp=ARIXO,
sqlcode=-551, sqlstate=42501, errd=FFFFFF9C,0,0,0,0,0
errmc=USER SELECT SECURE.TABLE

3.3 AS/400のファイル・メンバーへのアクセス

AS/400のファイルおよびファイル・メンバーへのアクセスを制御するのに、DRDAやゲートウェイに固有の操作は特にありません。ただし、DB2/400で使用されるネーミング規則では、ファイル・メンバー名と処理されるファイルの名前が同じであるとみなされます。たとえば、schema.tableにアクセスする場合、tableはファイル名であり、同時にアクセス対象のファイル・メンバー名であるとみなされます。

関連付けられたファイル名とは異なる名前でファイル・メンバーにアクセスするには、DB2/400が正しいファイル・メンバーを参照できるように、ファイル内にビューを作成する必要があります。

このビューを作成する方法の1つとして、コンソール・コマンドCreate Logical FileCRTLF)を発行する方法があります。この操作により、ファイル名とファイル・メンバー名の間に論理的な関連付けを作成できます。


関連項目:

詳細は、AS/400のコマンドに関するドキュメントまたはDB2/400 SQLのリファレンス・ドキュメントを参照してください。

3.4 シノニム機能の使用

Oracle Databaseのシノニム機能を使用することで、データ、場所およびネットワークに関する完全な透過性を実現できます。シノニムを定義すると、ユーザーは、基礎となる表または使用されるネットワーク・プロトコルを意識する必要がなくなります。シノニムは、すべてのOracleユーザーが使用できるパブリック・シノニムとして指定できます。シノニムは、作成したユーザーのみが使用できるプライベート・シノニムとしても定義できます。シノニム機能の詳細は、『Oracle Databaseリファレンス』を参照してください。

次の文では、ORACLEの所有権でDRDAサーバーにシステム全体で使用できるEMPファイルのシノニムを作成します。

CREATE PUBLIC SYNONYM EMP FOR ORACLE.EMP@DRDA

3.5 分散問合せの実行

Oracle Database Gatewayテクノロジにより、Oracle DatabaseとDRDAサーバー(およびOracle Gatewayが提供されている他のすべてのデータ・ストア)を結合した分散問合せを実行できます。これらの複雑な操作は、データをリクエストするユーザーに対して完全に透過的です。

分散問合せオプティマイザ(DQO)機能により、分散問合せのパフォーマンスを向上できます。DRDAサーバーの表に関する統計データは、取得後にOracle Databaseに渡されます。DQO機能は、DRDA_OPTIMIZE_QUERYパラメータにより有効化と無効化を切り替えます。「DRDA_OPTIMIZE_QUERY」を参照してください。

次の例では、Oracle Database、DB2/OS390およびDRDAサーバーのデータを結合します。

SELECT o.custname, p.projno, e.ename, sum(e.rate*p.hours)
FROM orders@DB2 o, EMP@ORACLE7 e, projects@DRDA p
WHERE o.projno = p.projno
AND p.empno = e.empno
GROUP BY o.custname, p.projno, e.ename

次のSQL文を使用したビューとシノニムの組合せにより、分散問合せのプロセスをユーザーに対して透過的なまま維持できます。

CREATE SYNONYM orders for orders@DB2;
CREATE SYNONYM PROJECTS for PROJECTS@DRDA;
CREATE VIEW details (custname,projno,ename,spend)
AS
SELECT o.custname, p.projno, e.ename, sum(e.rate*p.hours)
FROM orders o, EMP e, projects p
WHERE o.projno = p.projno
AND p.empno = e.empno
GROUP BY o.custname, p.projno, e.ename

次のSQL文では、1つのコマンドで前述の3つのデータ・ストアから情報を取得します。

SELECT * FROM DETAILS;

このコマンドの結果は次のとおりです。

CUSTNAME   PROJNO     ENAME      SPEND
---------  ---------  ---------  ---------
ABC Co.    1         Jones      400
ABC Co.    1         Smith      180
XYZ Inc.   2         Jones      400
XYZ Inc.   2         Smith      180

3.5.1 2フェーズ・コミットの処理

2フェーズ・コミット・トランザクションに完全に参加するには、サーバーでPREPARE TRANSACTION文をサポートしている必要があります。PREPARE TRANSACTION文により、すべての参加データベースが特定の作業ユニットをコミット(COMMIT)またはロールバック(ROLLBACK)する準備が整ったことが保証されます。

Oracle Databaseでは、PREPARE TRANSACTION文がサポートされます。任意の数のOracle Databaseが、分散2フェーズ・コミット・トランザクションに参加できます。PREPARE TRANSACTION文は、COMMITがアプリケーションにより明示的に発行された場合と、アプリケーションの通常の終了時に暗黙的に発行された場合に自動的に実行されます。

ゲートウェイでは、PREPARE TRANSACTION文がサポートされません。このため、ゲートウェイが分散トランザクションに参加する場合、2フェーズ・コミット・プロトコルは制限されます。ゲートウェイは、分散トランザクションの中心的なコミット・ポイント・サイトになります。ゲートウェイは、コミット/確認として構成されるため、コミット・ポイント強度の設定にかかわらず常にコミット・ポイント・サイトになります。ゲートウェイは、トランザクションに関連するすべてのOracle Databaseが正常に作業をコミットしたことを確認してから、作業ユニットをコミットします。ゲートウェイは、分散トランザクションを調整する必要があるため、1つのゲートウェイのみが2フェーズ・コミット・トランザクションに参加できます。

2フェーズ・コミット・トランザクションは、インストール中に作成されるORADRDA.ORACLE2PC表に記録されます。この表は、o2pc.sqlスクリプトの実行時に作成されます。この表の所有者は、パッケージも所有します。詳細は、現在のプラットフォームに応じたOracle Database Gatewayのインストレーションおよび構成ガイドの「DRDAゲートウェイ・パッケージのバインドにおける考慮事項」を参照してください。

3.5.2 分散DRDAトランザクション

ORACLE2PC表は、ゲートウェイ・トランザクションのステータスの記録に使用されるため、DRDAの更新処理が行われるデータベースに存在する必要があります。したがって、ゲートウェイを通じて実行されるすべての更新は、IBMデータベースに対してローカルである必要があります。


注意:

ORACLE2PC表の更新は、IBM分散トランザクションの一部にはなりません。

2フェーズ・コミット・プロセスの詳細は、『Oracle Database管理者ガイド』を参照してください。

3.6 読取り専用ゲートウェイ

読取り専用オプションにより、パフォーマンスとセキュリティが向上します。パフォーマンスがどの程度向上するかは、実際の構成とパラメータの選択に応じて異なります。ゲートウェイ初期化パラメータDRDA_READ_ONLYにより、このモードでゲートウェイを有効化するかどうかを制御します。

読取り専用オプションを有効化すると、問合せ(SELECT文)のみがゲートウェイで許可されます。ゲートウェイにより更新を許可するかどうかを制御する機能は、無効化されます。これらの機能には、INSERTUPDATEDELETEおよびストアド・プロシージャのサポート(パススルーSQLおよびDB2ストアド・プロシージャ)が含まれます。DRDAサーバーのレコードを変更しようとする文は、拒否されます。

DRDA_READ_ONLYパラメータの設定は、頻繁に切り替えないことをお薦めします。更新機能とDRDA_READ_ONLY機能の両方を必要とする場合は、異なる読取り専用設定で個別にゲートウェイのインスタンスを2つ作成してください。

3.7 異機種環境でのレプリケート

Oracle Database Gateway for DRDAには、エンタープライズ全体のOracleおよびOracle以外のデータをレプリケートするための多くのオプションがあります。

Oracle Database 11gトリガー

Oracle Databaseが更新された場合、Oracle Database 11gトリガーの使用により、OracleおよびOracle以外のデータの同期コピーが自動的に維持されます。

Oracleスナップショット

Oracle Database Gateway for DRDAでは、Oracleスナップショット機能を使用してOracle以外のデータをOracle Databaseに自動的にレプリケートできます。Oracleスナップショットの完全リフレッシュ機能の使用により、Oracle以外のデータの完全なコピーまたはそのサブセットをユーザー定義による間隔でOracle Databaseに伝播できます。

3.8 Oracle Database 11gからDRDAサーバーへのデータ・コピー

COPYコマンドにより、Oracle DatabaseからDRDAサーバーにデータをコピーできます。Oracle SQLコマンドのINSERTはサポートされません。たとえば、次のようにINSERTコマンドを使用します。

INSERT INTO DRDA_table SELECT * FROM local_table

すると、次のメッセージが表示されます。

ORA-2025: All tables in the SQL statement must be at the remote database

Oracle DatabaseからDRDAサーバーにデータをコピーするには、次のコマンドを使用します。

COPY FROM username/password@connect_identifier -
INSERT destination_table -
USING query

たとえば、ローカルのOracle EMP表からすべての行を選択してDRDAサーバーのEMP表に挿入し、トランザクションをコミットするには、次のコマンドを使用します。

COPY FROM scott/tiger@ORACLE -
INSERT scott.EMP@DRDA -
USING SELECT * FROM EMP

SQL*PlusのCOPYコマンドでは、APPENDCREATEINSERTおよびREPLACEコマンドがサポートされます。ただし、INSERTは、DRDAサーバーへのコピー時にサポートされる唯一のコマンドです。COPYコマンドの詳細は、『SQL*Plusユーザーズ・ガイドおよびリファレンス』を参照してください。

3.9 DRDAサーバーからOracle Database 11gへのデータ・コピー

CREATE TABLEコマンドにより、DRDAサーバーからOracle Databaseにデータをコピーできます。Oracle Databaseに表を作成してDRDAサーバーの表の行を挿入するには、次のコマンドを使用します。

CREATE TABLE table_name
AS query

次の例では、ローカルのOracle DatabaseにEMP表を作成し、DRDAサーバーのEMP表の行を挿入します。

CREATE TABLE EMP
AS SELECT * FROM scott.EMP@DRDA

別の方法として、SQL*PlusのCOPYコマンドを使用してDRDAサーバーからOracle Databaseにデータをコピーできます。COPYコマンドの詳細は、『SQL*Plusユーザーズ・ガイドおよびリファレンス』を参照してください。

3.10 SQL文のトレース

ゲートウェイを通じて発行されるSQL文は、DRDAデータベースに到達する前に変更されることがあります。これらの変更の目的は、ゲートウェイに受入れ可能な形式にすることや、Oracle SQLとDRDAサーバーSQLとの互換性を確保することにあります。Oracle Databaseとゲートウェイでは、状況に応じて文が変更されます。

様々な理由から、ゲートウェイで文が正しく変更されているかどうか、またはパフォーマンスを向上するために文をリライトできるかどうかを評価することがあります。SQLトレースは、Oracle DatabaseまたはゲートウェイによってSQL文に加えられた変更を表示できる機能です。

SQLトレースにより、ゲートウェイのパフォーマンスは低下します。トレース機能は、アプリケーションのテストおよびデバッグ時にのみ使用します。アプリケーションが本番環境で実行されているときにSQLトレースを有効化しないでください。SQLトレースの有効化の詳細は、第5章「エラー・メッセージ、診断およびレポート」「SQLトレースおよびゲートウェイ」を参照してください。