主コンテンツへ
Oracle® TimesTen In-Memory Database C開発者ガイド
リリース18.1
E98631-04
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

1 C開発環境

この章では、C開発環境およびTimesTenアプリケーションを開発する際の関連の考慮事項について説明します。内容は次のとおりです。

開発用の環境の設定

TimesTenの環境変数設定は、Oracle TimesTen In-Memory Databaseインストレーション、移行およびアップグレード・ガイドの環境変数に説明されています。詳細はその説明を参照してください。

timesten_home/binディレクトリにある関連スクリプトは、LinuxとUNIXプラットフォームの場合はttenv.shttenv.cshであり(どちらを使用するかはシェルによって異なります)、Windowsプラットフォームの場合はttenv.batです。


ノート:

  • ttenvスクリプトでは、OCIのプログラミングで必要な、Oracle Instant Clientへのアクセスも構成します。

  • TimesTenで動作するOCIおよびPro*C/C++プログラムが適切に実行されるためには、OCIおよびPro*C/C++コンパイルにORACLE_HOMEを設定しないでください(以前に設定されていた場合は設定解除してください)。


リンク・オプション

TimesTenアプリケーションは、ドライバ・マネージャなしでのTimesTen ODBCの直接ドライバまたはODBCクライアント・ドライバとの明確なリンク、あるいはドライバ・マネージャとのリンクが可能です。

ODBCドライバ・マネージャを使用しないリンクに関する考慮事項

TimesTenのみを使用するアプリケーションでは、ドライバ・マネージャを使用せずに、TimesTen ODBCの直接ドライバ、またはODBCクライアント・ドライバのいずれかを特定してリンクできます。これによって、ドライバ・マネージャのパフォーマンス・オーバーヘッドが回避され、TimesTenにアクセスする最も簡単な方法です。ただし、ドライバ・マネージャを使用せずにリンクされるアプリケーションを開発する開発者は、次の問題について注意する必要があります。

  • アプリケーションは、リンクされているドライバを使用するDSN (データソース名)にのみ接続できます。他のベンダーのデータベースにも、TimesTenドライバのTimesTen DSNにも接続できません。(DSNは、TimesTenデータベースを識別する論理名で、データベースへの接続に使用する接続属性のセットです。)

  • WindowsのODBCトレースは利用できません。

  • ODBCカーソル・ライブラリは利用できません。

  • アプリケーションでは、SQLDataSourcesSQLDriversなどのドライバ・マネージャで通常実行されるODBC関数は使用できません。

  • SQLFreeStmt(..., SQL_CLOSE)ではなく、SQLCancelを使用してカーソルをクローズするアプリケーションは、SQL_SUCCESS_WITH_INFOのリターン・コードおよびSQL State 01S05を受信します。この警告は、内部の状態をドライバ・マネージャで管理するために使用されます。アプリケーションでは、この警告は成功として処理されます。

ODBCドライバ・マネージャを使用するリンクに関する考慮事項

ドライバ・マネージャとリンクしているアプリケーションは、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_BIGINTSQL_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でのアプリケーションのコンパイルおよびリンク

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\libLIB環境変数にすでに追加されていることを前提としています(ttenv.batを実行すると追加されます)。


重要:

  • アプリケーションにtimesten.h (TimesTen includeファイル)が含まれている必要があります。これにより、標準のODBCファイルも自動的に含まれます。「TimesTen includeファイル」を参照してください。

  • 他のincludeファイルより前にTimesTenファイルをインクルードし、他のライブラリより前にTimesTenライブラリをリンクしてください。

  • TimesTenは、デフォルトではODBC 2.5に対してコンパイルします。ODBC 3.5アプリケーションをコンパイルするには、コンパイラ設定-DODBCVER=0x0351を使用します。



ノート:

  • Windowsでは、インストールごとに1つのみのTimesTenインスタンスがあり、timesten_homeinstallation_dir\instanceを指します。

  • timesten_home/installディレクトリは、installation_dirへのシンボリック・リンクです。


例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でのアプリケーションのコンパイルおよびリンク

LinuxまたはUNIXプラットフォームの場合:

  • TimesTenインストールのincludeディレクトリにあるTimesTenヘッダー・ファイルを使用して、TimesTenアプリケーションをコンパイルします。

  • TimesTen ODBCの直接ドライバまたはクライアント・ドライバとリンクしますが、これらは、共有ライブラリとして提供されます。


重要:

  • アプリケーションにtimesten.h (TimesTen includeファイル)が含まれている必要があります。これにより、標準のODBCファイルも自動的に含まれます。「TimesTen includeファイル」を参照してください。

  • 他のincludeファイルより前にTimesTenファイルをインクルードし、他のライブラリより前にTimesTenライブラリをリンクしてください。

  • TimesTenは、デフォルトではODBC 2.5に対してコンパイルします。ODBC 3.5アプリケーションをコンパイルするには、コンパイラ設定-DODBCVER=0x0351を使用します。


LinuxまたはUNIXでは、SQL_C_ULONGSQL_C_SLONGSQL_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クイック・スタートおよびサンプル・アプリケーション

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