Oracle® Data Provider for .NET Oracle TimesTen In-Memory Databaseサポート・ユーザーズ・ガイド 12c リリース1 (12.1) for Windows E48239-05 |
|
Oracle TimesTen In-Memory Databaseサポート・ユーザーズ・ガイド
12cリリース1 (12.1) for Windows
E48239-05(原本部品番号:E38358-09)
2020年7月
Oracle TimesTen In-Memory Database (TimesTen)は、高速なレスポンスおよびスループットのためにメモリーが最適化されたリレーショナル・データベースです。このデータベースは、実行時にはその全体がメモリーに格納され、ファイル・システムに保存されます。
クラシック・モードのOracle TimesTen In-Memory Databaseは、TimesTen Classicと呼ばれ、単一インスタンスのレプリケート・データベースを指します(旧リリースと同様)。
グリッド・モードのOracle TimesTen In-Memory Databaseは、TimesTen Scaleoutと呼ばれ、複数インスタンスの分散データベースを指します。TimesTen Scaleoutは相互に接続されたホストのグリッドとなり、これらのホストで実行されているインスタンスが連携して、高速アクセス、フォルト・トレランスおよびインメモリー・データに対する高可用性を実現します。
TimesTen単独では、クラシック・モードとグリッド・モードの両方を指します(TimesTenのユーティリティ、リリース、ディストリビューション、インストール、データベースによって実行されるアクション、データベース内の機能を指す場合など)。
TimesTen Application-Tier Database Cacheは、TimesTen Cacheと呼ばれ、Oracle Database Enterprise Editionのオプションです。TimesTen Cacheは、アプリケーション層内のレスポンス時間を改善する目的で、パフォーマンス重視のOracleデータベースのサブセットをTimesTenデータベース内のキャッシュ表へキャッシュするために役立ちます。キャッシュ表は、読取り専用または更新可能にすることができます。アプリケーションでは標準のStructured Query Language (SQL)を使用してキャッシュ表の読取りおよび更新を行い、TimesTenデータベースとOracleデータベースの間のデータの同期は自動的に実行されます。TimesTen Cacheは、TimesTen Classicのすべての機能とパフォーマンスに加えて、Oracle Databaseの表をキャッシュするための追加機能を提供します。
TimesTen ClassicまたはTimesTen Cacheで使用できるTimesTenレプリケーション機能によって、高可用性を実現できます。
TimesTenは、標準アプリケーション・インタフェースJDBC、ODBCおよびODP.NET、OracleインタフェースPL/SQL、OCIおよびPro*C/C++ならびにC++用TimesTen TTClassesライブラリをサポートします。
このドキュメントでは、TimesTen環境でのODP.NETの使用に特有の側面についてのみ説明します。また、ODP.NET for TimesTenという用語はTimesTenをサポートするODP.NETという意味で使用します。
ODP.NETと関連APIに関する情報については、『Oracle Data Provider for .NET開発者ガイド』を参照してください。
このドキュメントの内容は次のとおりです。
このマニュアルの最後には、ドキュメントのアクセシビリティについての項も含まれています。
この項では、TimesTen ClassicでODP.NETを使用する前に認識しておく必要のある事項について、次の内容で説明します。
これは、ODP.NET 12.1リリースのTimesTenサポート用に改訂されたドキュメントです。
次の点に注意してください。
サポートされているネームスペースおよびAPIの詳細は、「TimesTenでのODP.NETネームスペースおよびクラスのサポート状況」を参照してください。ODP.NET 12.1は、対応するOracleデータベースまたはOracle Data Access Components (ODAC)のリリースで使用できます。
このリリースの時点で、ODP.NET for TimesTenを使用できるのは次の環境です。
ODP.NET for .NET Framework 2.0 (Microsoft .NET Framework 3.5 SP 1以降の環境)
ODP.NET for .NET Framework 4 (Microsoft .NET Framework 4または4.5の環境)
ODP.NET for TimesTenは、TimesTenをサポートするすべてのMicrosoft Windowsプラットフォームで使用できます。ODP.NETの64ビット・バージョンはTimesTenデータベースまたはTimesTen Clientの64ビット・インスタンスとともに使用してください。
ODP.NET for TimesTenでは、ODP.NET for Oracle Databaseで現在利用可能な機能のサブセットがサポートされています。このリリースの時点で、具体的には次の機能がサポートされています。
ODP.NET接続のプーリング
ODP.NETのトレース
現時点では、次の機能はODP.NET for TimesTenでサポートされていません。
ADO.NET Entity Frameworkオブジェクト・リレーショナル・マッパー
LINQ(言語統合問合せ)
現時点では、ODP.NET for TimesTenは、次のOracle Databaseクライアント・コンポーネントと相互運用できません。
Oracle Developer Tools for Visual Studio
Oracle Database Extensions for .NET
Oracle Providers for ASP.NET
ODP.NET for TimesTenを使用する際には、次の要件があることに注意してください。
システムにTimesTen Data ManagerまたはTimesTen Clientのいずれか、または両方をインストールする必要があります。TimesTenは、ODP.NETやOCIに付属するものではありません。
TimesTen 18.1では必ずPL/SQLをインストールし有効にする必要があります。
ODP.NET 12.1 for TimesTenは、Oracle Call Interface (OCI)のTimesTenサポートに依存し、OCIのバージョンはTimesTenで提供されるバージョンではなく、ODP.NET 12.1リリースで提供されるバージョンが必要です。
「インストール後のパスに関する考慮事項」も参照してください。
ノート:
|
Oracle DatabaseでODP.NETを使用する実行環境の要件は、TimesTenでODP.NETを使用する場合にも該当します。詳細は、『Oracle Data Provider for .NET開発者ガイド』を参照してください。
前述のいくつかの説明では、TimesTenおよびOracle Databaseドキュメント・ライブラリのドキュメントについて言及しています。
TimesTenのドキュメントは、https://docs.oracle.com/database/timesten-18.1
で入手できます。
Oracle 12c リリース1 (12.1)におけるODP.NETの詳細は、https://docs.oracle.com/database/121/nav/portal_5.htm
の下の「.NETおよびWindowsアプリケーション開発」を参照してください。
この項では、ODP.NETの使用を開始する際に役立つ次の項目について説明します。インストール・ステップは、TimesTenに固有のものではないことに注意してください。
この項では、次のインストールについて説明します。
ODP.NETのインストール手順は、TimesTen環境からは独立しています。TimesTenのインストール・ディレクトリには何もインストールされません。
関連するWindowsのレジストリ・エントリを含むODP.NETのインストールの詳細は、『Oracle Data Provider for .NET開発者ガイド』を参照してください。
重要:
|
WindowsのOracle Databaseインストールには、ODP.NETが含まれます。特別なステップは必要ありません。
Oracle Data Access Components(ODAC)12.1リリースのOracle Universal Installer(OUI)バージョンの一部としてODP.NETをインストールするには、次の手順を実行します。
OUIインストール用にODAC ZIPファイルを解凍したステージング・ディレクトリにアクセスして、OUIのsetup.exe
ファイルを実行して、次のステップを実行します。
「製品言語の選択」ダイアログで、言語を選択します。
「Oracleホーム・ユーザーの指定」ダイアログで、適切なユーザー・アカウントを選択します。
「インストール場所の指定」ダイアログで、必要なベースおよびソフトウェアの場所を指定します。
「使用可能な製品コンポーネント」ダイアログで、Oracle Data Provider for .NETおよび他の必要なコンポーネントを選択します。
ノート: Oracle Providers for ASP.NETは、TimesTenには関係ありません。他の目的で必要な場合を除き、選択を解除できます。 |
ODP.NET (Oracle Data Provider for .NET)ダイアログで、ボックスを選択してODP.NETを構成します。
前提条件チェックの実行ダイアログで、「チェック」の下にある必要な項目をオプションで選択し、ダイアログの下部にある結果を参照できます。
「サマリー」ダイアログはインストール設定をまとめます。
「製品のインストール」ダイアログで、インストールを実行します。
「終了」ダイアログで、ダイアログの関連する追加指示に従います。
Oracle Data Access Components(ODAC)12.1リリースのOracle XCOPYバージョンの一部としてODP.NETをインストールするには、次の手順を実行します。
XCopyには、システム管理者用に、OUIで用意されているものよりも簡単かつきめ細かく操作することができる、標準のODP.NETクライアントよりも小さなODP.NETクライアントが用意されています。これにより、多数のコンピュータに本番をデプロイする際の利便性が向上し、カスタマイズしたデプロイメント・パッケージにODP.NETを埋め込むことが容易になります。
このインストールでは、Oracle Universal Installerは使用されません。かわりに、(XCopyインストール用にODAC ZIPファイルを解凍したインストール・ディレクトリにある)install.bat
バッチ・ファイルを実行してインストールを実行します。
ここではインストール手順の概要が説明されています。詳細は、readme.htm
を参照してください(こちらもインストール・ディレクトリに含まれています)。
重要: readme.htm ファイルでは、次の点が強調されています。
|
install.bat
を実行し、インストールを希望するODAC製品を指定します。たとえば、C:\oracle\odac
がインストール・ディレクトリであり、odachome
がODACのOracleホームの名前だと仮定した場合、クライアントにODP.NET for .NET 2.0ライブラリのみをインストールする場合は、次のコマンドを使用します。
install.bat odp.net2 C:\oracle\odac odachome
または、クライアントにODP.NET for .NET 4ライブラリのみをインストールするには、次のコマンドを実行します。
install.bat odp.net4 C:\oracle\odac odachome
または、クライアントにすべてのODAC製品をインストールするには、次のコマンドを実行します。
install.bat all C:\oracle\odac odachome
TimesTen環境では、ODP.NETにより適切なOCIバージョンが検出され使用されます(つまり、TimesTen Instant ClientバージョンではなくOracle Clientのバージョン)。さらに、パスについて次が確認されます。
PATH
設定でTimesTen共有ライブラリの場所がtimesten_home
\bin
になっていることを確認します(timesten_home
はTimesTenインスタンスのホーム・ディレクトリ)。これは、パス内のその他のOracleディレクトリの後に続きます。
WindowsではインストールごとにTimesTenインスタンスが1つのみ存在し、timesten_home
(インスタンス・ホーム)はtt_installation_dir
\instance
を指すということを覚えておいてください。
XCopyインストールの場合、TimesTenのディレクトリを含むその他のOracleディレクトリの後に、PATH
設定に、ODACインストール・ディレクトリとODACインストールbin
ディレクトリを追加します。たとえば、C:\oracle\odac
がインストール・ディレクトリであるとします。
set PATH=C:\oracle\odac;C:\oracle\odac\bin;%PATH%
ノート: ODP.NETの設定の詳細は、ODP.NETのREADMEファイルを参照してください。 |
ODP.NETを含むOracle Database製品のアンインストールの詳細は、『Oracle Databaseインストレーション・ガイド for Microsoft Windows』のOracle Databaseソフトウェアの削除に関する説明を参照してください。
OUIを使用してインストールしたバージョンをアンインストールするには、setup.exe
を再実行します(「ODAC 12.1 for Windows (OUIバージョン)の一部としてのODP.NETのインストール」を参照)。OUIのようこそページで、「製品の削除」をクリックします。表示された「インベントリ」ダイアログで、アンインストールする製品を1つまたは複数選択し、「削除」を選択します。「確認」ダイアログと「警告」ダイアログで「はい」を選択します。製品がアンインストールされたら「インベントリ」ダイアログを閉じます。
XCopyインストールをアンインストールするには、アンインストールする製品(またはすべての製品)とODAC製品のOracleホーム名を指定し、ODP.NETインストール・ディレクトリ(「ODAC 12.1 for Windows(XCopyバージョン)の一部としてのODP.NETのインストール」を参照)からuninstall.bat
バッチ・ファイルを実行します。たとえば、ODP.NET for .NET 2.0ライブラリを含むクライアントをアンインストールするには、Oracleホーム名がodachome
であると仮定した場合、次のように実行します。
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製品のインストールのタイプおよび.NETのバージョンによって異なります。詳細は、『Oracle Data Provider for .NET開発者ガイド』およびODP.NETのREADMEファイルを参照してください。
ノート: Visual Studioは、ODP.NET for TimesTenのランタイムの必須要件ではありませんが、アプリケーションを開発する場合は、Visual Studioに同梱のC#コンパイラなどの.NETコンパイラが必要です。 |
ODP.NET for TimesTenでは、TimesTenおよびOracle Databaseへの複数の同時接続がサポートされています。ODP.NETインタフェース用に記述された既存のアプリケーションは、アプリケーション・コードに対して一連の最小限の変更を加えることで、TimesTenにアクセスできます。
TimesTen環境でODP.NETは、TimesTenデータベースとの通信にOCIを使用します。したがって、Oracle Databaseの場合と同様に、ODP.NETアプリケーションはtnsnames
またはeasy connectネーミング・メソッドを使用して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 Data Source Administratorで定義されているTimesTenデータ・ソース名(DSN)である必要があり、ODP.NETアプリケーションを実行するユーザーから参照可能である必要があります。
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)))
ユーザーscott
とパスワードtiger
を使用し、tnsnames.ora
ファイルのmy_tnsname
エントリによって参照されるmy_dsn
TimesTenデータベースに接続するには、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 Classicの場合は、ttInstanceCreate -tnsadmin オプションまたはttInstanceModify -tns_admin オプションを使用して(TNS_ADMIN 環境変数に加えて使用)、tnsnames の場所を設定できます。 |
TimesTenでは、tnsnames.ora
エントリを構成せずに接続を許可する簡易接続構文をサポートしています。TimesTen簡易接続文字列の構文は次のとおりです。
host/service_name:server
次の点に注意してください。
簡易接続の構文に従うにはホスト名を指定する必要があります(指定しない場合、TimesTenでは無視されます)。慣例的に、通常localhost
名が使用されます。
service_name
には、ODP.NETアプリケーションを実行するユーザーから参照可能なODBC Data Source Administratorで定義されているTimesTen DSNを指定します。
server
では、timesten_direct
ではTimesTenデータベースへの直接接続が指定され、timesten_client
ではクライアント/サーバー接続が指定されます。timesten_direct
を指定した場合、service_name
はTimesTen Data Manager DSNである必要があります。timesten_client
を指定した場合、service_name
はTimesTen Client DSNである必要があります。
ユーザーscott
とパスワードtiger
でmy_dsn
DSNから参照されるTimesTenデータベースへの直接接続を確立するには、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
環境変数が設定されている場合、ODP.NETではその指定場所が検索されます。
TNS_ADMIN
が設定されていない場合、Oracle Databaseのデフォルトの場所は、『Oracle Database Net Servicesリファレンス』の「sqlnet.oraファイルのパラメータ」の説明のとおりにODP.NETによって検索されます。
sqlnet.ora
が検出された場合、そこに示されるネーミング・メソッドのみを使用できます。sqlnet.ora
が検出されない場合、tnsnames
または簡易接続ネーミング・メソッドのいずれかを使用できます。
TimesTenでは、tnsnames.ora
およびsqlnet.ora
ファイルのサンプル・コピーはtt_installation_dir
\network\admin\samples
ディレクトリにあります(ここで、tt_installation_dir
はTimesTenインストールのルート・ディレクトリ)。次にTimesTenで用意されている、tnsnames
ネーミング・メソッドと簡易接続ネーミング・メソッドの両方をサポートするsqlnet.ora
ファイルを示します。
# 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ネットワーク・ライブラリが含まれます。TimesTen環境では、ODP.NETはTimesTen付属のInstant Clientに含まれるOracle Databaseネットワーク・ライブラリのコピーを使用しません(参考: TimesTenリリースが同梱されて出荷されるOracle Database 12.1 Instant Clientの場合、tt_installation_dir \ttoracle_home\instantclient_12_1 にあります。) |
次の構文で、ODP.NET接続文字列のPassword
設定にTimesTen接続属性を設定できます。
パスワード設定自体と任意のTimesTen接続属性の設定を含む、Password
設定の構成要素は、セミコロンで区切ります。
Password
設定にセミコロンが含まれる場合は、必ず設定全体を引用符で囲む必要があります。
ODP.NET接続文字列全体が引用符で囲まれるので、Password
設定の始まりの引用符と終わりの引用符の前にはそれぞれ\
のエスケープ文字が必要です。
次の例では、TimesTenでユーザーscott
に対し、パスワードlion
を設定します。また、TimesTen Application-Tier Database Cache (TimesTen Cache)を使用するために、Oracle Databaseでユーザーscott
に対しパスワードtiger
を指定する、TimesTen OraclePWD
接続属性も設定します。
"Data Source=mysource;User Id=scott;Password=\"lion;OraclePwd=tiger\"";
次の例では、また、TimesTenでユーザーscott
に対し、パスワードlion
を設定します。今回は、TimesTenのOracleNetServiceName
接続属性とOraclePWD
接続属性を設定します。OracleNetServiceName
では、Oracle DatabaseのOracle IDを、対応するパスワードtiger
を指定しOraclePWD
設定に指定します。この例では、最後に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リファレンス』の接続属性に関する説明を参照してください。)
ノート: 『Oracle TimesTen In-Memory Databaseオペレーション・ガイド』のTimesTenデータベースの管理に関する説明に従うと、通常どおり、ODBC Data Source AdministratorのTimesTen DSN定義にTimesTen接続属性を設定できます。ただし、これは安全ではないので、OraclePWD 属性などのパスワード設定は推奨されません。 |
.NET環境でTimesTenを使用するODP.NETをテストするには、次のステップを実行します。
これらのテストを実行するには、TimesTenインストールが必要であり、TimesTen Quick Startサンプル・アプリケーションにアクセスできる必要があります。次の手順は、Visual Studioの使用を想定しています。
ノート: TimesTen Classic Quick Startは、TimesTen GitHubの場所から入手できます。ここにはすべてのチュートリアル、使用方法説明およびサンプル・アプリケーションが含まれています。 |
Quick Startのttquickstartenv.bat
スクリプト(一般にTimesTen設定に使用されるttenv.bat
スクリプトのスーパーセット)を実行して環境を設定します。
Quick Startのbuild_sampledb.bat
スクリプトを実行します。これによってsampledb
というTimesTenデータベースがユーザーとオブジェクトとともに作成されます。
ODP.NETサンプル・プログラムをシステムのDemoODP.cs
にコピーします。
次を含むtnsnames.ora
ファイルを作成します。
sampledb =(DESCRIPTION=(CONNECT_DATA = (SERVICE_NAME = sampledb)(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
ノート:
|
DemoODP
を次のとおり実行します。(データベース名、ユーザー名、パスワードは、build_sampledb.bat
の実行時に自動的に判別されます。)
DemoODP -db sampledb -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
オブジェクトが実行されると、暗黙的なコミットも発生します。明示的なコミットは、Commit
メソッドがOracleTransaction
オブジェクトでコールされる際に発生します。いずれの場合にも、トランザクションでオープンされている結果セットが完全に処理される前にTimesTen接続でコミットが発生すると、「Function sequence error
」例外がスローされる場合があります。
この動作の違いは、OracleCommand
オブジェクトの実行が別のOracleCommand
オブジェクトと関連付けられている結果セットの処理とインターリーブされるとき、発生する可能性が高くなります。「Function sequence error
」例外を回避するには、結果セットの実行と処理はOracleTransaction
オブジェクトのコンテキスト内に排他的に含められる必要があります。これによって、結果セットのすべての行が取得される前にコミットが発生することを回避できます。
「Function sequence error
」例外は、OracleCommand
、OracleRefCursor
またはOracleDataReader
オブジェクトのFetchSize
プロパティの値によって発生する場合があります。FetchSize
プロパティが明示的に設定されていなかったり、大きな値に設定されている場合、「Function sequence error
」例外がスローされる前に、アプリケーションによって多数の行がフェッチされる場合があります。
TimesTen組込みプロシージャは、結果セットを戻さない組込みのみ、TimesTen OCIから直接コールできます。したがって、この制限は、ODP.NET for TimesTenにも適用されます。
次の例のように、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から組込みをコールする場合は、OUT
パラメータとしてアクセスできます。次に例を示します。
int passThruValue = -1; OracleCommand cmd = conn.CreateCommand(); cmd.CommandText = "declare v_name varchar2(255); begin execute immediate 'call ttOptGetFlag(''passthrough'')' into v_name, :rc1; end;"; cmd.Parameters.Add("rc1", OracleDbType.Int32, -1, ParameterDirection.Output); cmd.ExecuteNonQuery(); passThruValue = Convert.ToInt32(cmd.Parameters[0].Value.ToString()); cmd.Parameters.Clear(); cmd.Dispose();
TimesTenのVARCHAR2
、NVARCHAR2
およびVARBINARY
型でサポートされるデータは最大4MBです。ODP.NET for TimesTenは、これらのデータ型(およびその他のTimesTen SQLタイプ)の最大サイズの送信をサポートします。
ノート: ODP.NET 12.1をTimesTen環境外で使用する場合、以前のリリースでは文字データのサイズには4KBの制限がありましたが、32KBに増えました。 |
TimesTenのLOBサポートは、OracleDataReader
オブジェクトのInitialLobFetchSize
プロパティのデフォルトの0 (ゼロ)設定に関連付けられたLOBアクセス・メソッドに限定されます。このプロパティが他の値に変更されている場合、TimesTenはこの変更を無視し、その値が0の設定のままであると想定します。
「OracleDataReaderクラスのサポート状況」も参照してください。
この項では、ODP.NET for TimesTen使用時に発生する可能性がある様々な例外の解決方法を説明します。
例外「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に設定され、server
がDSNによって直接接続されるかクライアント/サーバー接続されるかの構成に応じて、timesten_direct
またはtimesten_client
のいずれかに設定されていることを確認します。
例外「ORA-29158: ライブラリをオープンできません。」
TimesTenデータベースに接続する場合、tnsnames.ora
ファイルのエントリがTimesTen DSNに関連付けられているか、または簡易接続文字列内のservice_name
がTimesTen DSNに設定されていることを確認します。
このエラーは、ODP.NETがTimesTenのtimesten_home
\install\lib
ディレクトリ内でTimesTen ODBCドライバを検出できない場合に、パスの問題によっても発生します。(次のトラブルシューティング項目も参照してください。)
例外「ORA-29159:ライブラリを読み込めません。」
前述のORA-29158
のステップに加え、tnsnames.ora
ファイル内のサーバー設定または簡易接続文字列が、TimesTen DSNのタイプに応じてtimesten_direct
またはtimesten_client
であることを確認します。
tnsnames.ora
および簡易接続については、『Oracle TimesTen In-Memory Database C開発者ガイド』のOCIでのTimesTenデータベースへの接続に関する説明を参照してください。
例外: 「ttcommonxxxx.dllが検出されなかったので、アプリケーションの起動に失敗しました。アプリケーションを再インストールすると問題を解決できる場合があります」
これは、TimesTen共有ライブラリの場所timesten_home
\install\lib
がPATH
環境変数設定にないことを示します。
ノート: xxxxには、TimesTenのリリース番号が表示されます。TimesTen 18.1リリースでは、ファイル名はttcommon181.dll になります。 |
既存のODP.NETアプリケーションがあり、そのアプリケーションでTimesTenではサポートされていないODP.NET機能が使用されているかどうかを確認する場合は、ttSrcScan
コマンドライン・ユーティリティを使用すると、サポートされていない関数、型、型コード、属性、モードおよび定数に関してプログラムをスキャンできます。このユーティリティは、TimesTenまたはOracle Databaseがインストールされていない場合でも実行可能なスタンドアロン・ユーティリティであり、TimesTenでサポートされているどのプラットフォームでも動作します。入力としてソース・コード・ファイルを読み取り、出力としてHTMLおよびテキスト・ファイルを作成します。サポートされていない項目が検出されると、それらの項目はログに記録され、代替が示されます。入力ファイルまたはスキャン対象のプログラムのディレクトリ、およびttSrcScan
レポートの出力ディレクトリを指定します。その他のオプションも使用できます。
ttSrcScan
ユーティリティは、Oracle Technology Networkのサイトで入手できます。その他の詳細は、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 Databaseにネイティブな型のクラス、構造、例外を提供します。次に示すネームスペース以外については、『Oracle Data Provider for .NET開発者ガイド』を参照してください。プログラムから、次のようにそれらにアクセスできる必要があります。
using Oracle.DataAccess.Client; using Oracle.DataAccess.Types;
次の項では、ODP.NET 12.1リリース用に記述されている、Oracle.DataAccess.Client
およびOracle.DataAccess.Types
ネームスペースのODP.NETクラス、列挙および型に対するTimesTenのサポートについて説明します。
ノート: ODP.NETアプリケーションからTimesTenに接続する場合、アプリケーションでは対応するTimesTenがサポートするODP.NETの機能のみ使用できます。これについては、ここで説明するネームスペースに対するサポートで示しています。たとえば、TimesTenではサポートしていない、Oracle Streamsアドバンスト・キューイングは使用することはできません。TimesTenでサポートされないODP.NET機能の使用を試行すると、 |
次の表では、Oracle.DataAccess.Client
ネームスペースのサポートされているデリゲート、クラス、列挙の一覧を示します。
表1 Oracle.DataAccess.Clientネームスペース・デリゲートのサポート状況
デリゲート名 | ノート |
---|---|
|
注意事項はありません |
|
注意事項はありません |
|
注意事項はありません |
表2 Oracle.DataAccess.Clientネームスペース・クラスのサポート状況
クラス名 | ノート |
---|---|
|
注意事項はありません |
|
TimesTenがサポートするこのクラスのプロパティおよびpublicメソッドの詳細は、「OracleCommandクラスのサポート状況」を参照してください。 |
|
注意事項はありません |
|
TimesTenがサポートするこのクラスのプロパティおよびpublicメソッドのサポートの詳細は、「OracleConnectionクラスのサポート状況」を参照してください。 |
|
注意事項はありません |
|
|
|
TimesTenがサポートするこのクラスのプロパティおよびpublicメソッドの詳細は、「OracleDataReaderクラスのサポート状況」を参照してください。 |
|
注意事項はありません |
|
注意事項はありません |
|
注意事項はありません |
|
注意事項はありません |
|
注意事項はありません |
|
注意事項はありません |
|
注意事項はありません |
|
注意事項はありません |
|
注意事項はありません |
|
注意事項はありません |
|
注意事項はありません |
|
TimesTenがサポートするこのクラスのプロパティおよびpublicメソッドの詳細は、「OracleTransactionクラスのサポート状況」を参照してください。 |
表3 Oracle.DataAccess.Clientネームスペース列挙のサポート状況
列挙名 | ノート |
---|---|
|
注意事項はありません |
|
注意事項はありません |
この項の以降の内容は次のとおりです。
次の表では、OracleCommand
クラスのサポートされているプロパティおよびメソッドの一覧を示します。
表4 OracleCommandクラス・プロパティのサポート状況
プロパティ名 | ノート |
---|---|
|
注意事項はありません |
|
注意事項はありません |
|
注意事項はありません |
|
注意事項はありません |
|
注意事項はありません |
|
注意事項はありません |
|
TimesTenは |
|
注意事項はありません |
|
注意事項はありません |
|
注意事項はありません |
|
注意事項はありません |
ノート: InitialLOBFetchSize プロパティは、ODP.NET for TimesTenではサポートされていません。この値を変更しても効果はありません。この値は事実上、常にデフォルト値の0(ゼロ)に設定されます。 |
次の表では、OracleConnection
クラスのサポートされているプロパティおよびメソッドの一覧を示します。
表6 OracleConnectionクラス・プロパティのサポート状況
プロパティ名 | ノート |
---|---|
|
注意事項はありません |
|
注意事項はありません |
|
注意事項はありません |
|
注意事項はありません |
|
注意事項はありません |
|
注意事項はありません |
表8 OracleConnectionクラス・メソッドのサポート状況
メソッド名 | ノート |
---|---|
|
注意事項はありません |
|
注意事項はありません |
|
注意事項はありません |
|
注意事項はありません |
|
注意事項はありません |
|
注意事項はありません |
|
アプリケーション開発者がデータベース情報を検出および列挙するための、表、列、ユーザーおよびその他のオブジェクトのメタデータ・コレクションが戻されます。この情報はTimesTenに固有で、Oracle Databaseより戻される対応するメタデータ・コレクションとは異なる場合があります。たとえば、TimesTenでは、TimesTenではサポートしていないオブジェクト・タイプである |
|
注意事項はありません |
|
注意事項はありません |
|
注意事項はありません |
ノート: TimesTenでは、OCIを使用した分散トランザクションがサポートされていません。ODP.NETアプリケーションは、TimesTen接続でEnlistDistributedTransaction またはEnlistTransaction を使用できません。 |
列挙およびpublic OracleConnection
クラス・プロパティであるOracleConnectionType
は、特定の接続オブジェクトが、TimesTen接続またはOracle Database接続と関連付けられているか、または物理的な接続がまったくないかを、ODP.NETアプリケーションが判別できるようにするものです。このプロパティには次のシグネチャがあります。
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
クラスのサポートされているプロパティおよびメソッドの一覧を示します。
表9 OracleDataReaderクラス・プロパティのサポート状況
プロパティ名 | ノート |
---|---|
|
注意事項はありません |
|
注意事項はありません |
|
注意事項はありません |
|
注意事項はありません |
|
注意事項はありません |
|
注意事項はありません |
|
注意事項はありません |
|
注意事項はありません |
|
注意事項はありません |
ノート: InitialLOBFetchSize プロパティの使用はODP.NET for TimesTenでサポートされていません。この値を変更しても効果はありません。この値は事実上、常にデフォルト値の0(ゼロ)に設定されます。 |
表10 OracleDataReaderクラス・メソッドのサポート状況
メソッド名 | ノート |
---|---|
|
注意事項はありません |
|
注意事項はありません |
|
注意事項はありません |
|
注意事項はありません |
|
注意事項はありません |
|
注意事項はありません |
|
注意事項はありません |
|
注意事項はありません |
|
注意事項はありません |
|
注意事項はありません |
|
注意事項はありません |
|
注意事項はありません |
|
注意事項はありません |
|
注意事項はありません |
|
注意事項はありません |
|
注意事項はありません |
|
注意事項はありません |
|
注意事項はありません |
|
注意事項はありません |
|
注意事項はありません |
|
注意事項はありません |
|
注意事項はありません |
|
注意事項はありません |
|
注意事項はありません |
|
注意事項はありません |
|
注意事項はありません |
|
注意事項はありません |
|
注意事項はありません |
|
注意事項はありません |
|
注意事項はありません |
|
注意事項はありません |
|
注意事項はありません |
|
注意事項はありません |
|
注意事項はありません |
|
注意事項はありません |
|
注意事項はありません |
|
注意事項はありません |
次の表では、Oracle.DataAccess.Types
ネームスペースのサポートされている構造、例外、クラス、インタフェースおよび列挙の一覧を示します。
表13 Oracle.DataAccess.Typesネームスペース構造のサポート状況
構造名 | ノート |
---|---|
|
注意事項はありません |
|
注意事項はありません |
|
注意事項はありません |
|
注意事項はありません |
|
注意事項はありません |
表14 Oracle.DataAccess.Typesネームスペース例外のサポート状況
クラス名 | ノート |
---|---|
|
注意事項はありません |
|
注意事項はありません |
|
注意事項はありません |
Oracleのアクセシビリティについての詳細情報は、Oracle Accessibility ProgramのWebサイト(http://www.oracle.com/pls/topic/lookup?ctx=acc&id=docacc
)を参照してください。
Oracle Supportへのアクセス
サポートを購入したオラクル社のお客様は、My Oracle Supportを介して電子的なサポートにアクセスできます。詳細情報は(http://www.oracle.com/pls/topic/lookup?ctx=acc&id=info
)か、聴覚に障害のあるお客様は(http://www.oracle.com/pls/topic/lookup?ctx=acc&id=trs
)を参照してください。
Oracle Data Provider for .NET Oracle TimesTen In-Memory Databaseサポート・ユーザーズ・ガイド, 12cリリース1 (12.1) for Windows
E48239-05
Copyright © 2013, 2020, Oracle and/or its affiliates.
このソフトウェアおよび関連ドキュメントの使用と開示は、ライセンス契約の制約条件に従うものとし、知的財産に関する法律により保護されています。ライセンス契約で明示的に許諾されている場合もしくは法律によって認められている場合を除き、形式、手段に関係なく、いかなる部分も使用、複写、複製、翻訳、放送、修正、ライセンス供与、送信、配布、発表、実行、公開または表示することはできません。このソフトウェアのリバース・エンジニアリング、逆アセンブル、逆コンパイルは互換性のために法律によって規定されている場合を除き、禁止されています。
ここに記載された情報は予告なしに変更される場合があります。また、誤りが無いことの保証はいたしかねます。誤りを見つけた場合は、オラクル社までご連絡ください。
このソフトウェアまたは関連ドキュメントを、米国政府機関もしくは米国政府機関に代わってこのソフトウェアまたは関連ドキュメントをライセンスされた者に提供する場合は、次の通知が適用されます。
U.S. GOVERNMENT END USERS: Oracle programs (including any operating system, integrated software, any programs embedded, installed or activated on delivered hardware, and modifications of such programs) and Oracle computer documentation or other Oracle data delivered to or accessed by U.S. Government end users are "commercial computer software" or "commercial computer software documentation" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations.As such, the use, reproduction, duplication, release, display, disclosure, modification, preparation of derivative works, and/or adaptation of i) Oracle programs (including any operating system, integrated software, any programs embedded, installed or activated on delivered hardware, and modifications of such programs), ii) Oracle computer documentation and/or iii) other Oracle data, is subject to the rights and limitations specified in the license contained in the applicable contract.The terms governing the U.S. Government’s use of Oracle cloud services are defined by the applicable contract for such services.No other rights are granted to the U.S. Government.
このソフトウェアもしくはハードウェアは様々な情報管理アプリケーションでの一般的な使用のために開発されたものです。このソフトウェアもしくはハードウェアは、危険が伴うアプリケーション(人的傷害を発生させる可能性があるアプリケーションを含む)への用途を目的として開発されていません。このソフトウェアもしくはハードウェアを危険が伴うアプリケーションで使用する際、安全に使用するために、適切な安全装置、バックアップ、冗長性(redundancy)、その他の対策を講じることは使用者の責任となります。このソフトウェアもしくはハードウェアを危険が伴うアプリケーションで使用したことに起因して損害が発生しても、オラクル社およびその関連会社は一切の責任を負いかねます。
OracleおよびJavaはOracle Corporationおよびその関連企業の登録商標です。その他の名称は、それぞれの所有者の商標または登録商標です。
Intel、Intel Insideは、Intel Corporationの商標または登録商標です。すべてのSPARCの商標はライセンスをもとに使用し、SPARC International, Inc.の商標または登録商標です。AMD、Epyc、AMDロゴは、Advanced Micro Devices, Inc.の商標または登録商標です。UNIXは、The Open Groupの登録商標です。
このソフトウェアまたはハードウェア、そしてドキュメントは、第三者のコンテンツ、製品、サービスへのアクセス、あるいはそれらに関する情報を提供することがあります。お客様との間に適切な契約が定められている場合を除いて、オラクル社およびその関連会社は、第三者のコンテンツ、製品、サービスに関して一切の責任を負わず、いかなる保証もいたしません。お客様との間に適切な契約が定められている場合を除いて、オラクル社およびその関連会社は、第三者のコンテンツ、製品、サービスへのアクセスまたは使用によって損失、費用、あるいは損害が発生しても一切の責任を負いかねます。