この章では、C開発環境およびTimesTenアプリケーションを開発する際の関連の考慮事項について説明します。内容は次のとおりです。
TimesTenの環境変数設定については、『Oracle TimesTen In-Memory Databaseインストレーション・ガイド』の環境変数に関する説明を参照してください。詳細はその説明を参照してください。
|
注意:
|
TimesTenアプリケーションは、ドライバ・マネージャなしでのTimesTen ODBCの直接ドライバまたはODBCクライアント・ドライバとの明確なリンク、あるいはドライバ・マネージャとのリンクが可能です。
TimesTenのみを使用するアプリケーションでは、ドライバ・マネージャを使用せずに、TimesTen ODBCの直接ドライバ、またはODBCクライアント・ドライバのいずれかを特定してリンクできます。これによって、ドライバ・マネージャのパフォーマンス・オーバーヘッドが回避され、TimesTenにアクセスする最も簡単な方法です。ただし、ドライバ・マネージャを使用せずにリンクされるアプリケーションを開発する開発者は、次の問題について注意する必要があります。
アプリケーションは、リンクされているドライバを使用するDSNにのみ接続できます。他のベンダーのデータベースには接続できず、バージョンまたはタイプが異なるTimesTenドライバのTimesTen DSNにも接続できません。
WindowsのODBCトレースは利用できません。
ODBCカーソル・ライブラリは利用できません。
アプリケーションでは、SQLDataSourcesやSQLDriversなどのドライバ・マネージャで通常実行されるODBC関数は使用できません。
SQLFreeStmt(..., SQL_CLOSE)ではなく、SQLCancelを使用してカーソルをクローズするアプリケーションは、SQL_SUCCESS_WITH_INFOのリターン・コードおよびSQL State 01S05を受信します。この警告は、内部の状態をドライバ・マネージャで管理するために使用されます。アプリケーションでは、この警告は成功として処理されます。
ドライバ・マネージャとリンクしているアプリケーションは、ODBCドライバを参照するすべてのDSNに接続でき、様々なODBCドライバを使用する複数のDSNに同時に接続することもできます。ただし、Windows以外のほとんどのプラットフォームでは、ドライバ・マネージャはデフォルトで使用可能ではないことに注意してください。また、ドライバ・マネージャを使用すると、すべてのODBC関数コールにかなりの同期オーバーヘッドが追加される可能性があるため、次のような制限があります。
TimesTenオプションTT_PREFETCH_COUNTは、ドライバ・マネージャにリンクしているアプリケーションでは使用できません。TT_PREFETCH_COUNTオプションの使用に関する詳細は、「複数のデータ行のプリフェッチ」を参照してください。
アプリケーションでは、TimesTen固有のTT_PREFETCH_CLOSE接続オプションを設定または再設定できません。TT_PREFETCH_CLOSE接続オプションの使用に関する詳細は、『Oracle TimesTen In-Memory Databaseオペレーション・ガイド』のシリアライズ可能なトランザクションに対するTT_PREFETCH_CLOSEの有効化に関する説明を参照してください。
アプリケーションがドライブ・マネージャとリンクされている場合、トランザクション・ログAPI(XLA)コールは使用できません。
TimesTenで使用するドライバ・マネージャにリンクされているアプリケーションに対するODBC C型のSQL_C_BIGINT、SQL_C_TINYINTおよびSQL_C_WCHARは、サポートされていません。シグネチャにこれらの型が含まれるメソッドをコールすることはできません。
ドライバ・マネージャでは、ODBC標準の一部ではないLOBロケータAPIまたはLOBデータ型はサポートされません。ただし、LOBの簡易データ・インタフェースまたはピース単位のデータ・インタフェースは使用できます(「LOBの使用」を参照)。
|
注意: TimesTenでは、WindowsおよびUNIX用のどちらのドライバ・マネージャも用意されており、クイック・スタート・サンプル・アプリケーションが付属しています。このドライバ・マネージャは完全にはサポートされていません。TimesTenの直接ドライバおよびクライアント・ドライバのみをサポートしており、前述した機能またはパフォーマンスの制限はありません。TimesTenへの直接接続とクライアント・サーバー接続の両方を同時に使用する必要のあるアプリケーションでは、このドライバ・マネージャを使用することで、パフォーマンスにほとんど影響を与えることなくこの同時使用を実現できます。 |
この項では、WindowsまたはUNIXでのCアプリケーションのコンパイルおよびリンクについて説明します。
WindowsでTimesTenアプリケーションをコンパイルする場合は、ODBC includeファイルの場所を指定する必要はありません。これらのファイルは、Microsoft Visual C++に含まれています。ただし、/Iコンパイラ・オプション設定で、TimesTen includeファイルの場所を指定する必要があります。(「TimesTen includeファイル」を参照してください。)
例1-1のMakeファイルでは、WindowsシステムでTimesTenアプリケーションを構築する方法を示します。この例では、LIB環境変数にinstall_dir\libがすでに追加されたと想定しています。
|
重要: 他のincludeファイルより前にTimesTenファイルをインクルードし、他のライブラリより前にTimesTenライブラリをリンクしてください。 |
例1-1 WindowsでのTimesTenアプリケーションの構築
CFLAGS = "/Iinstall_dir\include"
LIBSDM = ODBC32.LIB
LIBS = tten1122.lib ttdv1122.lib
LIBSDEBUG = tten1122d.lib ttdv1122d.lib
LIBSCS = ttclient1122.lib
# Link with the ODBC driver manager
appldm.exe:appl.obj
$(CC) /Feappldm.exe appl.obj $(LIBSDM)
# Link directly with the TimesTen
# ODBC production driver
appl.exe:appl.obj
$(CC) /Feappl.exe appl.obj\
$(LIBS)
# Link directly with the TimesTen
# ODBC debug driver
appldebug.exe:appl.obj
$(CC) /Feappldebug.exe appl.obj\
$(LIBSDEBUG)
# Link directly with the TimesTen
# ODBC client driver
applcs.exe:appl.obj
$(CC) /Feapplcs.exe appl.obj\
$(LIBSCS)
UNIXプラットフォームでは、次の処理を行います。
TimesTenインストール・ディレクトリにあるTimesTenヘッダー・ファイルを使用して、TimesTenアプリケーションをコンパイルします。
TimesTen ODBCの直接ドライバまたはクライアント・ドライバとリンクしますが、これらは、共有ライブラリとして提供されます。
UNIXでは、SQL_C_ULONG、SQL_C_SLONG、SQL_C_USHORTまたはSQL_C_SSHORTのODBCデータ型を使用するアプリケーションは、コンパイル時にTT_USE_ALL_TYPESプリプロセッサ・オプションを指定する必要があります。通常、これは、Cコンパイラ・オプション-DTT_USE_ALL_TYPESを使用して実行します。
TimesTen機能をしている場合にTimesTen includeファイルを使用するには、次のCコンパイラ・コマンドを追加します。install_dirはTimesTenインストール・ディレクトリのパスです。(「TimesTen includeファイル」を参照してください。)
-Iinstall_dir/include
TimesTen ODBCの直接ドライバとリンクするには、次の指定をリンク・コマンドに追加します。
-Linstall_dir/lib -ltten
-Lオプションを指定すると、リンカーでライブラリ・ファイル用のTimesTen libディレクトリが検索されます。-lttenオプションを指定すると、TimesTen ODBCの直接ドライバでリンクが行われます。
TimesTen ODBCのクライアント・ドライバとリンクするには、次の指定をリンク・コマンドに追加します。
-Linstall_dir/lib -lttclient
Solarisでは、デフォルトのTimesTen ODBCのクライアント・ドライバは、Studio 11を使用してコンパイルされます。このライブラリによって、Sun Studio 11 C/C++コンパイラでコンパイルされたアプリケーションをTimesTenのクライアントに直接リンクできます。
AIXでは、アプリケーションがTimesTen ODBCのクライアント・ドライバとリンクしている場合は、C++ランタイム・ライブラリがリンク・コマンドに含まれている必要があり(クライアント・ドライバはC++で記述されていて、AIXでは自動的にリンクされないため)、クライアント・ドライバに従う必要があります。
-Linstall_dir/lib -lttclient -lC_r
quickstart/sample_codeディレクトリのサブディレクトリでMakeファイルを使用するか、または例1-2を使用して独自のMakeファイルを作成できます。
|
重要: 他のincludeファイルより前にTimesTenファイルをインクルードし、他のライブラリより前にTimesTenライブラリをリンクしてください。 |
例1-2 アプリケーションをリンクするMakeファイル
CFLAGS = -Iinstall_dir/include LIBS = -Linstall_dir/lib -ltten LIBSDEBUG = -Linstall_dir/lib -lttenD LIBSCS = -Linstall_dir/lib -lttclient # Link directly with the TimesTen # ODBC production driver appl:appl.o $(CC) -o appl appl.o $(LIBS) # Link directly with the TimesTen ODBC debug driver appldebug:appl.o $(CC) -o appldebug appl.o $(LIBSDEBUG) # Link directly with the TimesTen client driver applcs:appl.o $(CC) -o applcs appl.o $(LIBSCS)
|
注意:
|
C環境を構成した後、TimesTenクイック・スタート・デモ・アプリケーションをコンパイルおよび実行して、すべてが正しく設定されていることを確認できます。次のトピックの詳細は、クイック・スタートのようこそページ(install_dir/quickstart.html)で、特にサンプル・プログラムの下のリンクを参照してください。
デモ・スキーマおよび設定: build_sampledbスクリプト(UNIXでは.sh、Windowsでは.bat)では、サンプル・データベースおよびデモ・スキーマを作成します。デモの使用を開始する前に、これを使用する必要があります。
デモ環境および設定: 通常、TimesTenの設定に使用するttenvスクリプトのスーパーセットのttquickstartenvスクリプト(UNIXでは.shまたは.csh、Windowsでは.bat)では、デモ環境が設定されます。いずれかのデモをコンパイルおよび実行するセッションに入るたびに、これを使用する必要があります。
デモおよび設定: TimesTenでは、quickstart/sample_codeディレクトリのサブディレクトリにODBC、XLA、OCI、Pro*C/C++およびODP.NET用のデモが用意されています。デモのコンパイルおよび実行方法については、サブディレクトリのREADMEファイルを参照してください。
デモの内容: 各デモの内容は、「SAMPLE PROGRAMS」の下のカテゴリをクリックすると表示されます。