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およびその関連企業の登録商標です。その他の名称は、それぞれの所有者の商標または登録商標です。
このソフトウェアおよびドキュメントは、第三者のコンテンツ、製品、サービスへのアクセス、あるいはそれらに関する情報を提供することがあります。オラクル社およびその関連会社は、第三者のコンテンツ、製品、サービスに関して一切の責任を負わず、いかなる保証もいたしません。オラクル社およびその関連会社は、第三者のコンテンツ、製品、サービスへのアクセスまたは使用によって損失、費用、あるいは損害が発生しても、一切の責任を負いかねます。