異機種間サービスのデータ・ディクショナリ・ビュー

異機種間サービスのデータ・ディクショナリ・ビューを使用すると、異機種間サービスに関する情報にアクセスできます。

ビューのタイプ

異機種間サービスのデータ・ディクショナリ・ビューです。

異機種間サービスのデータ・ディクショナリ・ビューは、次のカテゴリに分類できます。ビュー名はすべて接頭辞HS_で始まります。

  • 汎用ビュー

  • トランザクション・サービス用のビュー

  • SQLサービス用のビュー

データ・ディクショナリ・ビューのほとんどは、クラスとインスタンスの両方に対して定義されています。ほとんどのタイプのデータには、*_CLASSビューと*_INSTビューがあります。詳細は、表4-2を参照してください。

表4-2 異機種間サービスのデータ・ディクショナリ・ビュー

ビュー タイプ 識別内容

HS_BASE_CAPS

SQLサービス

異機種間サービスでサポートされている全機能

HS_BASE_DD

SQLサービス

異機種間サービスでサポートされている、すべてのデータ・ディクショナリ変換表名

HS_CLASS_CAPS

トランザクション・サービス、SQLサービス

各クラスの機能

HS_CLASS_DD

SQLサービス

各クラスのデータ・ディクショナリ変換

HS_CLASS_INIT

汎用

各クラスの初期化パラメータ

HS_FDS_CLASS

汎用

Oracleサーバーからアクセス可能なクラス

HS_FDS_INST

汎用

Oracleサーバーからアクセス可能なインスタンス

HS_INST_CAPS

トランザクション・サービス、SQLサービス

各インスタンスの機能(DBAが設定している場合)

HS_INST_DD

SQLサービス

各クラスのデータ・ディクショナリ変換(DBAが設定している場合)

HS_INST_INIT

汎用

各インスタンスの初期化パラメータ(DBAが設定している場合)

HS_BULK

バルク・ロード・プロシージャで作成した内部オブジェクトを追跡するためのデータ・ディクショナリ・ビュー。

すべてのOracleデータ・ディクショナリ表と同様に、これらのビューは読取り専用です。基礎となる表の内容は変更しないでください。

データ・ディクショナリ情報のソース

異機種間サービス・データベース・リンクを介した特定の接続でデータ・ディクショナリの内容として使用される値は、多数のソースから取得できます。

たとえば、優先度の高い順に示します。

  • セッションの開始時に接続先異機種間サービス・エージェントによりアップロードされるインスタンス情報。この情報により、Oracleデータ・ディクショナリ内の対応する内容がオーバーライドされますが、Oracleデータ・ディクショナリには格納されません。

  • Oracleデータ・ディクショナリに格納されているインスタンス情報。このデータにより、接続先クラスの対応する内容がオーバーライドされます。

  • Oracleデータ・ディクショナリに格納されているクラス情報。

Oracleデータベース・サーバーの実行時にHS_AUTOREGISTERサーバー初期化パラメータがFALSEに設定されている場合、Oracleデータ・ディクショナリに情報が自動的に格納されることはありません。接続が確立されるたびに、接続ごとに異機種間サービス・エージェントにより等価のデータがアップロードされ、インスタンス固有の情報がクラス情報より優先されます。

注意:

エージェントがインスタンス情報をアップロードできる可能性があるため、特定のセッションに使用中の機能とデータ・ディクショナリ変換は明確に判断できません。

V$HS_PARAMETERビューのVALUE列を問い合せると、異機種間サービスの初期化パラメータの値を判断できます。V$HS_PARAMETERVALUE列では、実際の初期化パラメータ値が最大255文字から最大64文字に切り捨てられることに注意してください。パラメータ名は最大64文字から最大30文字に切り捨てられます。

汎用ビュー

すべてのサービス用に共通のビューがあります。

次のビューは、すべてのサービスに共通です。

表4-3 すべてのサービスの一般的なビュー

ビュー 内容

HS_FDS_CLASS

Oracleデータ・ディクショナリにアップロードされたクラスの名前

HS_FDS_INST

Oracleデータ・ディクショナリにアップロードされたインスタンスの名前

HS_CLASS_INIT

異機種間サービス初期化パラメータに関する情報

たとえば、Oracleデータベース・サーバーから複数のSybaseゲートウェイにアクセスできます。ゲートウェイに初めてアクセスすると、Oracleデータベース・サーバーにアップロードされた情報が次のように表示される場合があります。

SQL> SELECT * FROM HS_FDS_CLASS; 

FDS_CLASS_NAME        FDS_CLASS_COMMENTS             FDS_CLASS_ID
--------------------- ------------------------------ ------------
Sybase816             Uses Sybase driver, R1.1                 1
Sybase817             Uses Sybase driver, R1.2                21

2つのクラス(Sybase816にアクセスするクラスとSybase817にアクセスするクラス)がアップロードされています。Oracleデータベース・サーバーのデータ・ディクショナリには、Sybase816とSybase817の両方のための機能情報、SQL変換およびデータ・ディクショナリ変換が含まれます。

Oracleデータベース・サーバーのデータ・ディクショナリには、アクセス対象であるOracle以外の各システム・インスタンスに対するHS_FDS_INSTビューのインスタンス情報も含まれます。

トランザクション・サービス・ビュー

Oracle以外のシステムが分散トランザクションに関係する場合、分散トランザクションに関与できるかどうかは、そのシステムとエージェントのトランザクション機能により制御されます。

トランザクション機能は、HS_CLASS_CAPS表に格納されます。

Oracle以外のシステムとエージェントが2フェーズ・コミット・プロトコルをサポートできるかどうかは、2PCタイプの機能により指定されます。次の表に示すタイプのいずれかを指定できます。

表4-4 トランザクション・サービス・ビュー

タイプ 機能

読取り専用(RO)

Oracle以外のシステムに対して実行できるのは、SQLのSELECT文を使用した問合せのみです。プロシージャ・コールはデータを書き込むと想定されるため許可されません。

単一サイト(SS)

Oracle以外のシステムでリモート・トランザクションを処理できますが、分散トランザクションは処理できません。つまり、2フェーズ・コミット・プロトコルには関与できません。

コミット確認(CC)

Oracle以外のシステムが分散トランザクションに関与できます。サーバーの2フェーズ・コミット・プロトコルには、コミット・ポイント・サイトとしてのみ関与できます。つまり、データを準備できませんが、グローバル・コーディネータから要求された場合は、特定のトランザクションの結果を記憶できます。

2フェーズ・コミット(2PC)

Oracle以外のシステムが分散トランザクションに関与できます。サーバーの2フェーズ・コミット・プロトコルには、コミット・ポイント・サイトではなく通常の2フェーズ・コミット・ノードとして関与できます。つまり、データを準備できますが、グローバル・コーディネータから要求されても特定のトランザクションの結果を記憶できません。

2フェーズ・コミット確認(2PCC)

Oracle以外のシステムが分散トランザクションに関与できます。サーバーの2フェーズ・コミット・プロトコルには、通常の2フェーズ・コミット・ノードまたはコミット・ポイント・サイトとして関与できます。つまり、データを準備でき、グローバル・コーディネータから要求された場合は、特定のトランザクションの結果を記憶できます。

異機種間サービスのHS_CLASS_CAPSデータ・ディクショナリ・ビューを使用すると、ドライバとOracle以外のシステムでサポートされているトランザクション・モデルを問い合せることができます。

次に、2PCタイプの機能の1つを示します。

SELECT cap_description, translation
FROM   hs_class_caps
WHERE  cap_description LIKE '2PC%'
AND    fds_class_name LIKE 'SYBASE%';

CAP_DESCRIPTION                          TRANSLATION
---------------------------------------- -----------
2PC type (RO-SS-CC-PREP/2P-2PCC)                  CC

Oracle以外のシステムとエージェントが分散トランザクションをサポートするとき、Oracle以外のシステムは他のOracleサーバーと同様に扱われます。2フェーズ・コミット・プロトコルで障害が発生すると、トランザクションは自動的にリカバリされます。障害が続くとき、場合によってはデータベース管理者が手動でインダウト・トランザクションをオーバーライドする必要があります。

SQLサービス・ビュー

SQLサービスに固有のデータ・ディクショナリ・ビューがあります。

SQLサービス固有のデータ・ディクショナリ・ビューには、次の情報が含まれています。

  • Oracle以外のデータ・ソースのSQL機能とSQL変換

  • Oracleデータ・ディクショナリ・ビューからOracle以外のシステムのデータ・ディクショナリへのマッピングに使用されるデータ・ディクショナリ変換

    注意:

    この項では、SQLサービス関連機能の一部についてのみ説明します。これらの設定を管理上の目的で変更する必要はないため、これらの機能についてはこの項では説明しません。

機能とトランザクションのビュー

HS_*_CAPSデータ・ディクショナリ表には、Oracle以外のデータ・ソースのSQL機能と必須のSQL変換に関する情報が含まれています。

これらのビューでは、Oracle以外のデータ・ストアまたはOracleデータベース・サーバーに特定のSQL言語機能が実装されるかどうかが指定されます。機能がオフになっている場合、Oracleでは、その機能を必要とするOracle以外のデータ・ソースにSQL文は送信されませんが、後処理は実行されます。

データ・ディクショナリ変換のビュー

Oracle以外のシステムがOracleデータベース・サーバーと同様にみえるように、異機種間サービス接続により、Oracleデータ・ディクショナリ・ビューの限定セットがOracle以外のシステムのデータ・ディクショナリにマップされます。

このマッピングにより、アプリケーションでは、これらのビューがOracleデータ・ディクショナリに属している場合と同様に問合せを発行できます。このアクセスは、データ・ディクショナリ変換により可能になります。これらの変換は、名前に接尾辞_DDを含む各異機種間サービス・ビューに格納されます。

たとえば、次のSELECT文は、Sybaseのデータ・ディクショナリ表からemp表の情報を取得するSybaseの問合せに変換されます。

SELECT * FROM USER_TABLES@remote_db
WHERE UPPER(TABLE_NAME)='EMP';

データ・ディクショナリ表は、変換するかわりに疑似実行できます。必要な情報がOracle以外のデータ・ソースのデータ・ディクショナリにないために、データ・ディクショナリ変換ができない場合、異機種間サービスではデータ・ディクショナリ表が使用可能であるかのように表示されますが、表には情報が含まれていません。

Oracle以外のシステム用に変換または疑似実行されるOracleデータ・ディクショナリ・ビューまたは表の情報を取得するには、ユーザーSYSとして接続し、HS_CLASS_DDビューに対して次の問合せを発行します。

SELECT DD_TABLE_NAME, TRANSLATION_TYPE
FROM   HS_CLASS_DD
WHERE  FDS_CLASS_NAME LIKE 'SYBASE%';

DD_TABLE_NAME                  T
-----------------------------  -
ALL_ARGUMENTS                  M
ALL_CATALOG                    T
ALL_CLUSTERS                   T
ALL_CLUSTER_HASH_EXPRESSIONS   M
ALL_COLL_TYPES                 M
ALL_COL_COMMENTS               T
ALL_COL_PRIVS                  M
ALL_COL_PRIVS_MADE             M
ALL_COL_PRIVS_RECD             M
...

変換タイプTは、変換が存在することを示します。変換タイプがMの場合は、データ・ディクショナリ表が疑似実行されます。