この章では、C開発環境およびTimesTenアプリケーションを開発する際の関連の考慮事項について説明します。内容は次のとおりです。
TimesTenの環境変数設定は、Oracle TimesTen In-Memory Databaseインストレーション、移行およびアップグレード・ガイドの環境変数に説明されています。詳細はその説明を参照してください。
timesten_home/binディレクトリにある関連スクリプトは、LinuxとUNIXプラットフォームの場合はttenv.shとttenv.cshであり(どちらを使用するかはシェルによって異なります)、Windowsプラットフォームの場合はttenv.batです。
|
ノート:
|
TimesTenアプリケーションは、ドライバ・マネージャなしでのTimesTen ODBCの直接ドライバまたはODBCクライアント・ドライバとの明確なリンク、あるいはドライバ・マネージャとのリンクが可能です。
TimesTenのみを使用するアプリケーションでは、ドライバ・マネージャを使用せずに、TimesTen ODBCの直接ドライバ、またはODBCクライアント・ドライバのいずれかを特定してリンクできます。これによって、ドライバ・マネージャのパフォーマンス・オーバーヘッドが回避され、TimesTenにアクセスする最も簡単な方法です。ただし、ドライバ・マネージャを使用せずにリンクされるアプリケーションを開発する開発者は、次の問題について注意する必要があります。
アプリケーションは、リンクされているドライバを使用するDSN (データソース名)にのみ接続できます。他のベンダーのデータベースにも、TimesTenドライバのTimesTen DSNにも接続できません。(DSNは、TimesTenデータベースを識別する論理名で、データベースへの接続に使用する接続属性のセットです。)
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接続オプションの使用方法の詳細は、「問合せのパフォーマンスの最適化」を参照してください。
アプリケーションがドライブ・マネージャとリンクされている場合、トランザクション・ログAPI(XLA)コールは使用できません。
TimesTenで使用するドライバ・マネージャにリンクされているアプリケーションに対するODBC C型のSQL_C_BIGINT、SQL_C_TINYINTおよびSQL_C_WCHARは、サポートされていません。シグネチャにこれらの型が含まれるメソッドをコールすることはできません。
ドライバ・マネージャでは、ODBC標準の一部ではないLOBロケータAPIまたはLOBデータ型はサポートされません。ただし、LOBの簡易データ・インタフェースまたはピース単位のデータ・インタフェースは使用できます(「LOBの使用」を参照)。
|
ノート: TimesTenでは、Windows用と、LinuxまたはUNIX用にサンプルのドライバ・マネージャを用意しており、クイック・スタート・サンプル・アプリケーションが付属しています。(「TimesTenクイック・スタートおよびサンプル・アプリケーション」を参照。)TimesTenの直接ドライバ、クライアント・ドライバおよびODBC 2.5をサポートしており、前述した機能またはパフォーマンスの制限はありません。このデータベースへの直接接続とクライアント/サーバー接続の両方を同時に使用する必要のあるアプリケーションでは、このドライバ・マネージャを使用することで、パフォーマンスにほとんど影響を与えることなくこの同時使用を実現できます。 |
この項では、Windowsと、LinuxまたはUNIXでのCアプリケーションのコンパイルおよびリンクについて説明します。
WindowsでTimesTenアプリケーションをコンパイルする場合は、ODBC includeファイルの場所を指定する必要はありません。これらのファイルは、Microsoft Visual C++に含まれています。ただし、/Iコンパイラ・オプション設定で、TimesTen includeファイルの場所を指定する必要があります。(「TimesTen includeファイル」を参照してください。)
適切なライブラリを次のようにリンクします。
ドライバ・マネージャへの直接リンク: odbc32.lib
odbc32.libは、64ビット・システムにも対応しています。
TimesTenへの直接リンク:
直接モードの場合: tten181.libおよびttdv181.lib
クライアント/サーバー・モードの場合: ttclient181.lib
例1-1のMakeファイルでは、WindowsシステムでTimesTenアプリケーションを構築する方法を示します。この例では、timesten_home\install\libがLIB環境変数にすでに追加されていることを前提としています(ttenv.batを実行すると追加されます)。
|
重要:
|
|
ノート:
|
例1-1 WindowsでのTimesTenアプリケーションの構築
CFLAGS = "/Itimesten_home\install\include"
LIBSDM = ODBC32.LIB
LIBS = tten181.lib ttdv181.lib
LIBSDEBUG = tten181d.lib ttdv181d.lib
LIBSCS = ttclient181.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)
LinuxまたはUNIXプラットフォームの場合:
TimesTenインストールのincludeディレクトリにあるTimesTenヘッダー・ファイルを使用して、TimesTenアプリケーションをコンパイルします。
TimesTen ODBCの直接ドライバまたはクライアント・ドライバとリンクしますが、これらは、共有ライブラリとして提供されます。
|
重要:
|
Linuxまたは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コンパイラ・コマンドを追加します。timesten_home/installは、installation_dir (TimesTenインストール・ディレクトリ)へのシンボリック・リンクです。(「TimesTen includeファイル」を参照してください。)
-Itimesten_home/install/include
TimesTen ODBCの直接ドライバとリンクするには、libtten.soライブラリのリンク・コマンドに次を追加します。
-Ltimesten_home/install/lib -ltten
-Lオプションを指定すると、リンカーでライブラリ・ファイル用のTimesTen libディレクトリが検索されます。-lttenオプションを指定すると、TimesTen ODBCの直接ドライバでリンクが行われます。
TimesTen ODBCのクライアント・ドライバとリンクするには、libttclient.soライブラリのリンク・コマンドに次を追加します。
-Ltimesten_home/install/lib -lttclient
AIXでは、アプリケーションがTimesTen ODBCのクライアント・ドライバとリンクしている場合は、C++ランタイム・ライブラリがリンク・コマンドに含まれている必要があり(クライアント・ドライバはC++で記述されていて、AIXでは自動的にリンクされないため)、クライアント・ドライバに従う必要があります。
-Ltimesten_home/install/lib -lttclient -lC_r
クイック・スタートのsample_codeディレクトリのサブディレクトリにあるMakeファイルを使用するか(「TimesTenクイック・スタートおよびサンプル・アプリケーション」を参照)、または例1-2を参考にして独自のMakeファイルを作成できます。
例1-2 アプリケーションをリンクするMakeファイル
CFLAGS = -Itimesten_home/install/include LIBS = -Ltimesten_home/install/lib -ltten LIBSDEBUG = -Ltimesten_home/install/lib -lttenD LIBSCS = -Ltimesten_home/install/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)
|
ノート: アプリケーションをデバッグTimesTen ODBCドライバに直接リンクするには、リンク行に-lttenのかわりに-lttenDを指定します。 |
TimesTen Classicクイック・スタートおよびTimesTen Scaleoutサンプル・アプリケーションは、TimesTen GitHubの場所から入手できます。TimesTen Classicクイック・スタートについては、チュートリアル、操作手順およびサンプル・アプリケーションの完全なセットが用意されています。TimesTen Scaleoutについては、ODBCとJDBCのサンプル・アプリケーションが用意されています。
環境を構成した後、サンプル・アプリケーションをコンパイルして実行することで、すべて正しく設定されていることを確認できます。TimesTen Classicの場合、アプリケーションはクイック・スタートのsample_codeディレクトリの下にあります。これらのコンパイルおよび実行方法については、サブディレクトリの手順を参照してください。TimesTen Scaleoutの場合、oracle-timesten-examples GitHubリポジトリのクローンを作成し、READMEファイルの手順に従います。
TimesTen Classicの場合、次のものが含まれます。
スキーマおよび設定: build_sampledbスクリプト(LinuxまたはUNIXでは.sh、Windowsでは.bat)では、サンプルのデータベースおよびスキーマが作成されます。このスクリプトは、サンプル・アプリケーションを使用する前に実行してください。
環境および設定: TimesTenの設定に一般的に使用するttenvスクリプトのスーパーセットのttquickstartenvスクリプト(LinuxまたはUNIXでは.shまたは.csh、Windowsでは.bat)では、環境が設定されます。このスクリプトは、サンプル・アプリケーションをコンパイルまたは実行するセッションに入るたびに実行してください。
サンプル・アプリケーションおよび設定: クイック・スタートでは、ODBC、OCIおよびPro*C/C++のサンプル・アプリケーションとそのソース・コードを提供しています。