| Oracle9i Heterogeneous Connectivity管理者ガイド リリース2(9.2) 部品番号B13816-01 |
|
この章では、Generic Connectivityエージェントの構成と使用方法について説明します。
この章の内容は、次のとおりです。
Generic Connectivityは、Oracleデータベース・サーバーからOracle以外のデータベース・システムへの接続に非定型問合せ機能を必要とする、ローエンド・データ統合ソリューションを対象としています。 Generic ConnectivityはOracleの異機種間サービス・コンポーネントにより有効化され、より高いパフォーマンスおよびスループットでOracle以外のシステムに接続できます。
Generic Connectivityは、異機種間サービスODBCエージェントまたは異機種間サービスOLE DBエージェントとして実装されます。ODBCエージェントとOLE DBエージェントは、Oracleシステムに付属しています。 Oracleシステムに付属の、同じ$ORACLE_HOMEにインストールされたエージェントを必ず使用してください。
Generic Connectivityエージェントを使用すると、この章で説明するODBCまたはOLE DB規格と互換性のあるデータ・ソースにアクセスできます。
この項の内容は、次のとおりです。
Generic Connectivityは、次のいずれかのタイプの異機種間サービス・エージェントとして実装されます。
各ユーザー・セッションは、専用エージェント・プロセスを受信します。この専用エージェント・プロセスは、そのユーザー・セッション中にOracle以外のシステムへのデータベース・リンクを最初に使用することで起動されます。ユーザー・セッションが終了すると、エージェント・プロセスも終了します。
Generic Connectivityを使用してOracle以外のデータ・ストアにアクセスするために、エージェントはODBCまたはOLE DBドライバを処理します。Oracleデータベース・サーバーには、ODBCまたはOLE DBドライバ・インタフェースのサポートが用意されています。使用するドライバは、エージェントと同じプラットフォーム上に存在する必要があります。Oracle以外のデータ・ストアは、Oracleデータベース・サーバーと同じマシン上にあっても、異なるマシン上にあってもかまいません。
図7-1に、OracleとOracle以外のデータベースが別々のマシン上にあり、異機種間サービスODBCエージェントを介して通信している構成例を示します。
この構成でのフローは次のとおりです。
このクライアントは、ネットワークを介してOracle以外のデータ・ストアに接続します。
図7-2に、OracleとOracle以外のデータベースが同じマシン上にあり、異機種間サービスODBCエージェントを介して通信している構成例を示します。
この構成でのフローは次のとおりです。
ドライバはOracle以外のデータ・ストアへのアクセスを許可します。
Generic Connectivityエージェントを使用して送信されたSQL文の実行方法は、使用中のエージェントのタイプ、つまりODBC、OLE DB(SQL)またはOLE DB(FS)に応じて異なります。たとえば、ファイルベースのストレージ・システムについて、表に関係するSQL文がODBCエージェントを使用して送信されると、ファイルはリレーショナル・データベースの表である場合と同様に操作できます。Oracle以外のシステムで使用されるネーミング規則も、ODBCエージェントを使用するかOLE DBエージェントを使用するかに応じて異なる場合があります。
Oracleデータベース・サーバーは、ODBCおよびOLE DB準拠のデータ・ソースで使用されるデータ型を、サポートされているOracleデータ型にマップします。 問合せの結果が戻されるときに、Oracleデータベース・サーバーはODBCまたはOLE DBのデータ型をOracleデータ型に変換します。 たとえば、ODBCのSQL_TIMESTAMPデータ型とOLE DBのDBTYPE_DBTIMESTAMPデータ型は、OracleのDATEデータ型に変換されます。
Generic Connectivityには、次の制限事項があります。
WHERE句にサポートされない関数を含むUPDATEまたはDELETEは許可されません。
Generic Connectivityでは、ODBCまたはOLE DBドライバとOracle以外のシステムで実行でき、かつ、サポートされるOracle SQL関数が含まれている場合にのみ、次の文がサポートされます。
Oracle以外のシステムでサポート対象とみなされるのは、限定的な関数セットのみです。ほとんどのOracle関数の場合、この限定セットには等価の関数が含まれていません。そのため、Oracleデータベース・サーバーにより後処理は実行されますが、多くのOracle関数はGeneric Connectivityでサポートされず、パフォーマンスが低下する可能性があります。
Oracle SQL関数がGeneric Connectivityでサポートされない場合、その関数はDELETE、INSERTまたはUPDATE文でサポートされません。SELECT文では、これらの関数は、Oracleデータベース・サーバーにより評価され、Oracle以外のシステムから戻された後に後処理されます。
サポートされない関数がDELETE、INSERTまたはUPDATE文に使用されている場合は、次のOracleエラーが生成されます。
ORA-02070: データベースdb_link_nameはこのコンテキストでは関数をサポートしません。
Generic Connectivityでは、次の最小限のSQL関数がサポートされるものと想定します。
Oracle以外のデータ・ソース上でGeneric Connectivityを実装するには、エージェントのパラメータを設定する必要があります。
この項の内容は、次のとおりです。
Generic Connectivityエージェント用の初期化ファイルを作成し、カスタマイズする必要があります。 inithsagent.oraというサンプル初期化ファイルが用意されています。agentは次のようにodbcまたはoledbで、サンプル・ファイルを使用するエージェントを示しています。
inithsodbc.ora inithsoledb.ora
各サンプル・ファイルは、$ORACLE_HOME/hs/adminディレクトリに格納されています。
ODBCまたはOLE DBエージェントの初期化ファイルを作成するには、該当するサンプル初期化ファイルをコピーして、ファイル名をinitHS_SID.oraに変更します。HS_SIDは、エージェントの接続先であるOracle以外のシステムのインスタンスに使用するシステム識別子です。
listener.oraファイルを変更してリスナーを構成するときには、エージェントへの接続方法を識別するためにHS_SIDも使用します。listener.oraファイルに追加するHS_SIDは、initHS_SID.oraファイル内のHS_SIDと一致する必要があります。これは、リスナーにより起動されたエージェントは、一致するinitHS_SID.oraファイルを検索するためです。これにより、各エージェント・プロセスが初期化情報を取得します。initHS_SID.oraファイルをコピーしてファイル名を変更する場合は、このファイルが$ORACLE_HOME/hs/adminディレクトリ内に残っていることを確認してください。
Generic Connectivityエージェントに使用するパラメータ値をシステム、エージェントおよびドライバに該当する値に設定して、initHS_SID.oraファイルをカスタマイズします。initHS_SID.oraファイルを編集し、HS_FDS_CONNECT_INFO初期化パラメータを変更する必要があります。HS_FDS_CONNECT_INFOには、Oracle以外のシステムへの接続に必要な情報を指定します。
| 関連項目:
パラメータの詳細は、「初期化パラメータの設定」を参照してください。 |
パラメータ値を次のように設定します。
[SET][PRIVATE] parameter=value
各要素の意味:
[SET]と[PRIVATE]は、オプションのキーワードです。 SETまたはPRIVATEを指定しなければ、パラメータと値は単にエージェントの初期化パラメータとして使用されます。
SETでは、パラメータ値を初期化パラメータとして使用するのみでなく、エージェント・プロセスの環境変数として設定するように指定します。
PRIVATEでは、パラメータ値がプライベートであり、Oracleデータベース・サーバーには転送せず、V$表やGraphical User Interface(GUI)に表示しないように指定します。
SET PRIVATEでは、パラメータ値をエージェント・プロセスの環境変数として設定し、プライベートにする(Oracleデータベース・サーバーには転送せず、V$表やGUIに表示しない)ように指定します。
たとえば、エージェントのトレースを有効化するには、HS_FDS_TRACE_LEVELパラメータを次のように設定します。
HS_FDS_TRACE_LEVEL=ON
通常、ほとんどのパラメータは初期化パラメータとしてのみ必要であるため、SETまたはPRIVATEを使用する必要はありません。SETは、ドライバまたはOracle以外のシステムに環境変数として必要なパラメータ値に使用します。
PRIVATEは、次の異機種間サービス・パラメータの場合にのみサポートされます。
パラメータ値にユーザー名やパスワードなどの機密情報が含まれる場合、これらのパラメータにはPRIVATEのみを使用する必要があります。
初期化パラメータの設定は、オペレーティング・システムのタイプに応じて異なります。
ODBCドライバ・マネージャを使用して、定義済のファイル・データ・ソース名(DSN)またはシステムDSNを指定します。
ファイルDSNを使用して接続する場合、値を次のように指定します。
HS_FDS_CONNECT_INFO=FILEDSN=file_dsn
システムDSNを使用して接続する場合、値を次のように指定します。
HS_FDS_CONNECT_INFO=system_dsn
データソースのドライバを使用してこのデータソースに接続する場合、DSNの前にドライバ名を置き、セミコロン(;)を続けます。
システムDSNがWindowsのODBC Data Source Administratorで定義されているとします。このSQL Serverデータベースにゲートウェイを介して接続するには、initHS_SID.oraに次の行が必要です。
HS_FDS_CONNECT_INFO=sqlserver7
sqlserver7は、WindowsのODBC Data Source Administratorに定義されているシステムDSNの名前です。
WindowsのODBC Data Source AdministratorでシステムDSNを定義する手順は、次のとおりです。
DSNとODBC共有可能ライブラリのパスを次のように指定します。
HS_FDS_CONNECT_INFO=dsn_valueHS_FDS_SHAREABLE_NAME=full_odbc_library_path_of_odbc_driver
ODBCエージェントの場合、HS_FDS_CONNECT_INFOはすべてのプラットフォームで必須です。また、ODBCエージェントの場合、UNIXプラットフォーム上ではHS_FDS_SHAREABLE_NAMEが必須です。その他の初期化パラメータにはデフォルトがあるか、またはオプションです。デフォルト値を使用してオプションのパラメータを省略するか、またはインストールにあわせて調整済の値をパラメータで指定できます。
|
注意: デフォルト値を受け入れるか変更するかを決定する前に、「初期化パラメータの設定」ですべての初期化パラメータの詳細を参照してください。 |
Intersolve ODBCドライバを使用してInformixに接続するためのodbc.iniファイルは/opt/odbcにあり、次の情報が含まれているとします。
[ODBC Data Sources] Informix=INTERSOLV 3.11 Informix Driver [Informix] Driver=/opt/odbc/lib/ivinf13.so Description=Informix Database=personnel@osf_inf72 HostName=osf LogonID=uid Password=pwd
このInformixデータベースにゲートウェイを介して接続するには、initHS_SID.oraに次の行が必要です。
HS_FDS_CONNECT_INFO=InformixHS_FDS_SHAREABLE_NAME=/opt/odbc/lib/libodbc.soset INFORMIXDIR=/users/inf72set INFORMIXSERVER=osf_inf72set ODBCINI=/opt/odbc/odbc.ini
set文は、作業アカウントで指定されていればオプションであることに注意してください。各データベースには独自のset文があります。
HS_FDS_CONNECT_INFOパラメータの値は、odbc.iniファイル内のODBCデータ・ソース名と一致する必要があります。
これらのパラメータを設定できるのは、Windows NTプラットフォームの場合のみです。
定義済のデータ・リンク(UDL)を指定します。
SET|PRIVATE|SET PRIVATE HS_FDS_CONNECT_INFO="UDLFILE=data_link"
OLE DBエージェントの場合、HS_FDS_CONNECT_INFOは必須です。その他の初期化パラメータにはデフォルトがあるか、またはオプションです。デフォルト値を使用してオプションのパラメータを省略するか、またはインストールにあわせて調整済の値をパラメータで指定できます。
|
注意: デフォルト値を受け入れるか変更するかを決定する前に、「初期化パラメータの設定」ですべての初期化パラメータの詳細を参照してください。 |
ODBCエージェントを使用するには、Oracleデータベース・サーバーと同じマシンにODBCドライバをインストールする必要があります。Windows NTの場合は、ODBCドライバ・マネージャも同じマシンに置いてください。ODBCドライバ・マネージャとドライバは、次の要件を満たす必要があります。
Windows NTの場合、ODBCドライバとドライバ・マネージャは、ODBC Application Program Interface(API)準拠レベル1以上に準拠している必要があります。ODBCドライバまたはドライバ・マネージャで複数のアクティブODBCカーソルがサポートされない場合、Generic Connectivityを使用して実行できるSQL文の複雑度が制限されます。
使用するODBCドライバは、コアSQL ODBCデータ型をすべてサポートし、SQL構文レベルSQL_92をサポートしている必要があります。また、ODBCドライバは次のODBC APIを公開する必要があります。
この要件は、SQL処理機能を持ちOLE DBインタフェースを公開するOLE DBデータ・プロバイダに適用されます。
Generic Connectivityは、IDBInitialize::Initialize()のコール時にユーザー名とパスワードをプロバイダに渡します。
OLE DB(SQL)接続では、データ・プロバイダが次のOLE DBインタフェースを公開する必要があります。
| インタフェース | メソッド |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 IErrorLookupとGetErrorDescriptionメソッドの併用も可能 2 OLE DBプロバイダでBLOBが使用される場合にのみ必須 |
この要件は、SQL処理機能を持たないOLE DBデータ・プロバイダに適用されます。プロバイダが公開している場合、OLE DB(FS)接続にはOLE DBのIndexインタフェースが使用されます。
OLE DB(FS)接続では、データ・プロバイダが次のOLE DBインタフェースを公開する必要があります。
| インタフェース | メソッド |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 OLE DBプロバイダでBLOBが使用される場合にのみ必須 2 OLE DBプロバイダで索引が使用される場合にのみ必須 3 IErrorLookupとGetErrorDescriptionメソッドの併用も可能 |
OLE DB(FS)接続は汎用であるため、OLE DBインタフェースを公開する多数の異なるデータ・プロバイダに接続できます。この種のデータ・プロバイダは、それぞれ一定の要件を満たす必要があります。
OLE DBデータ・ソースでは、次の初期化プロパティをサポートする必要があります。
OLE DBデータ・ソースでは、次の行セット・プロパティもサポートする必要があります。
|
|
![]() Copyright © 2001, 2002 Oracle Corporation. All Rights Reserved. |
|