| Oracle® Data Provider for .NET Oracle TimesTen In-Memory Databaseサポート・ユーザーズ・ガイド 11gリリース2(11.2)for Windows B66455-01 |
|
Oracle TimesTen In-Memory Databaseサポート・ユーザーズ・ガイド
11gリリース2(11.2)for Windows
B66455-01(原本部品番号:E18485-03)
2011年1月
Oracle Data Provider for .NET(ODP.NET)は、Microsoft ADO.NETインタフェースの実装です。Oracle TimesTen In-Memory Database(TimesTen)に対するODP.NETサポートによって、.NETクライアント・アプリケーションからTimesTenデータベースへの高速で効率的なADO.NETデータ・アクセスが提供されます。
このマニュアルでは、ODP.NETについて、TimesTen環境で使用する場合に固有の側面のみを説明します。一般情報については、『Oracle Data Provider for .NET開発者ガイド』を参照してください。
ODP.NETは、次に示す任意のTimesTenインストールとともに使用できます。
TimesTen Data Managerのみ(直接接続用)
TimesTen Clientのみ(TimesTen Data ManagerインスタンスおよびTimesTen Serverインスタンスに任意の場所からアクセス可能な場合に、クライアント/サーバー接続用)
TimesTen Data Manager、TimesTen ServerおよびTimesTen Client(直接接続またはクライアント/サーバー接続用)
このマニュアルでは、TimesTen環境におけるODP.NETの使用方法について、次の項で説明します。
このマニュアルの最後には、ドキュメントのアクセシビリティについての項も含まれています。
この項では、TimesTenでODP.NETの使用を開始する前に確認しておく必要のある事項について、次の項目で説明します。
次の点に注意してください。
ODP.NETは、Microsoft Visual Studio 2005以上を使用する.NET 2.0、3.0、3.5以上のフレームワーク、およびMicrosoft Visual Studio 2010を使用する.NET 4.0フレームワークをサポートします。
ODP.NETでは、TimesTenリリース11.2.1.6.1以上が必要です。
TimesTenのODP.NETは、TimesTenをサポートするMicrosoft Windows 32ビットおよび64ビットのすべてのプラットフォームでサポートされます。
32ビット・バージョンのODP.NETは、32ビット・インスタンスのTimesTenデータベースまたはTimesTenクライアントで使用する必要があります。同様に、64ビット・バージョンのODP.NETは、64ビット・インスタンスのTimesTenデータベースまたはTimesTenクライアントで使用する必要があります。
TimesTenのODP.NETでは、Oracle DatabaseのODP.NETで現在使用可能な一部の機能のみがサポートされています。具体的には、TimesTenのODP.NETでは、次の機能がサポートされています。
ODP.NET接続プーリング
ODP.NETトレース
次の機能は、TimesTenのODP.NETではサポートされていません。
Oracle Developer Tools for Visual Studio
Oracle Database Extensions for .NET
Oracle Providers for ASP.NET
TimesTenでODP.NETを使用するには、次の要件に注意してください。
システムに、TimesTen Data ManagerまたはTimesTen Clientをインストールする必要があります。ODP.NETまたはOCIには、TimesTenが含まれていません。
ODP.NETによるTimesTenのサポートは、Oracle Call Interface(OCI)によるTimesTenのサポートに依存します。具体的には、Oracle Databaseリリース11.2.0.2に含まれるOCIバージョンが必要です。現行のODP.NETリリースでは、TimesTenに含まれ、tt_install_dir\ttoracle_homeディレクトリ(tt_install_dirはTimesTenインストールのルート・ディレクトリ)の下にあるOCIバージョンを使用することができず、使用しません。(ただし、ODP.NETを使用しないOCIまたはPro*C/C++プログラムでは、TimesTenバージョンのOCIを問題なく使用できます。これらのプログラミング・インタフェースについては、Oracle TimesTen In-Memory Database C開発者ガイドの「TimesTenでのOracle Call Interfaceのサポート」および「TimesTenでのOracle Pro*C/C++プリコンパイラのサポート」を参照してください。)
「インストール後のパスに関する考慮事項」も参照してください。
Oracle DatabaseでODP.NETを使用する際の実行環境の要件は、TimesTenでODP.NETを使用する際にも同様に適用されます。詳細は、『Oracle Data Provider for .NET開発者ガイド』を参照してください。
TimesTenはPL/SQLオプションを使用してインストールする必要があり、接続属性の設定PLSQL=1(デフォルト)またはODBC データ ソース アドミニストレータによって、TimesTenデータベースでPL/SQLが有効になっている必要があります。PL/SQLがサポートされない一部のプラットフォームについては、Oracle TimesTen In-Memory Databaseリリース・ノートのPL/SQLに関する説明を参照してください。
前述の説明には、Oracle TimesTen In-Memory DatabaseのドキュメントおよびOracle Databaseドキュメント・ライブラリを参照する箇所があります。
TimesTenのドキュメントは、次の場所のOracle Technology Networkで入手できます。
http://www.oracle.com/technetwork/database/timesten/documentation/
Oracleのドキュメントは、次の場所のOracle Technology Networkでも入手できます。
http://www.oracle.com/technetwork/database/enterprise-edition/documentation/
この項では、ODP.NETの使用開始に役立つ次の項目について説明します。インストール手順はTimesTen固有でないことに注意してください。
この項では、次のインストールについて説明します。
ODP.NETのインストール・プロセスは、TimesTen環境とは関連がありません。TimesTenインストール・ディレクトリには、何もインストールされません。
(関連するWindowsレジストリ・エントリを含む)ODP.NETインストールについては、『Oracle Data Provider for .NET開発者ガイド』を参照してください。
|
重要:
|
Oracle Database 11.2.0.2.0パッチ・セットの一部としてODP.NETをインストールするには、次の手順を使用します。
このインストールでは、他のOracle Database環境の場合と同様に、Oracle Universal Installer(OUI)を使用します。(ディスク1にある)setup.exeファイルを実行してこれを稼働してから、次の手順を完了します。
「インストール・タイプの選択」ダイアログで、通常、「ランタイム」ラジオ・ボタンを選択して、「次へ」を選択します。
(「InstantClient」、「ランタイム」、「カスタム」および「管理者」の4つのインストール・オプションがあります。「ランタイム」オプションには、ODP.NETを含むOracleクライアントが含まれます。「InstantClient」オプションには、ODP.NETが含まれません。理由があって「カスタム」インストールを使用する場合は、ODP.NETを含めるためのチェック・ボックスがあります。)
表示された「ソフトウェアの更新のダウンロード」ダイアログで、状況に応じて、任意で「ソフトウェアの更新のスキップ」ラジオ・ボタンを選択できます。終了後、「次へ」を選択します。
表示された「製品言語の選択」ダイアログで、デフォルトの「英語」言語設定を使用(または任意の言語を選択)して、「次へ」を選択します。
表示された「インストール場所の指定」ダイアログで、通常、Oracleベースのパスおよびソフトウェアの場所にデフォルト値を使用します。または、次のようにします。
Oracleベースのパスに、Oracleホームの場所へのパスを入力(または参照)します。
Oracleホームの場所の下で、ソフトウェア・ファイルをインストールする任意のディレクトリの場所へのパスを入力(または参照)します。
|
重要: パスにスペースを含めることはできません。 |
インストーラによって前提条件がチェックされ、「サマリー」ダイアログが表示されます。「インストール」を選択します。
Oracle Data Access Components(ODAC)11.2.0.2.1リリースのOracle Universal Installer(OUI)バージョンの一部としてODP.NETをインストールするには、次の手順を使用します。
(OUIインストール用のODAC ZIPファイルを解凍するステージング・ディレクトリでアクセス可能な)setup.exeファイルを実行してOUIを稼働してから、次の手順を完了します。
OUIの「ようこそ」ページで、「次へ」を選択します。
インストールする製品を選択するページで、「Oracle Data Access Components for Oracle Client 11.2.0.2.1」を選択します。「次へ」を選択します。
インストール場所を選択するページで、デフォルト値を使用するか、必要に応じてかわりの場所を指定できます。「次へ」を選択します。
利用可能な製品コンポーネントを選択するページで、「Oracle Data Provider for .NET」(デフォルト)が選択されていることを確認します。ODP.NETの他のすべてのコンポーネントはオプションです。「次へ」を選択します。
|
注意: 「Oracle Providers for ASP.NET」も選択した場合は、指定した場所で一連のSQLスクリプトを実行するよう指示するページが表示されます。Oracle Providers for ASP.NETは、TimesTenとは関連がありません。 |
システムに複数のバージョンのVisual Studioが存在する場合は、「Oracle Developer Tools for Visual Studio」ページにバージョンがリストされるため、Oracle Data Access Components for Oracle Clientとともに構成するバージョンを選択できます。「次へ」を選択します。Oracle Developer Tools for Visual Studioは、TimesTenとは関連がありません。
システムに1つのバージョンのVisual Studioのみが存在する場合は、Oracle Data Access Components for Oracle Clientとともにそのバージョンが自動的に構成されるため、このページは表示されません。
「サマリー」ページで、「インストール」を選択します。
Oracle Data Access Components(ODAC)11.2.0.2.1リリースのOracle XCopyバージョンの一部としてODP.NETをインストールするには、次の手順を使用します。64ビット・バージョンと32ビット・バージョンで、インストール・プロセスは同じです。
XCopyを使用すると、システム管理者は、標準のODP.NETクライアントよりもサイズが小さく、構成が簡単で、OUIに比べてファイングレイン・コントロールのあるODP.NETクライアントを使用できます。これによって、多数のコンピュータに対する本番デプロイメントが簡単になり、カスタマイズしたデプロイメント・パッケージへのODP.NETの埋込みが簡素化されます。
このインストールでは、Oracle Universal Installerを使用しません。かわりに、(XCopyインストール用のODAC ZIPファイルを解凍するインストール・ディレクトリでアクセス可能な)install.batバッチ・ファイルを実行して、インストールを実行します。
これは、インストール手順のサマリーです。詳細は、インストール・ディレクトリに格納されるreadme.txtを参照してください。
|
重要: readme.txtファイルには、次の点が記載されています。
|
install.batを実行して、インストールするODAC製品を指定します。たとえば、インストール・ディレクトリがC:\oracle\odacで、ODACのOracleホーム名がodachomeである場合に、ODP.NET 2.0ライブラリのみを含むクライアントをインストールするには、次のコマンドを使用します。
install.bat odp.net2 C:\oracle\odac odachome
または、ODP.NET 4.0ライブラリのみを含むクライアントをインストールするには、次のコマンドを使用します。
install.bat odp.net4 C:\oracle\odac odachome
あるいは、すべてのODAC製品を含むクライアントをインストールするには、次のコマンドを使用します。
install.bat all C:\oracle\odac odachome
ODP.NETでは、適切なバージョン(TimesTen Instant Clientバージョンではなく、Oracleクライアント・バージョン)のOCIが常に検索されて使用されます。また、パスについて次を確認します。
PATH設定にTimesTen共有ライブラリの場所tt_install_dir\bin(tt_install_dirはTimesTenインストールのルート・ディレクトリ)が含まれていることを確認します。これは、パスに含まれる他のすべてのOracleディレクトリの後に続いている必要があります。
XCopyインストールでは、PATH設定で、(TimesTenディレクトリを含む)他のすべてのOracleディレクトリの前に、ODACインストール・ディレクトリおよびODACインストールのbinディレクトリを追加します。たとえば、インストール・ディレクトリがC:\oracle\odacである場合は、次を使用します。
set PATH=C:\oracle\odac;C:\oracle\odac\bin;%PATH%
|
注意: ODP.NETの設定については、Oracle Data Provider for .NETのREADMEファイルを参照してください。 |
ODP.NETを含むOracle Database製品のアンインストールについては、Oracle Databaseインストレーション・ガイドfor Microsoft Windowsの「Oracle Databaseソフトウェアの削除」を参照してください。
XCopyインストールをアンインストールするには、アンインストールする製品(またはすべての製品)と、ODAC製品のOracleホーム名を指定して、ステージング・ディレクトリからuninstall.batバッチ・ファイルを実行します(「ODAC 11.2.0.2.1 for Windows、XCopyバージョンの一部としてのODP.NETのインストール」を参照)。たとえば、Oracleホーム名がodachomeである場合に、ODP.NET 2.0ライブラリを含むクライアントをアンインストールするには、次を使用します。
uninstall.bat odp.net2 odachome
または、すべてのODAC製品をアンインストールするには、次を使用します。
uninstall.bat all odachome
アプリケーションの構築は、Visual Studio IDEを使用するか、Visual Studioコマンド・プロンプトから実行されるcsc.exeコマンドライン・コンパイラを使用して行うことができます。次の例では、csc.exeを使用しています(入力は1つのコマンドラインで行われています)。
C:\Temp> csc /out:myapp.exe /reference:C:\app\mydir\path\
Oracle.DataAccess.dll myapp.cs
Microsoft (R) Visual C# 2005 Compiler version 8.00.50727.3053
for Microsoft (R) Windows (R) 2005 Framework version 2.0.50727
Copyright (C) Microsoft Corporation 2001-2005. All rights reserved.
Oracle.DataAccess.dllアセンブリおよび依存ライブラリの場所は、Oracleのインストール・タイプおよびODP.NETアセンブリの.NETバージョン(2.xまたは4)に基づいています。詳細は、『Oracle Data Provider for .NET開発者ガイド』およびODP.NETのREADMEファイルを参照してください。
ODP.NET 11.2では、TimesTenおよびOracle Databaseへの複数の同時接続がサポートされています。ODP.NETインタフェース用に記述された既存のアプリケーションは、アプリケーション・コードに対して一連の最小限の変更を加えることで、TimesTenにアクセスできます。
TimesTen環境で、ODP.NETはOCIを使用してTimesTenデータベースと対話します。このため、Oracle Databaseでの場合と同様に、ODP.NETアプリケーションは、tnsnamesネーミング・メソッドまたは簡易接続ネーミング・メソッドを使用してTimesTenに接続できます。次に示すtnsnamesネーミング・メソッドおよび簡易接続ネーミング・メソッドについては、Oracle Database Net Services管理者ガイドの「ネーミング・メソッドの構成」を参照してください。
この項の内容は次のとおりです。
|
注意:
|
TimesTenでは、tnsnames構文がサポートされています。TimesTen tnsnames.oraエントリは、Oracle tnsnames.oraエントリを使用する場合と同様に使用できます。
次に、tnsnames.oraファイルでのTimesTenエントリの構文を示します。
tns_entry = (DESCRIPTION = (CONNECT_DATA = (SERVICE_NAME = dsn) (SERVER = timesten_direct | timesten_client)))
ここで、tns_entryは、エントリに割り当てる任意のTNS名です。次の点に注意してください。
ここで示されているように、DESCRIPTIONおよびCONNECT_DATAは必要です。
SERVICE_NAMEで、dsnはODBC データ ソース アドミニストレータで定義され、かつODP.NETアプリケーションを実行しているユーザーが表示可能なTimesTenデータソース名(DSN)である必要があります。
SERVERで、timesten_directはTimesTenデータベースへの直接接続を、timesten_clientはクライアント/サーバー接続を指定します。timesten_directを指定する場合、dsnはTimesTen Data Manager DSNである必要があります。timesten_clientを指定する場合、dsnはTimesTen Client DSNである必要があります。
DSN my_dsnによって参照されるTimesTenデータベースへの直接接続について、tnsnames.oraエントリの例を次に示します。
my_tnsname = (DESCRIPTION =
(CONNECT_DATA =
(SERVICE_NAME = my_dsn)
(SERVER = timesten_direct)))
tnsnames.oraファイルでmy_tnsnameエントリによって参照されるmy_dsn TimesTenデータベースに、ユーザーscottとしてパスワードtigerを使用して接続するには、ODP.NETアプリケーションで次の接続文字列を指定します。
"User Id=scott;Password=tiger;Data Source=my_tnsname"
tnsnames.oraファイルでmy_tnsnameエントリによって参照されるmy_dsnに、現行のオペレーティング・システム・ユーザーとして接続するには、ODP.NETアプリケーションで次の接続文字列を指定します。現行のオペレーティング・システム・ユーザーは、TimesTenインスタンス管理者または定義済のTimesTen外部ユーザーである必要があります。
"User Id=/;Data Source=my_tnsname"
TimesTenでは、簡易接続構文がサポートされているため、tnsnames.oraエントリを構成せずに接続を作成できます。次に、TimesTen簡易接続文字列の構文を示します。
host/service_name:server
次の点に注意してください。
ホスト名は、簡易接続構文を満たすよう指定する必要があります(そうでない場合は、TimesTenによって無視されます)。通常は、規則によって、名前にlocalhostが使用されます。
service_nameには、ODBC データ ソース アドミニストレータで定義され、かつODP.NETアプリケーションを実行しているユーザーが表示可能なTimesTen DSNを指定する必要があります。
serverで、timesten_directはTimesTenデータベースへの直接接続を、timesten_clientはクライアント/サーバー接続を指定します。timesten_directを指定する場合、service_nameはTimesTen Data Manager DSNである必要があります。timesten_clientを指定する場合、service_nameはTimesTen Client DSNである必要があります。
my_dsn DSNによって参照されるTimesTenデータベースに、ユーザーscottとしてパスワードtigerを使用して直接接続を確立するには、ODP.NETアプリケーションで次の接続文字列を指定します。
"User Id=scott;Password=tiger;Data Source=localhost/my_dsn:timesten_direct"
my_dsnによって参照されるTimesTenデータベースに、現行のオペレーティング・システム・ユーザーとして直接接続を確立するには、ODP.NETアプリケーションで次の接続文字列を指定します。現行のオペレーティング・システム・ユーザーは、TimesTenインスタンス管理者または定義済のTimesTen外部ユーザーである必要があります。
"User Id=/;Data Source=localhost/my_dsn:timesten_direct"
sqlnet.oraファイルが存在する場合、このファイルは、試行するネーミング・メソッドおよびその試行順序を指定します。ODP.NETは、次の優先順序でsqlnet.oraファイルを検索します。
TNS_ADMIN環境変数が設定されている場合は、指定された場所を参照します。
TNS_ADMINが設定されていない場合は、Oracle Databaseのデフォルトの場所を参照します(Oracle Database Net Servicesリファレンスの「sqlnet.oraファイルのパラメータ」を参照)。
sqlnet.oraが見つかった場合は、そこに含まれるネーミング・メソッドのみを使用できます。sqlnet.oraが見つからない場合は、tnsnamesネーミング・メソッドまたは簡易接続ネーミング・メソッドを使用できます。
TimesTenで、tnsnames.oraおよびsqlnet.oraファイルのサンプル・コピーは、tt_install_dir\network\admin\samplesディレクトリ(tt_install_dirはTimesTenインストールのルート・ディレクトリ)にあります。TimesTenによって提供される次のsqlnet.oraファイルでは、tnsnamesネーミング・メソッドと簡易接続ネーミング・メソッドの両方がサポートされます。
# To use ezconnect syntax or tnsnames, the following entries must be # included in the sqlnet.ora configuration. NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
この設定を使用すると、ODP.NETによって、接続文字列のtnsnames構文が最初に検索されます。tnsnames構文が見つからない場合は、簡易接続文字列が検索されます。
|
重要: ODP.NETには、Oracle Databaseネットワーク・ライブラリが含まれます。ODP.NETは、TimesTen付属のInstant Clientに含まれるOracle Databaseネットワーク・ライブラリのコピーを使用しません。(参考:tt_install_dir\ttoracle_home\instantclient_11_1にあります。) |
TimesTen接続属性は、ODP.NET接続文字列のPassword設定で、次のとおり構文を使用して設定できます。
(パスワード設定自体およびTimesTen接続属性の設定を含む)Password設定のコンポーネントは、セミコロンで区切られます。
Password設定にセミコロンが含まれる場合は常に、設定全体が引用符で囲まれます。
ODP.NET接続文字列全体が引用符で囲まれるため、Password設定の開始引用符および終了引用符には、それぞれ先頭に「\」エスケープ文字を付ける必要があります。
次の例では、TimesTenでユーザーscottにパスワードlionを指定します。ここでは、Oracle In-Memory Database Cache(IMDB Cache)で使用するために、Oracle Databaseでユーザーscottにパスワードtigerを指定するTimesTen OraclePWD接続属性も設定します。
"Data Source=mysource;User Id=scott;Password=\"lion;OraclePwd=tiger\"";
次の例では、もう一度、TimesTenでユーザーscottにパスワードlionを指定します。今回は、OraclePWD接続属性に加えて、TimesTen OracleNetServiceName接続属性を設定します。OracleNetServiceNameはOracle DatabaseのOracle IDを、OraclePWD設定は対応するパスワードtigerを指定します。この例の最後で、TimesTenパススルー・レベルを1に設定します。
"Data Source=mysource;User ID=scott;Password=\"lion;OraclePwd=tiger; OracleNetServiceName=mytest-pc.example.com;passthrough=1\"";
(TimesTen接続属性の一般情報については、Oracle TimesTen In-Memory Databaseリファレンスの「接続属性」を参照してください。IMDB Cacheおよびパススルー・レベルについては、Oracle In-Memory Database Cacheユーザーズ・ガイドを参照してください。)
|
注意: TimesTen接続属性は、通常通り、ODBC データ ソース アドミニストレータのTimesTen DSN定義で設定することもできます(Oracle TimesTen In-Memory Databaseオペレーション・ガイドの「TimesTenデータベースの管理」を参照)。ただし、これはセキュアではないため、OraclePWD属性などのパスワード設定にはお薦めしません。 |
NET 2.xまたは4.0環境でTimesTenを使用するODP.NETをテストするには、次の手順を実行します。(.NET 4.0の場合は、Visual Studio 2010をインストールして、Visual Studioコマンド・プロンプト2010で作業する必要があります。)
これらのテストを実行するには、Quick Startサンプル・プログラムを含むTimesTenインストールが必要です。
tt_install_dir\quickstart\sample_scripts\createdb\ディレクトリ(tt_install_dirはTimesTenインストールのルート・ディレクトリ)からbuild_sampledb.batスクリプトを実行します。これによって、TimesTenデータベースsampledb_1121がユーザーおよびオブジェクトとともに作成されます。
システムにODP.NETサンプル・プログラムDemoODP.csをコピーします。これは、次に示すTimesTenクイック・スタート・ディレクトリにあります。
tt_install_dir\quickstart\sample_code\odp.net\
次を含むtnsnames.oraファイルを作成します。
SAMPLEDB_1121 =(DESCRIPTION=(CONNECT_DATA = (SERVICE_NAME = SAMPLEDB_1121)(SERVER = timesten_direct)))
Visual Studioコマンド・プロンプトを開き、作成したtnsnames.oraファイルの場所を指定するよう環境変数TNS_ADMINを設定します。次に例を示します。
>set TNS_ADMIN=c:\mytnsdir\sqlnet
DemoODP.csが配置されていたディレクトリに移動して、DemoODPプログラムをコンパイルします。次に例を示します。
csc /out:DemoODP.exe /reference:C:\path\Oracle.DataAccess.dll DemoODP.cs
|
注意: Oracle.DataAccess.dllアセンブリおよび依存ライブラリの場所は、Oracleのインストール・タイプおよびODP.NETアセンブリの.NETバージョン(2.xまたは4)に基づいています。詳細は、『Oracle Data Provider for .NET開発者ガイド』およびODP.NETのREADMEファイルを参照してください。 |
次のようにDemoODPを実行します。(データベース名、ユーザー名およびパスワードは、build_sampledb.batの実行中に自動的に決定されます。)
DemoODP -db sampledb_1121 -user appuser -passwd welcome1
生成される出力は次のとおりです。
Start Test The employee who got the 10% pay raise was CLARK Employees in department #50: 7944, ITMGR, MANAGER, 7839, 10/08/2010 10:34:20 AM, 2500, <NULL>, 50 7945, DVLPR1, DEVELOPER, 7944, 10/08/2010 12:00:00 AM, 2000, <NULL>, 50 7946, DVLPR2, DEVELOPER, 7944, 10/08/2010 12:00:00 AM, 2000, <NULL>, 50 7947, DVLPR3, DEVELOPER, 7944, 10/08/2010 12:00:00 AM, 2000, <NULL>, 50 7948, DVLPR4, DEVELOPER, 7944, 10/08/2010 12:00:00 AM, 2000, <NULL>, 50 7949, DVLPR5, DEVELOPER, 7944, 10/08/2010 12:00:00 AM, 2000, <NULL>, 50 7950, DVLPR6, DEVELOPER, 7944, 10/08/2010 12:00:00 AM, 2000, <NULL>, 50 7951, DVLPR7, DEVELOPER, 7944, 10/08/2010 12:00:00 AM, 2000, <NULL>, 50 7952, DVLPR8, DEVELOPER, 7944, 10/08/2010 12:00:00 AM, 2000, <NULL>, 50 7953, DVLPR9, DEVELOPER, 7944, 10/08/2010 12:00:00 AM, 2000, <NULL>, 50 7954, DVLPR10, DEVELOPER, 7944, 10/08/2010 12:00:00 AM, 2000, <NULL>, 50 Test finished
この項では、TimesTen環境でODP.NETを使用するアプリケーションを開発する際に確認しておく必要のある事項について、次の項目で説明します。
文の実行によって生成された結果セットを処理する際およびREF CURSORを作成する際に、トランザクションをコミットする動作は、TimesTen接続とOracle Database接続で異なります。OracleDataReaderオブジェクトの結果セットが開かれている場合にTimesTenでトランザクションをコミットすると、Oracle Databaseでの場合と異なり、結果セットが自動的に閉じられます。これは、明示的なコミット、自動コミットおよび暗黙的なコミットに当てはまります。
TimesTenで、暗黙的なコミットは、DDL文の実行後に発生します。ODP.NETでは、コマンド接続からOracleTransactionオブジェクトを最初にインスタンス化せずにOracleCommandオブジェクトを実行した際にも、暗黙的なコミットが発生します。明示的なコミットは、OracleTransactionオブジェクトでCommitメソッドがコールされた場合に発生します。いずれの場合も、トランザクションで開かれている結果セットが完全に処理される前にTimesTen接続でコミットが発生すると、「関数順序エラー」例外がスローされる場合があります。
このような動作の違いは、多くの場合、OracleCommandオブジェクトの実行が、他のOracleCommandオブジェクトと関連付けられている結果セットの処理と交互に配置されると発生します。「関数順序エラー」例外を回避するには、OracleTransactionオブジェクトのコンテキスト内に、結果セットの実行および処理を排他的に含める必要があります。これによって、結果セットのすべての行が取得されるまで、コミットが発生しないようになります。
「関数順序エラー」例外は、OracleCommand、OracleRefCursorまたはOracleDataReaderオブジェクトのFetchSizeプロパティの値が原因で発生する場合があります。FetchSizeプロパティが明示的に設定されていないか、または大きい値に設定されていると、「関数順序エラー」例外がスローされる前に、アプリケーションによって多数の行がフェッチされることがあります。
TimesTenビルトイン・プロシージャは、結果セットを返さないビルトインについてのみ、TimesTen OCIから直接コールできます。この制限は、TimesTenでODP.NETを使用する際にも当てはまります。
次の例に示すように、OracleCommandインスタンスを使用してビルトインをコールします。ここで、TimesTenに接続するOracleConnectionインスタンスconnが確立されていると仮定します。OracleCommandインスタンスの使用を終えたら、Disposeメソッドをコールしてリソースを解放します。
// switching to passthrough 1 mode using ttOptSetFlag built-in function
string switchModeStmt = "call ttOptSetFlag('passthrough', 1)";
OracleCommand switchCmd = new OracleCommand(switchModeStmt, conn);
switchCmd.CommandType = CommandType.Text;
switchCmd.ExecuteNonQuery();
switchCmd.Dispose();
結果セットを返すビルトイン・プロシージャの場合は、ODP.NETから結果セットにアクセスできません。ただし、PL/SQLプログラムからビルトインをコールした場合は、PL/SQLを介してREF CURSORとして結果セットにアクセスできます。
この項では、リリース時点で判明している制限事項について説明します。
TimesTenバージョン11.2.1.6.1では、文のキャッシングが有効な場合にPL/SQLプロシージャをコールすると、保護されているメモリーへの書込みが試行される場合があります(BugDB 10231354)。この問題を解決するには、TimesTenバージョン11.2.1.7.0以上にアップグレードします。
セルフ・チューニングの文のキャッシュは、操作に使用可能なメモリーが十分でないと判断すると、自身を無効にします。アプリケーションでTimesTenへの(クライアント/サーバー接続ではなく)直接接続を使用する場合は、メモリーにデータベース全体がロードされるため、文のキャッシュに使用可能なメモリーが減少し、この動作が発生しやすくなることに注意してください。
この項では、発生する可能性のある様々な例外について、その解決方法を説明します。
例外「ORA-44818: このTimesTenデータベースにPL/SQL機能がインストールされていません」
ODBC データ ソース アドミニストレータでPLSQL接続属性を1に設定して、TimesTenデータベースに対してPL/SQLを有効にします。ODP.NETアプリケーションは、PL/SQLが有効になっていないTimesTenデータベースには接続できません。
例外「TimesTenデータベースのバージョンが、最低限必要な11.2.1.6.1より古いバージョンです」
TimesTenデータベース11.2.1.6.1以上のバージョンを参照するようtnsnamesエントリまたは簡易接続エントリのサービス名を変更します。TimesTen ODP.NETアプリケーションは、TimesTenデータベース11.2.1.6.1より前のバージョンに接続できません。
例外「ORA-12154: TNS:指定された接続識別子を解決できませんでした」または「ORA-12541: TNS:リスナーがありません」
ODP.NETアプリケーションからTimesTenデータベースに接続するには、ODP.NET接続文字列のData Source属性を、tnsnames.oraファイルのTimesTenエントリのTNS名またはTimesTen簡易接続文字列に設定する必要があります。
tnsnamesネーミング・メソッドを使用して接続する場合は、tnsnames.oraファイルのエントリがTimesTen DSNに関連付けられていることを確認します。また、TNS_ADMIN環境変数が、tnsnames.oraファイルが配置されているディレクトリに設定されていることを確認します。
簡易接続ネーミング・メソッドを使用して接続する場合は、service_nameがTimesTen DSNに設定され、かつDSNが直接接続とクライアント/サーバー接続のいずれを構成するかに基づいて、serverがtimesten_directまたはtimesten_clientに設定されていることを確認します。
例外「ORA-29158: ライブラリをオープンできません」
TimesTenデータベースに接続している場合は、tnsnames.oraファイルのエントリがTimesTen DSNに関連付けられているか、または簡易接続文字列のservice_nameがTimesTen DSNに設定されていることを確認します。
このエラーは、TimesTen tt_install_dir\binディレクトリにあるTimesTen ODBCドライバをODP.NETが検出できない場合に、パスの問題が原因で発生することもあります。(次のトラブルシューティング項目も参照してください。)
例外「ttcommon1121.dllが見つからないため、アプリケーションの起動に失敗しました。アプリケーションを再インストールすると、問題が解決される場合があります」
これは、PATH環境変数の設定にTimesTen共有ライブラリの場所tt_install_dir\binが含まれていないことを示します。
例外「保護されているメモリーに対して、読取りまたは書込み操作を行おうとしました。他のメモリーが壊れていることが考えられます。」
「既知の問題と制限事項」を参照してください。
既存のODP.NETプログラムがあり、そのプログラムでTimesTenではサポートされていないODP.NET機能が使用されているかどうかを確認する場合は、ttSrcScanコマンドライン・ユーティリティ(バージョン11.2.1.8.0以上)を使用すると、サポートされていない関数、型、型コード、属性、モードおよび定数に関してプログラムをスキャンできます。このユーティリティは、TimesTenまたはOracleがインストールされていない場合でも実行可能なスタンドアロン・ユーティリティであり、TimesTenでサポートされているどのプラットフォームでも動作します。入力としてソース・コード・ファイルを読み取り、出力としてHTMLおよびテキスト・ファイルを作成します。サポートされていない項目が検出されると、それらの項目はログに記録され、代替が示されます。ttSrcScan実行可能ファイルは、TimesTenのインストール先のquickstart/sample_utilディレクトリにあります。
入力ファイルまたはスキャン対象のプログラムのディレクトリ、およびttSrcScanレポートの出力ディレクトリを指定します。その他のオプションも使用できます。詳細は、sample_utilディレクトリにあるREADMEファイルを参照してください。
このリファレンスの項では、TimesTen環境におけるODP.NETのネームスペースおよびクラスのサポートについて説明します。
ODP.NETは、Oracle.DataAccess.ClientおよびOracle.DataAccess.Typesネームスペースのクラス、列挙、インタフェース、デリゲートおよび構造を実装します。Oracle.DataAccess.Clientネームスペースには、コアADO.NETクラスの実装およびODP.NETの列挙に加えて、ODP.NET固有のクラスが含まれています。Oracle.DataAccess.Typesネームスペースは、ODP.NETで使用できるOracleネイティブ・データ型のクラス、構造および例外を提供します。次に示すネームスペースについては、『Oracle Data Provider for .NET開発者ガイド』を参照してください。プログラムで次を使用してこれらにアクセスできる必要があります。
using Oracle.DataAccess.Client; using Oracle.DataAccess.Types;
次の項では、Oracle Data Provider for .NET、11gリリース2(11.2.0.2)について、TimesTenによるOracle.DataAccess.ClientおよびOracle.DataAccess.TypesネームスペースのODP.NETクラス、列挙およびタイプのサポートをリストします。
|
注意: ODP.NETアプリケーションからTimesTenデータベースに接続する場合、アプリケーションでは、TimesTenでサポートされる機能に対応するODP.NET機能のみを使用できます。これは、ここで説明するネームスペースのサポート内容にも反映されます。たとえば、Oracle Streams Advanced Queueingは、TimesTenでサポートされない機能であるため使用できません。TimesTenでサポートされないODP.NET機能を使用しようとすると、 |
次の表に、Oracle.DataAccess.Clientネームスペースのデリゲート、クラスおよび列挙のサポートをリストします。
表1 Oracle.DataAccess.Clientネームスペースのデリゲートのサポート
| デリゲート名 | サポート |
|---|---|
|
|
いいえ |
|
|
不可 |
|
|
不可 |
|
|
未対応 |
|
|
はい |
|
|
不可 |
|
|
はい |
|
|
はい |
表2 Oracle.DataAccess.Clientネームスペースのクラスのサポート
| クラス名 | サポート | 注意 |
|---|---|---|
|
|
不可 |
|
|
|
不可 |
|
|
|
不可 |
|
|
|
不可 |
|
|
|
不可 |
|
|
|
不可 |
|
|
|
不可 |
|
|
|
不可 |
|
|
|
不可 |
|
|
|
はい |
|
|
|
はい |
TimesTenによるこのクラスのプロパティおよびパブリック・メソッドのサポートについては、「OracleCommandクラスのサポート」を参照してください。 |
|
|
はい |
|
|
|
可 |
TimesTenによるこのクラスのプロパティおよびパブリック・メソッドのサポートについては、「OracleConnectionクラスのサポート」を参照してください。 |
|
|
可 |
|
|
|
可 |
|
|
|
可 |
TimesTenによるこのクラスのプロパティおよびパブリック・メソッドのサポートについては、「OracleDataReaderクラスのサポート」を参照してください。 |
|
|
可 |
|
|
|
不可 |
|
|
|
可 |
|
|
|
可 |
|
|
|
可 |
|
|
|
不可 |
|
|
|
不可 |
|
|
|
不可 |
|
|
|
可 |
|
|
|
不可 |
|
|
|
不可 |
|
|
|
可 |
|
|
|
可 |
|
|
|
可 |
|
|
|
可 |
|
|
|
不可 |
|
|
|
可 |
|
|
|
可 |
|
|
|
可 |
TimesTenによるこのクラスのプロパティおよびパブリック・メソッドのサポートについては、「OracleTransactionクラスのサポート」を参照してください。 |
|
|
不可 |
|
|
|
不可 |
表3 Oracle.DataAccess.Clientネームスペースの列挙のサポート
| 列挙名 | サポート |
|---|---|
|
|
不可 |
|
|
不可 |
|
|
不可 |
|
|
不可 |
|
|
不可 |
|
|
不可 |
|
|
不可 |
|
|
不可 |
|
|
不可 |
|
|
不可 |
|
|
不可 |
|
|
不可 |
|
|
不可 |
|
|
不可 |
|
|
不可 |
|
|
可 |
|
|
不可 |
|
|
不可 |
|
|
不可 |
|
|
不可 |
|
|
不可 |
|
|
対応 |
|
|
不可 |
|
|
不可 |
この項の以降の内容は次のとおりです。
次の表に、OracleCommandクラスのプロパティおよびメソッドのサポートをリストします。
表4 OracleCommandクラスのプロパティのサポート
| プロパティ名 | サポート |
|---|---|
|
|
不可 |
|
|
対応 |
|
|
可 |
|
|
不可 |
|
|
可 |
|
|
不可 |
|
|
可 |
|
|
可 |
|
|
不可 |
|
|
可 |
|
|
不可 |
|
|
不可 |
|
|
不可 |
|
|
不可 |
|
|
可 |
|
|
可 |
|
|
可 |
|
|
可 |
|
|
不可 |
|
|
不可 |
|
|
不可 |
次の表に、OracleConnectionクラスのプロパティおよびメソッドのサポートをリストします。
表6 OracleConnectionクラスのプロパティのサポート
| プロパティ名 | サポート |
|---|---|
|
|
不可 |
|
|
不可 |
|
|
不可 |
|
|
可 |
|
|
可 |
|
|
不可 |
|
|
不可 |
|
|
不可 |
|
|
可 |
|
|
不可 |
|
|
不可 |
|
|
不可 |
|
|
可 |
|
|
不可 |
|
|
可 |
|
|
可 |
表7 OracleConnectionクラスのメソッドのサポート
| メソッド名 | サポート | 注意 |
|---|---|---|
|
|
可 |
|
|
|
可 |
|
|
|
可 |
|
|
|
不可 |
|
|
|
可 |
|
|
|
可 |
|
|
|
可 |
|
|
|
不可 |
TimesTenでは、OCIを使用した分散トランザクションがサポートされていません。このため、ODP.NETアプリケーションは、TimesTen接続で分散トランザクションを使用できません。 |
|
|
不可 |
|
|
|
不可 |
|
|
|
可 |
アプリケーション開発者がデータベース情報を検出および列挙するための表、列、ユーザーおよび他のオブジェクトからなるメタデータの集合を返します。この情報はTimesTenに固有であり、Oracle Databaseから返される、対応するメタデータの集合とは異なる場合があります。たとえば、TimesTenでは |
|
|
可 |
|
|
|
可 |
|
|
|
不可 |
|
|
|
可 |
|
|
|
不可 |
OracleConnectionType、列挙およびOracleConnectionクラスのパブリック・プロパティを使用すると、ODP.NETアプリケーションで、特定の接続オブジェクトがTimesTenデータベース接続またはOracle Database接続に関連付けられているか、あるいは物理接続に関連付けられていないかを指定できます。プロパティには次のシグネチャがあります。
public OracleConnectionType ConnectionType
これによって、OracleConnectionTypeの列挙から次のいずれかの値が返されます。
OracleConnectionType.Undefined: No connection is associated with the OracleConnection object OracleConnectionType.Oracle: The OracleConnection object is associated with an Oracle database OracleConnectionType.TimesTen: The OracleConnection object is associated with a TimesTen database
次の表に、OracleDataReaderクラスのプロパティおよびメソッドのサポートをリストします。
表8 OracleDataReaderクラスのプロパティのサポート
| プロパティ名 | サポート |
|---|---|
|
|
可 |
|
|
可 |
|
|
可 |
|
|
可 |
|
|
可 |
|
|
可 |
|
|
可 |
|
|
不可 |
|
|
不可 |
|
|
不可 |
|
|
可 |
|
|
可 |
表9 OracleDataReaderクラスのメソッドのサポート
| メソッド名 | サポート |
|---|---|
|
|
可 |
|
|
可 |
|
|
不可 |
|
|
可 |
|
|
可 |
|
|
可 |
|
|
可 |
|
|
可 |
|
|
可 |
|
|
可 |
|
|
可 |
|
|
不可 |
|
|
可 |
|
|
可 |
|
|
不可 |
|
|
可 |
|
|
可 |
|
|
可 |
|
|
可 |
|
|
不可 |
|
|
可 |
|
|
不可 |
|
|
不可 |
|
|
不可 |
|
|
不可 |
|
|
可 |
|
|
可 |
|
|
不可 |
|
|
不可 |
|
|
不可 |
|
|
可 |
|
|
可 |
|
|
不可 |
|
|
不可 |
|
|
不可 |
|
|
可 |
|
|
可 |
|
|
可 |
|
|
可 |
|
|
可 |
|
|
可 |
|
|
可 |
|
|
可 |
|
|
不可 |
|
|
可 |
|
|
可 |
|
|
不可 |
|
|
可 |
|
|
不可 |
|
|
可 |
次の表に、OracleTransactionクラスのプロパティおよびメソッドのサポートをリストします。
次の表に、Oracle.DataAccess.Typesネームスペースの構造、例外、クラス、インタフェースおよび列挙のサポートをリストします。
表12 Oracle.DataAccess.Typesネームスペースの構造のサポート
| 構造名 | サポート |
|---|---|
|
|
可 |
|
|
可 |
|
|
可 |
|
|
不可 |
|
|
不可 |
|
|
可 |
|
|
可 |
|
|
不可 |
|
|
不可 |
表13 Oracle.DataAccess.Typesネームスペースの例外のサポート
| クラス名 | サポート |
|---|---|
|
|
可 |
|
|
可 |
|
|
可 |
表14 Oracle.DataAccess.Typesネームスペースのクラスのサポート
| クラス名 | サポート |
|---|---|
|
|
不可 |
|
|
不可 |
|
|
不可 |
|
|
不可 |
|
|
不可 |
|
|
不可 |
|
|
不可 |
|
|
可 |
|
|
不可 |
|
|
不可 |
|
|
不可 |
オラクル社は、障害のあるお客様にもオラクル社の製品、サービスおよびサポート・ドキュメントを簡単にご利用いただけることを目標としています。オラクル社のドキュメントには、ユーザーが障害支援技術を使用して情報を利用できる機能が組み込まれています。HTML形式のドキュメントで用意されており、障害のあるお客様が簡単にアクセスできるようにマークアップされています。標準規格は改善されつつあります。オラクル社はドキュメントをすべてのお客様がご利用できるように、市場をリードする他の技術ベンダーと積極的に連携して技術的な問題に対応しています。オラクル社のアクセシビリティについての詳細情報は、Oracle Accessibility ProgramのWebサイトhttp://www.oracle.com/accessibility/を参照してください。
ドキュメント内のサンプル・コードのアクセシビリティについて
スクリーン・リーダーは、ドキュメント内のサンプル・コードを正確に読めない場合があります。コード表記規則では閉じ括弧のみを行に記述する必要があります。しかし、一部のスクリーン・リーダーは括弧のみの行を読まない場合があります。
外部Webサイトのドキュメントのアクセシビリティについて
このドキュメントにはオラクル社およびその関連会社が所有または管理しないWebサイトへのリンクが含まれている場合があります。オラクル社およびその関連会社は、それらのWebサイトのアクセシビリティに関しての評価や言及は行っておりません。
Oracleサポートへのアクセス
Oracleカスタマは、My Oracle Supportから電子サポートにアクセスできます。詳細は、http://www.oracle.com/support/contact.htmlまたはhttp://www.oracle.com/accessibility/support.html(聴覚障害者向け)を参照してください。
Oracle Data Provider for .NET Oracle TimesTen In-Memory Databaseサポート・ユーザーズ・ガイド, 11gリリース2(11.2)for Windows
B66455-01
Copyright © 1996, 2011, Oracle and/or its affiliates.All rights reserved.
このソフトウェアおよび関連ドキュメントの使用と開示は、ライセンス契約の制約条件に従うものとし、知的財産に関する法律により保護されています。ライセンス契約で明示的に許諾されている場合もしくは法律によって認められている場合を除き、形式、手段に関係なく、いかなる部分も使用、複写、複製、翻訳、放送、修正、ライセンス供与、送信、配布、発表、実行、公開または表示することはできません。このソフトウェアのリバース・エンジニアリング、逆アセンブル、逆コンパイルは互換性のために法律によって規定されている場合を除き、禁止されています。
ここに記載された情報は予告なしに変更される場合があります。また、誤りが無いことの保証はいたしかねます。誤りを見つけた場合は、オラクル社までご連絡ください。
このソフトウェアまたは関連ドキュメントが、米国政府機関もしくは米国政府機関に代わってこのソフトウェアまたは関連ドキュメントをライセンスされた者に提供される場合は、次のNoticeが適用されます。
U.S. GOVERNMENT RIGHTS Programs, software, databases, and related documentation and technical data delivered to U.S. Government customers are "commercial computer software" or "commercial technical data" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations.As such, the use, duplication, disclosure, modification, and adaptation shall be subject to the restrictions and license terms set forth in the applicable Government contract, and, to the extent applicable by the terms of the Government contract, the additional rights set forth in FAR 52.227-19, Commercial Computer Software License (December 2007).Oracle USA, Inc., 500 Oracle Parkway, Redwood City, CA 94065.
このソフトウェアは様々な情報管理アプリケーションでの一般的な使用のために開発されたものです。このソフトウェアは、危険が伴うアプリケーション(人的傷害を発生させる可能性があるアプリケーションを含む)への用途を目的として開発されていません。このソフトウェアを危険が伴うアプリケーションで使用する際、このソフトウェアを安全に使用するために、適切な安全装置、バックアップ、冗長性(redundancy)、その他の対策を講じることは使用者の責任となります。このソフトウェアを危険が伴うアプリケーションで使用したことに起因して損害が発生しても、オラクル社およびその関連会社は一切の責任を負いかねます。
OracleはOracle Corporationおよびその関連企業の登録商標です。その他の名称は、それぞれの所有者の商標または登録商標です。
このソフトウェアおよびドキュメントは、第三者のコンテンツ、製品、サービスへのアクセス、あるいはそれらに関する情報を提供することがあります。オラクル社およびその関連会社は、第三者のコンテンツ、製品、サービスに関して一切の責任を負わず、いかなる保証もいたしません。オラクル社およびその関連会社は、第三者のコンテンツ、製品、サービスへのアクセスまたは使用によって損失、費用、あるいは損害が発生しても、一切の責任を負いかねます。