| Oracle9i Heterogeneous Connectivity管理者ガイド リリース2(9.2) 部品番号B13816-01 |
|
この章では、異機種間サービス(HS)エージェントの使用方法について説明します。この章の内容は、次のとおりです。
この項では、Oracle以外のシステムへのアクセスに関する一般的な構成手順について説明します。
Oracle以外のシステムへのアクセスを設定する手順は、次のとおりです。
手順1: 異機種間サービスのデータ・ディクショナリのインストール
手順2: 異機種間サービス・エージェントにアクセスするための環境の設定
手順3: Oracle以外のシステムへのデータベース・リンクの作成
異機種間サービスのデータ・ディクショナリ表およびビューをインストールするには、異機種間サービスのデータ・ディクショナリ表、ビューおよびパッケージをすべて作成するスクリプトを実行する必要があります。 ほとんどのシステムでは、このスクリプトはcaths.sqlと呼ばれ、$ORACLE_HOME/rdbms/adminに常駐します。
Oracle以外のシステムへの接続を開始するために、Oracle9iサーバーはOracle Netリスナーを介してエージェント・プロセスを起動します。 Oracle9iサーバーからエージェントに接続できるようにするための手順は、次のとおりです。
(HS=OK)句を含める必要があります。このサービス名の記述は、tnsnames.ora、Oracle Names Serverまたはサード・パーティのネーム・サーバーにOracleのネーミング・アダプタを使用して定義されています。
tnsnames.oraファイル内のサービス名のサンプル・エントリを次に示します。
Sybase_sales= (DESCRIPTION= (ADDRESS=(PROTOCOL=tcp) (HOST=dlsun206) (PORT=1521) ) (CONNECT_DATA = (SERVICE_NAME=SalesDB) ) (HS = OK) )
listener.ora内のリスナーのサンプル・エントリを次に示します。
LISTENER = (ADDRESS_LIST = (ADDRESS= (PROTOCOL=tcp) (HOST = dlsun206) (PORT = 1521) ) ) ... SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME=SalesDB) (ORACLE_HOME=/home/oracle/megabase/9.0.1) (PROGRAM=tg4mb80) (ENVS=LD_LIBRARY_PATH=non_oracle_system_lib_directory) ) )
PROGRAMキーワードに関連付けられている値により、エージェントの実行可能ファイル名が定義されます。 異機種間サービス・エージェントによりロードされるDLLを含むディレクトリのフルパスは、LD_LIBRARY_PATHで指定されます。通常は、SID_NAMEを使用してエージェント用の初期化パラメータ・ファイルを定義します。
| 関連項目:
|
Oracle以外のシステムへのデータベース・リンクを作成するには、CREATE DATABASE LINK文を使用します。CREATE DATABASE LINK文のUSING句には、サービス名としてOracle Netサービス名を使用します。
たとえば、Sybaseのsalesデータベースへのデータベース・リンクを作成するには、次のように入力します。
CREATE DATABASE LINK sales USING `Sybase_sales';
Oracle以外のシステムへの接続をテストするには、SQLまたはPL/SQL文でデータベース・リンクを使用します。Oracle以外のシステムがSQLベース・データベースの場合は、データベース・リンクを使用して既存の表またはビューからSELECT文を実行できます。 たとえば、次のような文を発行します。
SELECT * FROM product@sales WHERE product_name like '%pencil%';
Oracle以外のシステムへのアクセスを初めて試みると、異機種間サービス・エージェントにより異機種間サービスのデータ・ディクショナリに情報がアップロードされます。次のような情報がアップロードされます。
「異機種間サービスの構成」で説明したように、初期化パラメータを使用してゲートウェイを構成できます。そのためには、初期化ファイルを作成し、このファイル内で必要なパラメータを設定します。
異機種間サービスの初期化パラメータは、Oracleデータベース・サーバーの初期化パラメータとは異なります。異機種間サービスの初期化パラメータは、Oracleデータベース・サーバーの初期化パラメータ・ファイル(init.oraファイル)ではなく、異機種間サービスの初期化ファイル内で設定します。ゲートウェイ・インスタンスごとに、異機種間サービスの初期化ファイルがあります。
ファイル名はinitsid.oraで、sidはゲートウェイに使用されるOracleシステム識別子です。
Generic Connectivityの場合、異機種間サービスの初期化ファイルは$ORACLE_HOME/hs/adminディレクトリにあります。Transparent Gatewayの場合は、$ORACLE_HOME/product_name/adminディレクトリにあります。product_nameは製品名です。したがって、Sybaseゲートウェイの初期化ファイルは、$ORACLE_HOME/tg4sybs/adminディレクトリにあります。
初期化ファイルには、初期化パラメータ設定のリストが含まれています。設定はそれぞれ1行に記述する必要があります。初期化パラメータ設定の構文は次のとおりです。
[set] [private] parameter = parameter_value
setおよびprivateキーワードはオプションです。setキーワードを指定すると、環境内で変数も設定されます。privateキーワードを指定すると、パラメータはサーバーにアップロードされません。通常、ネットワーク上でゲートウェイからOracleサーバーに送信されないようにする必要のある機密情報(パスワードなど)が初期化パラメータ値に含まれる場合を除き、このキーワードを使用しないことをお薦めします。
初期化パラメータの構文で、すべてのキーワード(SET、PRIVATEおよびIFILE)には大/小文字区別はありません。初期化パラメータの名前と値には、大/小文字区別があります。ほとんどの初期化パラメータ名は大文字です。異機種間サービス・パラメータの文字列値は小文字で指定する必要があります。このルールに対する例外は、明記してあります。
IFILEディレクティブを使用すると、もう1つの初期化ファイルを異機種間サービスの初期化ファイルに含めることができます。 次に構文を示します。
IFILE = pathname for file to be included
ゲートウェイ初期化パラメータは、2つのグループにわけることができます。一方はすべてのゲートウェイに共通する汎用初期化パラメータの集合で、他方は個々のゲートウェイに固有の初期化パラメータの集合です。 次のリストに、このマニュアルで説明する汎用初期化パラメータのみを示します。
HS_COMMIT_POINT_STRENGTH
HS_DB_DOMAIN
HS_DB_INTERNAL_NAME
HS_DB_NAME
HS_DESCRIBE_CACHE_HWM
HS_FDS_CONNECT_INFO
HS_FDS_DEFAULT_SCHEMA_NAME
HS_FDS_SHAREABLE_NAME
HS_FDS_TRACE_LEVEL
HS_FDS_TRACE_FILE_NAME
HS_LANGUAGE
HS_LONG_PIECE_TRANSFER_SIZE
HS_NLS_DATE_FORMAT
HS_NLS_DATE_LANGUAGE
HS_NLS_NCHAR
HS_NLS_TIMESTAMP_FORMAT
HS_NLS_TIMESTAMP_TZ_FORMAT
HS_OPEN_CURSORS
HS_ROWID_CACHE_SIZE
HS_RPC_FETCH_REBLOCKING
HS_RPC_FETCH_SIZE
HS_TIME_ZONE
前述のパラメータの設定時には、privateキーワードを使用しないでください。このキーワードを使用すると、パラメータがサーバーにアップロードされず、SQL処理中にエラーが発生する可能性があります。 前述のパラメータはいずれも環境での設定が必須ではないため、setキーワードを使用する必要はありません。
| 関連項目:
|
アプリケーションで異機種間サービスを使用してOracle以外のシステムからデータをフェッチする場合、データは次の順序で転送されます。
Oracleでは、図4-1に示すように3つのデータ転送をすべて最適化できます。
この項の内容は、次のとおりです。
アプリケーションとOracle9iサーバー間のデータ転送は、配列フェッチを使用して最適化できます。配列フェッチの詳細と、データ送信量または各ネットワークのラウンドトリップの指定方法は、アプリケーション開発ツールのマニュアルを参照してください。
OracleがOracle以外のシステムからデータを取得する場合、異機種間サービスのHS_RPC_FETCH_SIZE初期化パラメータにより、エージェントとOracle9iサーバー間のフェッチごとに送信されるバイト数が定義されます。エージェントは、次のいずれかが発生するまでOracle以外のシステムからデータをフェッチします。
Oracle以外のシステムから取得される行数は、HS_FDS_FETCH_ROWS初期化パラメータにより決定されます。エージェントで配列フェッチがサポートされる必要があることに注意してください。エージェント固有のマニュアルを参照し、エージェントで配列フェッチがサポートされることを確認してください。
デフォルトでは、エージェントはサーバーへの送信分として十分なデータを取得するまで、Oracle以外のシステムからデータをフェッチします。つまり、Oracle以外のシステムからフェッチされたバイト数がHS_RPC_FETCH_SIZEの値以上になるまで、フェッチが続行されます。 言い換えると、エージェントは、Oracleデータベース・サーバーとの間で、HS_RPC_FETCH_SIZEの値により定義されたサイズ単位でデータを再ブロック化します。
Oracle以外のシステムで配列フェッチがサポートされる場合は、配列フェッチによりOracle以外のシステムからフェッチしたデータを、HS_RPC_FETCH_SIZEの正確な値に達するまで待たずにOracleデータベース・サーバーに即時に送信できます。つまり、Oracle以外のシステムからOracleデータベース・サーバーにデータをストリームし、HS_RPC_FETCH_REBLOCKING初期化パラメータの値をOFFに設定して再ブロック化を無効にできます。
たとえば、HS_RPC_FETCH_SIZEを64 KB、HS_FDS_FETCH_ROWSを100行に設定するとします。各行のサイズが約600バイトであるとすると、100行では約60 KBになります。HS_RPC_FETCH_REBLOCKINGをONに設定すると、エージェントはOracle以外のシステムから100行のフェッチを開始します。
エージェントにはデータが60 KBしかないため、データはOracleデータベース・サーバーに送信されません。かわりに、エージェントはOracle以外のシステムから次の100行をフェッチします。これでエージェントにあるデータが120 KBになったため、最初の64 KBをOracleデータベース・サーバーに送信できます。
この時点で、エージェントには56 KBのデータが残っています。エージェントはOracle以外のシステムからさらに100行をフェッチした後、次の64 KBのデータをOracleデータベース・サーバーに送信します。 HS_RPC_FETCH_REBLOCKING初期化パラメータをOFFに設定すると、最初の100行がOracle9iサーバーに即時に送信されます。
登録とは、Oracleによりエージェント情報がデータ・ディクショナリに格納される操作です。エージェントの登録は必須ではありません。エージェントが未登録の場合、Oracleではエージェント情報がデータ・ディクショナリのかわりにメモリーに格納されます。エージェントに関係するセッションが終了すると、この情報は使用できなくなります。
自動登録とは、エージェントが情報をデータ・ディクショナリに自動的にアップロードできるように、データベース管理者が初期化パラメータを設定する操作です。Oracleデータベース・サーバーのリリース8.0では、エージェントは自動登録するかどうかを決定できます。 Oracle9iの場合、自動登録が発生するのはHS_AUTOREGISTER初期化パラメータがTRUE(デフォルト)に設定されている場合のみです。
この項の内容は、次のとおりです。
異機種間データベース・リンク上での正常動作を確実にするために、エージェント自動登録により、リモート・ホスト上でエージェントを記述する異機種間サービス構成データの更新が自動化されます。エージェント自動登録はデフォルトの動作です。エージェント自動登録機能を使用しない場合は、HS_AUTOREGISTER初期化パラメータをFALSEに設定してください。
サーバーとエージェントは、どちらも3種類の情報に依存して異機種間サービス接続の操作を構成および制御します。この3セットの情報をまとめてHS構成データと呼びます。
| 異機種間サービス構成データ | 説明 |
|---|---|
|
異機種間サービス初期化パラメータ |
操作の各種接続固有の詳細を制御します。 |
|
機能定義 |
Oracle以外のデータ・ソースでサポートされるSQL言語機能などの詳細を識別します。 |
|
データ・ディクショナリ変換 |
Oracleデータ・ディクショナリ表およびビューへの参照を、Oracle以外のデータ・ソース固有の等価の表およびビューにマップします。 |
HS構成データは、Oracleデータベース・サーバーのデータ・ディクショナリに格納されます。リモート・エージェントであるために別個に管理される場合があるので、いくつかの場合にサーバーとエージェントの間で構成が一致しなくなる可能性があります。
エージェント自動登録により、これらのすべての使用例で異機種間サービスを正常に操作できます。 特に、エージェント自動登録により、Oracleデータベース・サーバーと異機種間サービス・エージェントがそれぞれリリース8.0.3以上の場合は、両者間の相互運用性が強化されます。 この機能の基本的なメカニズムは、HS構成データをエージェントからサーバーにアップロードする機能です。
自動登録により、Oracleデータベース・サーバーのデータ・ディクショナリに常駐するHS構成データが自動的に更新されます。この更新により、エージェント自動登録のアップロードは、未登録エージェントを最初に使用するときに1回実行すればよいことになります。インスタンス情報は、サーバーのデータ・ディクショナリに格納されるのではなく、接続ごとにアップロードされます。
異機種間サービスのエージェント自動登録機能では、次の操作を実行できます。
前述の操作に必要な情報には、次のエージェント指定名を使用してサーバーのデータ・ディクショナリ内でアクセスします。
FDS_CLASS
FDS_CLASS_VERSION
異機種間サービスのデータ・ディクショナリ・ビューの使用方法は、「異機種間サービスのデータ・ディクショナリ・ビュー」を参照してください。
関連項目:
FDS_CLASSおよびFDS_CLASS_VERSIONは、Oracleまたはサード・パーティ・ベンダーにより、異機種間サービス・エージェントとバージョンごとに個別に定義されます。Oracle異機種間サービスでは、これらの名前が連結されてFDS_CLASS_NAMEとなり、サーバーのデータ・ディクショナリ内のクラス情報にアクセスするための主キーとして使用されます。
FDS_CLASSにはアクセスするOracle以外のデータ・ストアのタイプを指定し、FDS_CLASS_VERSIONにはOracle以外のデータ・ストアとそこに接続するエージェントのバージョン番号を指定する必要があります。エージェントのいずれかのコンポーネントに変更があった場合は、新リリースを一意に識別するようにFDS_CLASS_VERSIONも変更する必要があることに注意してください。
インスタンス固有の情報をサーバーのデータ・ディクショナリに格納できます。インスタンス名FDS_INST_NAMEは、エージェントを管理するデータベース管理者により構成されます。この構成の実行方法は、使用中のエージェントに応じて異なります。
Oracleデータベース・サーバーでは、FDS_INST_NAMEを使用して、データ・ディクショナリ内でインスタンス固有の構成情報が参照されます。Oracleでは、その値が次のビューで同じ名前を持つ列の主キーとして使用されます。
FDS_INST_NAMEを使用したサーバーのデータ・ディクショナリへのアクセスでも、FDS_CLASS_NAMEを使用して構成情報の行が一意に識別されます。たとえば、データベースをクラスSybase8.1.6からクラスSybase8.1.7に移植する場合は、両方のデータベースが同時にインスタンス名SCOTTで動作し、別個の構成情報セットを使用できます。
クラス情報とは異なり、インスタンス情報はサーバーのデータ・ディクショナリに自動登録されません。
HS_AUTOREGISTERの指定 Oracleデータベース・サーバーのHS_AUTOREGISTER初期化パラメータを使用すると、異機種間サービス・エージェントの自動登録を有効化または無効化できます。このパラメータは、エージェントの初期化ファイルではなくOracle初期化パラメータ・ファイル内で指定することに注意してください。たとえば、このパラメータを次のように設定できます。
HS_AUTOREGISTER = TRUE
TRUEに設定すると、エージェントは、以前に認識されていないエージェント・クラスまたは新規エージェント・バージョンの記述情報を、サーバーのデータ・ディクショナリにアップロードします。
このパラメータにはデフォルト値(TRUE)を使用することをお薦めします。この設定により、サーバーのデータ・ディクショナリの内容は常に、異機種間サービス接続に使用されるクラス機能とデータ・ディクショナリ変換の定義を確実に正しく表すものになります。
エージェント自動登録を無効化するには、HS_AUTOREGISTER初期化パラメータを次のように設定します。
HS_AUTOREGISTER = FALSE
エージェント自動登録を無効化すると、エージェント情報はデータ・ディクショナリに格納されません。そのため、異機種間サービスのデータ・ディクショナリ・ビューは有効な情報ソースでなくなります。ただし、Oracleサーバーは、各エージェントのクラスおよびインスタンスに関する情報を引き続き必要とします。エージェント自動登録を無効化すると、サーバーではこの情報がローカル・メモリーに格納されます。
ゲートウェイは、SQL文の変換または後処理が必要な場合に、そのSQL文を書き換えます。
たとえば、Oracle以外のデータベース・システムのデータベースからの次の操作を必要とするプログラムを考えてみます。
SELECT "COL_A" FROM "test"@SYBS WHERE "COL_A" = INITCAP('jones');
INITCAPはOracle以外のデータベース・システムのデータベースで認識されないため、Oracleデータベース・サーバーはtestの表スキャンを実行して結果をローカルにフィルタします。ゲートウェイは、SELECT文を次のように書き換えます。
SELECT "COL_A" FROM "test"@SYBS
問合せ結果がゲートウェイに送られ、Oracleデータベース・サーバーによりフィルタされます。
次のUPDATE要求を考えてみます。
UPDATE "test"@SYBS WHERE "COL_A" = INITCAP('jones');
この場合、Oracleデータベース・サーバーとゲートウェイはOracle以外のデータベース・システムのデータベース側のサポートの欠落を補えないため、エラーが発行されます。
Oracle以外のデータベース・システムのデータベースに格納されている大量のデータに対して操作を実行する場合は、一部の関数では処理の前にデータを統合用Oracleデータベース・サーバーに移動する必要があることに注意してください。
Oracleデータベース・サーバーのシノニム機能を使用すると、完全なデータ位置の透過性とネットワークの透過性を提供できます。シノニムが定義されていれば、基礎となる表やネットワーク・プロトコルを知る必要はありません。シノニムはパブリックとして定義できます。これは、すべてのOracleユーザーがシノニムを参照できることを意味します。 また、シノニムをプライベートとして定義することもできます。これは、各OracleユーザーがOracle以外のデータベース・システムの表にアクセスするには、定義済のシノニムを必要とすることを意味します。
次の文では、Oracle以外のデータベース・システムのデータベースのユーザーORACLEのスキーマ内で、emp表に対してシステム単位のシノニムが作成されます。
CREATE PUBLIC SYNONYM EMP FOR "ORACLE"."EMP"@SYBS
次の文では、Oracleデータベース・サーバー、IBM DB2データベースおよびOracle以外のデータベース・システムのデータベース間でデータが結合されます。
SELECT O.CUSTNAME, P.PROJNO, E.ENAME, SUM(E.RATE*P."HOURS") FROM ORDERS@DB2 O, EMP@ORACLE9 E, "PROJECTS"@SYBS P WHERE O.PROJNO = P."PROJNO" AND P."EMPNO" = E.EMPNO GROUP BY O.CUSTNAME, P."PROJNO", E.ENAME;
ビューとシノニムの組合せを介して次のSQL文を使用すると、分散問合せの処理がユーザーに対して透過的になります。
SQL> CREATE SYNONYM ORDERS FOR ORDERS@DB2
SQL> CREATE SYNONYM PROJECTS FOR "PROJECTS"@SYBS
SQL> CREATE VIEW DETAILS (CUSTNAME,PROJNO,ENAME,SPEND)
AS
SELECT O.CUSTNAME, P."PROJNO", E.ENAME, SUM(E.RATE*P."HOURS")
SPEND
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つの文でデータ・ストアから情報を取得します。
SQL> 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
SQL*PlusのCOPYコマンドを使用して、ローカル・データベースからOracle以外のデータベース・システムのデータベースにデータをコピーします。構文は次のとおりです。
COPY FROM username/password@db_name
INSERT destination_table USING query
次の例では、ローカルのOracle emp表から行がすべて選択され、Oracle以外のデータベース・システムのデータベースのemp表に挿入され、トランザクションがコミットされます。
SQL> COPY FROM SCOTT/TIGER@ORACLE9-
2> INSERT SCOTT.EMP@SYBS -
3> USING SELECT * FROM EMP
COPYコマンドでは、APPEND、CREATE、INSERTおよびREPLACEオプションがサポートされます。 ただし、コピー先がOracle以外のデータベース・システムの場合にサポートされるオプションはINSERTのみです。SQL*PlusのCOPYコマンドでは、小文字の名前を持つ表へのコピーはサポートされません。表の名前が小文字の場合は、次のPL/SQL構文を使用します。
DECLARE v1 oracle_table.column1%TYPE; v2 oracle_table.column2%TYPE; v3 oracle_table.column3%TYPE; . . . CURSOR cursor_name IS SELECT * FROM oracle_table; BEGIN OPEN cursor_name; LOOP FETCH cursor_name INTO v1, v2, v3, ... ; EXIT WHEN cursor_name%NOTFOUND; INSERT INTO destination_table VALUES (v1, v2, v3, ...); END LOOP; CLOSE cursor_name; END;
/
Oracleデータベース・サーバーからOracle以外のデータベース・システムへのデータのコピーでは、次のOracle SQL INSERT文はサポートされません。
INSERT INTO table_name SELECT column_list FROM table_name
たとえば、次の文を考えてみます。
SQL> INSERT INTO SYBS_TABLE SELECT * FROM MY_LOCAL_TABLE
この文は次のエラー・メッセージを戻します。
ORA-02025: SQL文の中の表はすべてリモート・データベースにある必要があります
CREATE TABLE文を使用すると、Oracle以外のデータベース・システムのデータベースからOracleデータベース・サーバーにデータをコピーできます。 ローカル・データベースに表を作成し、Oracle以外のデータベース・システムの表から行を挿入するには、次の構文を使用します。
CREATE TABLE table_name AS query
次の例では、ローカルのOracleデータベースにemp表が作成され、Oracle以外のデータベース・システムのデータベースのemp表から行が挿入されます。
SQL> CREATE TABLE EMP AS SELECT * FROM SCOTT."EMP"@SYBS
または、SQL*PlusのCOPYコマンドを使用して、Oracle以外のデータベース・システムのデータベースからOracleデータベース・サーバーにデータをコピーする方法もあります。
異機種間サービスのデータ・ディクショナリ・ビューを使用すると、異機種間サービスに関する情報にアクセスできます。この項の内容は、次のとおりです。
異機種間サービスのデータ・ディクショナリ・ビューは、主に次の4つのタイプに分類できます。ビュー名はすべて接頭辞HS_で始まります。
データ・ディクショナリ・ビューのほとんどは、クラスとインスタンスの両方に対して定義されています。そのため、ほとんどのタイプのデータには、*_CLASSビューと*_INSTビューがあります。
すべてのOracleデータ・ディクショナリ表と同様に、これらのビューは読取り専用です。基礎となる表の内容は変更しないでください。
異機種間サービス・データベース・リンクを介した特定の接続でデータ・ディクショナリの内容に使用される値は、次のソースから取得できます。各ソースを優先順に示します。
Oracleデータベース・サーバーの実行時にHS_AUTOREGISTERサーバー初期化パラメータがFALSEに設定されている場合、Oracleデータ・ディクショナリに情報が自動的に格納されることはありません。接続が確立されるたびに、接続ごとに異機種間サービス・エージェントにより等価のデータがアップロードされ、インスタンス固有の情報がクラス情報より優先されます。
V$HS_PARAMETERビューのVALUE列を問い合せると、異機種間サービス初期化パラメータの値を判断できます。V$HS_PARAMETERのVALUE列では、実際の初期化パラメータ値が最大255文字から最大64文字に切り捨てられ、パラメータ名が最大64文字から最大30文字に切り捨てられることに注意してください。
次のビューは、すべてのサービスに共通です。
| ビュー | 内容 |
|---|---|
|
|
Oracle8iデータ・ディクショナリにアップロードされたインスタンスとクラスの名前 |
|
|
異機種間サービス初期化パラメータに関する情報 |
たとえば、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タイプ機能により指定されます。次の5つのタイプのいずれかを指定できます。
異機種間サービスのHS_CLASS_CAPSデータ・ディクショナリ・ビューを使用すると、ドライバとOracle以外のシステムでサポートされているトランザクション・モデルを問い合せることができます。
機能の1つは2PCタイプの機能です。
SELECT cap_description, translation FROM hs_class_caps WHERE cap_description LIKE '2PC%' AND fds_class_name=`MegaBase6'; CAP_DESCRIPTION TRANSLATION ---------------------------------------- ----------- 2PC type (RO-SS-CC-PREP/2P-2PCC) CC
Oracle以外のシステムとエージェントが分散トランザクションをサポートしている場合、そのシステムは他のOracle9iサーバーと同様に扱われます。2フェーズ・コミット・プロトコル中に障害が発生すると、トランザクションは自動的にリカバリされます。障害が継続する場合は、データベース管理者がインダウト・トランザクションを手動でオーバーライドする必要があります。
SQLサービス固有のデータ・ディクショナリ・ビューには、次の情報が含まれています。
HS_*_CAPSデータ・ディクショナリ表には、Oracle以外のデータ・ソースのSQL機能と必須のSQL変換に関する情報が含まれています。これらのビューでは、Oracle以外のデータ・ストアまたはOracleデータベース・サーバーに特定のSQL言語機能が実装されるかどうかが指定されます。 機能がオフになっている場合、Oracle9iでは、その機能を必要とするOracle以外のデータ・ソースにSQL文は送信されませんが、後処理は実行されます。
Oracle以外のシステムがOracleデータベース・サーバーと同様にみえるように、異機種間サービス接続により、Oracleデータ・ディクショナリ・ビューの限定セットがOracle以外のシステムのデータ・ディクショナリにマップされます。このマッピングにより、アプリケーションでは、これらのビューがOracleデータ・ディクショナリに属している場合と同様に問合せを発行できます。このアクセスは、データ・ディクショナリ変換により可能になります。これらの変換は、異機種間サービスのうち、名前に接尾辞_DDを含むビューに格納されます。
たとえば、次のSELECT文は、Sybaseのデータ・ディクショナリ表からemp表の情報を取得するSybaseの問合せに変換されます。
SELECT * FROM USER_TABLES@salesdb WHERE UPPER(TABLE_NAME)='EMP';
データ・ディクショナリ表は、変換するかわりに疑似実行できます。必要な情報がOracle以外のデータ・ソースのデータ・ディクショナリにないために、データ・ディクショナリ変換ができない場合、異機種間サービスではデータ・ディクショナリ表が使用可能であるかのように表示されますが、表には情報が含まれていません。
Oracle以外のシステム用に変換または疑似実行されるOracleデータ・ディクショナリ・ビューまたは表の情報を取得するには、HS_CLASS_DDビューに対して次の問合せを発行できます。
SELECT DD_TABLE_NAME, TRANSLATION_TYPE FROM HS_CLASS_DD WHERE FDS_CLASS_NAME=`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の場合は、データ・ディクショナリ表が疑似実行されます。
| 関連項目:
異機種間サービスのマッピングを介してサポートされるデータ・ディクショナリ・ビューのリストは、付録D「データ・ディクショナリ変換のサポート」を参照してください。 |
Oracleデータベース・サーバーでは、エージェント、セッションおよびパラメータに関する情報が格納されます。 V$動的パフォーマンス・ビューを使用すると、この情報にアクセスできます。この項の内容は、次のとおりです。
次のビューには、エージェントの一般情報が表示されます。
| ビュー | 目的 |
|---|---|
|
|
エージェント・プロセスごとに1行を使用して、指定されたホスト上で現在実行中の異機種間サービス・エージェントのセットを識別します。 |
このビューを使用して、指定のホスト上で実行中のエージェントに関する一般情報を判別します。 次の表に、最も関連の深い列を示します(このビューの各列の詳細は、『Oracle9i データベース・リファレンス』を参照)。
| 列 | 説明 |
|---|---|
|
|
エージェントへの接続に使用されるOracle NetセッションID( |
|
|
オペレーティング・システム・マシン名 |
|
|
エージェントのプログラム名 |
|
|
エージェントのタイプ |
|
|
外部データ・ストア・クラスのID |
|
|
外部データ・ストアのインスタンス名 |
次のビューには、Oracleデータベース・サーバー用にオープンされている異機種間サービス・セッションが表示されます。
| ビュー | 目的 |
|---|---|
|
|
エージェントごとのセッションと使用されるデータベース・リンクが表示されます。 |
次の表に、最も関連の深い列を示します(このビューの各列の詳細は、『Oracle9i データベース・リファレンス』を参照)。
次のビューには、Oracleデータベース・サーバーで設定されている異機種間サービス・パラメータが表示されます。
| ビュー | 目的 |
|---|---|
|
|
Oracleデータベース・サーバーに登録済の異機種間サービス・パラメータと値が表示されます。 |
次の表に、最も関連の深い列を示します(このビューの各列の詳細は、『Oracle9i データベース・リファレンス』を参照)。
| 列 | 説明 |
|---|---|
|
|
異機種間サービスの一意のセッションID |
|
|
異機種間サービス・パラメータ名 |
|
|
異機種間サービス・パラメータの値 |
分散接続の確立に使用されたデータベース・リンク、起動時刻およびセッションに使用された初期化パラメータのセットに関する情報も表示できます。
ランタイム情報は、すべて動的に更新されるV$表から導出されます。Distributed Access Managerにはメニューおよびツールバーを介して使用可能なリフレッシュ機能があり、必要に応じて問合せを再実行し、データを更新できます。データのリフレッシュ時には、ツールにより登録済エージェントのセットに変更がないことが確認されます。変更があった場合は、グローバル・ビューが更新されます。
|
|
![]() Copyright © 2001, 2002 Oracle Corporation. All Rights Reserved. |
|