この章では、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++のサンプル・アプリケーションとそのソース・コードを提供しています。