この章では、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」の下のカテゴリをクリックすると表示されます。