| Oracle9i Heterogeneous Connectivity管理者ガイド リリース2(9.2) 部品番号B13816-01 |
|
この章の内容は、次のとおりです。
図2-1に、Oracleの異機種間接続プロセスのアーキテクチャの概要を示します。
Oracleデータベース・サーバーの異機種間サービス・コンポーネントは異機種間サービス・エージェント・プロセスと対話し、異機種間サービス・エージェント・プロセスはOracle以外のシステムと対話します。コードは、概念上次の3つの部分に分けることができます。
異機種間サービス・エージェントとは、OracleサーバーでOracle以外のシステムへの接続に使用されるプロセスです。このようにOracle以外のシステムにアクセスするエージェント・プロセスを、ゲートウェイと呼びます。すべてのゲートウェイへのアクセスはOracleサーバーの異機種間サービス・コンポーネントを経由し、すべてのゲートウェイに同じエージェント汎用コードが含まれます。各ゲートウェイには異なるドライバがリンクされており、異機種間サービスのApplication Program Interface(API)がOracle以外のシステムのクライアントAPIにマップされます。
エージェント・プロセスは2つのコンポーネントで構成されます。一方はエージェント汎用コード、他方はOracle以外のシステム固有のドライバです。エージェントは、主としてOracleデータベース・サーバーをサード・パーティ・コードから分離するために存在します。プロセスがOracle以外のシステムにアクセスするには、そのシステムのクライアント・ライブラリをリンクする必要があります。エージェント・プロセスがなければ、これらのライブラリをOracleデータベースに直接リンクする必要があり、このコードに問題があるとOracleサーバーが停止する可能性があります。エージェント・プロセスによりOracleサーバーがサード・パーティ・コードの問題から分離され、致命的エラーが発生した場合にもエージェント・プロセスのみが終了することになります。
エージェントは、次のいずれかに常駐できます。
通常、エージェント・プロセスは、ユーザー・セッションでデータベース・リンクを介してOracle以外のシステムに初めてアクセスするときに起動されます。 これらの接続には、Oracleのリモート・データ・アクセス・ソフトウェアであるOracle Net Servicesが使用されます。Oracle Net Servicesでは、クライアント/サーバー通信とサーバー間通信の両方が可能です。エージェント・プロセスは、ユーザー・セッションが切断されるか、データベース・リンクが明示的にクローズされるまで続行されます。
マルチスレッド・エージェントの動作は少し異なります。この種のエージェントは、Oracle Net Servicesにより自動的に起動されるかわりに、データベース管理者が明示的に起動および停止する必要があります。
| 関連項目:
マルチスレッド・エージェントおよびその使用方法の詳細は、第5章「マルチスレッド・エージェント」を参照してください。 |
異機種間サービス・エージェントには、次の2つのタイプがあります。
Oracle Transparent Gatewayは、Oracle以外の特定システムへのアクセス用に設計されたゲートウェイです。オラクル社は市販されているOracle以外のシステムにアクセスするゲートウェイを提供しており、その多くはいくつかのプラットフォームに移植されています。たとえば、Solaris上のOracle Transparent Gateway for Sybaseは、Sybaseデータベース・システムへのアクセス用に設計されたゲートウェイのSolarisポートです。
Oracle Transparent Gatewayを使用すると、データの位置や格納方法を知らなくても、Oracleデータベース・サーバーを使用して、分散データベース・システム上のあらゆる場所にあるデータにアクセスできます。Oracleデータベース・サーバーから問合せ結果が戻される場合は、取得元のデータ・ストアがすべてOracle分散データベースのリモート・インスタンスに常駐する場合と同様に表示されます。
Oracle以外の各種データベース・システム用のOracle Transparent Gatewayに加えて、Oracle Generic Connectivity機能を構成する一連のエージェントが存在します。これらのエージェントには汎用コードのみが含まれており、顧客は必要なドライバを提供する必要があります。 Oracleには、ODBCまたはOLE DBインタフェースを持つOracle以外のシステムにODBCおよびOLE DBドライバを使用してアクセスできるように、ODBCおよびOLE DB用のGeneric Connectivityエージェントが用意されています。
Generic Connectivityを使用してOracle以外の特定システムにアクセスするには、そのシステムのゲートウェイに対してODBCまたはOLE DBドライバを接続する必要があります。オラクル社はこれらのドライバを提供していません。ただし、オラクル社がODBCおよびOLE DBプロトコルをサポートしているかぎり、ODBCまたはOLE DBドライバを使用してアクセスできるOracle以外のシステムにGeneric Connectivity機能を使用してアクセスできます。
Generic Connectivityには、ある程度の制限があります。 他のOracleデータベース・サーバーからこれらのいずれかのゲートウェイへの接続はサポートされません。 これらのゲートウェイの機能は、特にOracle Transparent Gatewayに比べると限定的です。
| 関連項目:
詳細は、第7章「Generic Connectivity」を参照してください。 |
この項では、Oracleデータベース・サーバーの異機種間サービスのコンポーネントについて説明します。次の2つのコンポーネントがあります。
異機種間サービス・コンポーネントのトランザクション・サービス・コンポーネントは、Oracle以外のシステムとOracleデータベース・サーバーのトランザクションおよびセッションとの統合を可能にします。Oracleユーザー・セッションでデータベース・リンクを介してOracle以外のシステムに初めてアクセスするときに、Oracle以外のシステムで認証済セッションを透過的に設定します。 Oracleユーザー・セッションの終了時には、Oracle以外のデータベース・システムでの認証済セッションは、そのシステムで透過的にクローズされます。
また、Oracle以外の1つ以上のシステムがOracle分散トランザクションに関連づけられます。アプリケーションがトランザクションをコミットすると、Oracleの2フェーズ・コミット・プロトコルがOracle以外のデータベース・システムにアクセスし、分散トランザクションを透過的に調整します。Oracle以外のシステムがOracleの2フェーズ・コミット・プロトコルを全面的にサポートしていない場合にも、Oracleはそのシステムとの分散トランザクションを(制限付きで)サポートできます。
Structured Query Language(SQL)サービスは、すべてのSQL関連操作の処理を受け持ちます。SQLサービスにより、次のような処理が実行されます。
前項では、様々な異機種間サービス・コンポーネントの機能について説明しました。これらのコンポーネントは汎用コードのみで構成されており、Oracle以外の多数の異なるシステムで機能させるには、その動作を構成する必要があります。各ゲートウェイの構成情報はドライバ・モジュールに格納されており、この情報はゲートウェイへの接続が確立された直後にサーバーにアップロードされます。この構成情報は、次の3つにわかれています。
データ・ディクショナリ変換は、Oracle以外のシステムのデータ・ディクショナリ表のビューです。このビューにより、異機種間サービスでは、Oracleデータ・ディクショナリ表への参照を、Oracle以外のシステムのデータ・ディクショナリから等価の情報を取得するための問合せに変換できます。
| 関連項目:
データ・ディクショナリ変換の詳細は、付録D「データ・ディクショナリ変換のサポート」を参照してください。 |
異機種間サービス初期化パラメータには、次の2つの機能があります。
V$HS_PARAMETERビューを問い合せると、セッションの異機種間サービス初期化パラメータを確認できます。ユーザーは、初期化パラメータをゲートウェイ初期化ファイル内で設定できます。
機能は異機種間サービスに対して、Oracle以外のシステムの制限事項(サポート対象とサポート外のSQL文のタイプなど)と、Oracleデータ型とSQL式からOracle以外のシステムのデータ型および式へのマッピングを指示します。つまり、異機種間サービスに対して、Oracle以外のシステムの構成不可のプロパティを指示します。ユーザーは機能を変更できません。
前述のとおり、構成情報は、エージェントへの接続が確立された直後にエージェントから異機種間サービス・コンポーネントにアップロードされます。 この情報はきわめて大きい場合があるため、接続ごとにアップロードするのは効率的ではありません。したがって、Oracleデータベースがエージェントと初めて対話するときに、構成情報がアップロードされて異機種間サービスのデータ・ディクショナリ表に格納され、その後はエージェント側で変更(パッチの適用や新規バージョンへのエージェントのアップグレードなど)があるまでアップロードは発生しません。
異機種間サービスを使用すると、1つのOracleデータベースからOracle以外の複数のシステムにアクセスできます。 図2-2にこの状況を示します。この図は、Oracle以外の2つのシステムにアクセスされている状況を示しています。
両方のエージェントにより構成情報がアップロードされ、Oracleデータベース・サーバーに異機種間サービスのデータ・ディクショナリ情報の一部として格納されます。
インスタンスごとに異機種間サービスのデータ・ディクショナリに別個の定義を格納すると、データ・ディクショナリ情報を1つの粒度で格納できますが、それにより冗長なデータ・ディクショナリ情報が必要以上に大量になる可能性があります。この問題を回避するために、Oracleでは異機種間サービスのデータ・ディクショナリがクラスおよびインスタンスという2つの粒度で編成されます。
クラスは、Oracle以外の特定タイプのシステムに関係します。たとえば、Oracleデータベース・サーバーでSybaseデータベース・システムのクラスにアクセスできます。インスタンスでは、クラス内での特殊化が定義されます。たとえば、Sybaseデータベース・システム内の複数の異なるインスタンスにアクセスできます。各クラスの定義(粒度1)は、そのクラスの全インスタンス(粒度2)により共有されます。さらに、インスタンス情報はクラス情報より優先され、クラス情報はサーバー指定のデフォルトより優先されます。
たとえば、Oracleデータベース・サーバーがSybaseの3つのインスタンスおよびIngres IIの2つのインスタンスにアクセスするとします。SybaseとIngres IIにはそれぞれ独自のコードがあり、Oracleデータベース・サーバーからアクセスするには別個のクラス定義が必要です。そのため、異機種間サービスのデータ・ディクショナリには、Sybase用とIngres II用に1つずつ合計2つのクラス定義と、Oracleデータベース・サーバーがアクセスするインスタンスごとに1つずつ、合計5つのインスタンス定義が含まれます。
インスタンス・レベルの機能とデータ・ディクショナリ情報はセッション固有であり、Oracleデータベース・サーバーの異機種間サービスのデータ・ディクショナリに格納されないことに注意してください。ただし、インスタンス・レベルの初期化パラメータはデータベースに格納できます。
異機種間サービスのデータ・ディクショナリ・ビューには、次の種類の情報が含まれています。
Oracleデータ・ディクショナリからの情報には、固定ビューを使用してアクセスできます。各ビューは主に次の3タイプに分類されます。
図2-3に、典型的なゲートウェイのプロセス・フローを示します。 各手順は、クライアント・アプリケーションがゲートウェイを介してOracle以外のデータベース・システムのデータベースを問い合せたときに発生するイベントの順序を示しています。
|
|
![]() Copyright © 2001, 2002 Oracle Corporation. All Rights Reserved. |
|