ヘッダーをスキップ

Oracle9i Heterogeneous Connectivity管理者ガイド
リリース2(9.2)

部品番号B13816-01
Go To Table Of Contents
目次
Go To Index
索引

Go to previous page Go to next page

7
Generic Connectivity

この章では、Generic Connectivityエージェントの構成と使用方法について説明します。

この章の内容は、次のとおりです。

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アーキテクチャ

Generic Connectivityを使用してOracle以外のデータ・ストアにアクセスするために、エージェントはODBCまたはOLE DBドライバを処理します。Oracleデータベース・サーバーには、ODBCまたはOLE DBドライバ・インタフェースのサポートが用意されています。使用するドライバは、エージェントと同じプラットフォーム上に存在する必要があります。Oracle以外のデータ・ストアは、Oracleデータベース・サーバーと同じマシン上にあっても、異なるマシン上にあってもかまいません。

OracleとOracle以外のシステムが別々のマシン上にある場合

図7-1に、OracleとOracle以外のデータベースが別々のマシン上にあり、異機種間サービスODBCエージェントを介して通信している構成例を示します。 

図7-1 OracleとOracle以外のシステムが別々のマシン上にある場合

この構成でのフローは次のとおりです。

  1. クライアントがOracle Netを介してOracleデータベース・サーバーに接続します。

  2. Oracleデータベース・サーバーの異機種間サービス・コンポーネントが、Oracle Netを介して異機種間サービスODBCエージェントに接続します。

  3. エージェントがOracle以外の次のコンポーネントと通信します。

    • ODBCドライバ・マネージャ

    • ODBCドライバ

    • Oracle以外のクライアント・アプリケーション

このクライアントは、ネットワークを介してOracle以外のデータ・ストアに接続します。

OracleとOracle以外のシステムが同じマシン上にある場合

図7-2に、OracleとOracle以外のデータベースが同じマシン上にあり、異機種間サービスODBCエージェントを介して通信している構成例を示します。 

図7-2 OracleとOracle以外のシステムが同じマシン上にある場合

この構成でのフローは次のとおりです。

  1. クライアントがOracle Netを介してOracleデータベース・サーバーに接続します。

  2. Oracleデータベース・サーバーの異機種間サービス・コンポーネントが、Oracle Netを介して異機種間サービスODBCエージェントに接続します。

  3. エージェントがOracle以外の次のコンポーネントと通信します。

    • ODBCドライバ・マネージャ

    • ODBCドライバ

ドライバはOracle以外のデータ・ストアへのアクセスを許可します。


注意:

Oracle以外のデータベースが同じマシン上にある場合にも、ODBCドライバがOracle以外のクライアント・ライブラリを必要とする場合があります。


SQLの実行

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の制限事項

Generic Connectivityには、次の制限事項があります。

サポートされるOracle SQL文および関数

Generic Connectivityでは、ODBCまたはOLE DBドライバとOracle以外のシステムで実行でき、かつ、サポートされるOracle SQL関数が含まれている場合にのみ、次の文がサポートされます。

Oracle以外のシステムでサポート対象とみなされるのは、限定的な関数セットのみです。ほとんどのOracle関数の場合、この限定セットには等価の関数が含まれていません。そのため、Oracleデータベース・サーバーにより後処理は実行されますが、多くのOracle関数はGeneric Connectivityでサポートされず、パフォーマンスが低下する可能性があります。

Oracle SQL関数がGeneric Connectivityでサポートされない場合、その関数はDELETEINSERTまたはUPDATE文でサポートされません。SELECT文では、これらの関数は、Oracleデータベース・サーバーにより評価され、Oracle以外のシステムから戻された後に後処理されます。

サポートされない関数がDELETEINSERTまたはUPDATE文に使用されている場合は、次のOracleエラーが生成されます。

ORA-02070: データベースdb_link_nameはこのコンテキストでは関数をサポートしません。

Generic Connectivityでは、次の最小限のSQL関数がサポートされるものと想定します。

Generic Connectivityエージェントの構成

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

各要素の意味:

たとえば、エージェントのトレースを有効化するには、HS_FDS_TRACE_LEVELパラメータを次のように設定します。

HS_FDS_TRACE_LEVEL=ON

通常、ほとんどのパラメータは初期化パラメータとしてのみ必要であるため、SETまたはPRIVATEを使用する必要はありません。SETは、ドライバまたはOracle以外のシステムに環境変数として必要なパラメータ値に使用します。

PRIVATEは、次の異機種間サービス・パラメータの場合にのみサポートされます。

パラメータ値にユーザー名やパスワードなどの機密情報が含まれる場合、これらのパラメータにはPRIVATEのみを使用する必要があります。

ODBCベース・データ・ソースの初期化パラメータの設定

初期化パラメータの設定は、オペレーティング・システムのタイプに応じて異なります。

Windows NTでのエージェント・パラメータの設定

ODBCドライバ・マネージャを使用して、定義済のファイル・データ・ソース名(DSN)またはシステムDSNを指定します。

ファイルDSNを使用して接続する場合、値を次のように指定します。

HS_FDS_CONNECT_INFO=FILEDSN=file_dsn

システムDSNを使用して接続する場合、値を次のように指定します。

HS_FDS_CONNECT_INFO=system_dsn

データソースのドライバを使用してこのデータソースに接続する場合、DSNの前にドライバ名を置き、セミコロン(;)を続けます。

NTでのパラメータの設定: 例

システム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を定義する手順は、次のとおりです。

  1. 「スタート」メニューから「設定」「コントロール パネル」を選択し、「ODBC」アイコンを選択します。

  2. 「システムDSN」タブをクリックしてシステム・データ・ソースを表示します。

  3. 「追加」をクリックします。

  4. インストール済ODBCドライバのリストから、データ・ソースで使用するドライバの名前を選択します。たとえば、「SQL Server」を選択します。

  5. 「完了」をクリックします。

  6. DSN名とオプションの記述を入力します。ODBCドライバに応じて他の情報を入力します。たとえば、SQL Serverの場合はSQL Serverマシンを入力します。


    注意:

    入力したDSN名は、initHS_SID.oraに指定されているHS_FDS_CONNECT_INFOパラメータの値と一致する必要があります。


  7. 「次へ」をクリックしてプロンプトに答えることを繰り返し、最後に「完了」をクリックします。

  8. 「OK」をクリックしてODBC Data Source Administratorを終了します。

UNIXプラットフォームでのエージェント・パラメータの設定

DSNとODBC共有可能ライブラリのパスを次のように指定します。

HS_FDS_CONNECT_INFO=dsn_value
HS_FDS_SHAREABLE_NAME=full_odbc_library_path_of_odbc_driver

ODBCエージェントの場合、HS_FDS_CONNECT_INFOはすべてのプラットフォームで必須です。また、ODBCエージェントの場合、UNIXプラットフォーム上ではHS_FDS_SHAREABLE_NAMEが必須です。その他の初期化パラメータにはデフォルトがあるか、またはオプションです。デフォルト値を使用してオプションのパラメータを省略するか、またはインストールにあわせて調整済の値をパラメータで指定できます。


注意:

デフォルト値を受け入れるか変更するかを決定する前に、「初期化パラメータの設定」ですべての初期化パラメータの詳細を参照してください。


UNIXでのパラメータの設定: 例

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=Informix
HS_FDS_SHAREABLE_NAME=/opt/odbc/lib/libodbc.so
set INFORMIXDIR=/users/inf72
set INFORMIXSERVER=osf_inf72
set ODBCINI=/opt/odbc/odbc.ini

set文は、作業アカウントで指定されていればオプションであることに注意してください。各データベースには独自のset文があります。

HS_FDS_CONNECT_INFOパラメータの値は、odbc.iniファイル内のODBCデータ・ソース名と一致する必要があります。

OLE DBベース・データ・ソースの初期化パラメータの設定

これらのパラメータを設定できるのは、Windows NTプラットフォームの場合のみです。

定義済のデータ・リンク(UDL)を指定します。

SET|PRIVATE|SET PRIVATE HS_FDS_CONNECT_INFO="UDLFILE=data_link"


注意:

パラメータ値に等号(=)を使用する場合は、引用符で囲む必要があります。


OLE DBエージェントの場合、HS_FDS_CONNECT_INFOは必須です。その他の初期化パラメータにはデフォルトがあるか、またはオプションです。デフォルト値を使用してオプションのパラメータを省略するか、またはインストールにあわせて調整済の値をパラメータで指定できます。


注意:

デフォルト値を受け入れるか変更するかを決定する前に、「初期化パラメータの設定」ですべての初期化パラメータの詳細を参照してください。


ODBC接続要件

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を公開する必要があります。

表7-1 ODBC関数 
ODBC関数 コメント

SQLAllocConnect

-

SQLAllocEnv

-

SQLAllocStmt

-

SQLBindCol

-

SQLBindParameter

-

SQLColumns

-

SQLConnect

-

SQLDescribeCol

-

SQLDisconnect

-

SQLDriverConnect

-

SQLError

-

SQLExecDirect

-

SQLExecute

-

SQLExtendedFetch

Oracle以外のシステムで使用する場合に推奨

SQLFetch

-

SQLForeignKeys

Oracle以外のシステムで使用する場合に推奨

SQLFreeConnect

-

SQLFreeEnv

-

SQLFreeStmt

-

SQLGetConnectOption

-

SQLGetData

-

SQLGetFunctions

-

SQLGetInfo

-

SQLGetTypeInfo

-

SQLNumParams

Oracle以外のシステムで使用する場合に推奨

SQLNumResultCols

-

SQLParamData

-

SQLPrepare

-

SQLPrimaryKeys

Oracle以外のシステムで使用する場合に推奨

SQLProcedureColumns

Oracle以外のシステムで使用する場合に推奨

SQLProcedures

Oracle以外のシステムで使用する場合に推奨

SQLPutData

-

SQLRowCount

-

SQLSetConnectOption

-

SQLSetStmtOption

-

SQLStatistics

-

SQLTables

-

SQLTransact

Oracle以外のシステムで使用する場合に推奨

OLE DB(SQL)接続要件

この要件は、SQL処理機能を持ちOLE DBインタフェースを公開するOLE DBデータ・プロバイダに適用されます。

Generic Connectivityは、IDBInitialize::Initialize()のコール時にユーザー名とパスワードをプロバイダに渡します。

OLE DB(SQL)接続では、データ・プロバイダが次のOLE DBインタフェースを公開する必要があります。

表7-2 OLE DB(SQL)インタフェース
インタフェース メソッド

IAccessor

CreateAccessorReleaseAccessor

IColumnsInfo

GetColumnsInfo(CommandおよびRowsetオブジェクト)

ICommand

Execute

ICommandPrepare

Prepare

ICommandProperties

SetProperties

ICommandText

SetCommandText

ICommandWithParameters

GetParameterInfo

IDBCreateCommand

CreateCommand

IDBCreateSession

CreateSession

IDBInitialize

Initialize

IDBSchemaRowset

GetRowset(表、列、索引。オプションでプロシージャ、プロシージャのパラメータ)

IErrorInfo脚注1

GetDescriptionGetSource

IErrorRecords

GetErrorInfo

ILockBytes(OLE)脚注2

Flush、ReadAt、SetSize、Stat、WriteAt

IRowset

GetData、GetNextRows、ReleaseRows、RestartPosition

IStream(OLE)

Read、Seek、SetSize、Stat、Write

ISupportErrorInfo

InterfaceSupportsErrorInfo

ITransactionLocal(オプション)

StartTransaction、Commit、Abort

1 IErrorLookupとGetErrorDescriptionメソッドの併用も可能
2 OLE DBプロバイダでBLOBが使用される場合にのみ必須

OLE DB(FS)接続要件

この要件は、SQL処理機能を持たないOLE DBデータ・プロバイダに適用されます。プロバイダが公開している場合、OLE DB(FS)接続にはOLE DBのIndexインタフェースが使用されます。

データ・プロバイダが公開するOLE DBインタフェース

OLE DB(FS)接続では、データ・プロバイダが次のOLE DBインタフェースを公開する必要があります。

表7-3 OLE DB(FS)インタフェース 
インタフェース メソッド

IAccessor

CreateAccessor、ReleaseAccessor

IColumnsInfo

GetColumnsInfo(CommandおよびRowsetオブジェクト)

IOpenRowset

OpenRowset

IDBCreateSession

CreateSession

IRowsetChange

DeleteRows、SetData、InsertRow

IRowsetLocate

GetRowsByBookmark

IRowsetUpdate

Update(オプション)

IDBInitialize

Initialize、Uninitialize

IDBSchemaRowset

GetRowset(表、列、索引。オプションでプロシージャ、プロシージャのパラメータ)

ILockBytes(OLE)脚注1

Flush、ReadAt、SetSize、Stat、WriteAt

IRowsetIndex脚注2

SetRange

IErrorInfo脚注3

GetDescription、GetSource

IErrorRecords

GetErrorInfo

IRowset

GetData、GetNextRows、ReleaseRows、RestartPosition

IStream(OLE)

Read、Seek、SetSize、Stat、Write

ITransactionLocal
(オプション)

StartTransaction、Commit、Abort

ISupportErrorInfo

InterfaceSupportsErrorInfo

ITableDefinition

CreateTable、DropTable

IDBProperties

SetProperties

1 OLE DBプロバイダでBLOBが使用される場合にのみ必須
2 OLE DBプロバイダで索引が使用される場合にのみ必須
3 IErrorLookupとGetErrorDescriptionメソッドの併用も可能

OLE DB(FS)接続は汎用であるため、OLE DBインタフェースを公開する多数の異なるデータ・プロバイダに接続できます。この種のデータ・プロバイダは、それぞれ一定の要件を満たす必要があります。


注意:

データ・プロバイダはブックマークを公開する必要があります。これにより、表の更新が可能になります。ブックマークが公開されていない場合、表は読取り専用です。


データ・ソースのプロパティ

OLE DBデータ・ソースでは、次の初期化プロパティをサポートする必要があります。

OLE DBデータ・ソースでは、次の行セット・プロパティもサポートする必要があります。


Go to previous page Go to next page
Oracle
Copyright © 2001, 2002 Oracle Corporation.

All Rights Reserved.
Go To Table Of Contents
目次
Go To Index
索引