TimesTenデータベースへのネットワーク経由のクライアント/サーバー接続は、TimesTen ClientおよびTimesTen Serverを使用してオープンできます。
次の項では、TimesTen Client/TimesTen Serverおよびそれらを使用した接続方法について説明します。
TimesTen Serverは、サーバー・システム上で実行されるプロセスであり、TimesTen Clientからネットワーク・リクエストを受け付け、サーバー・システム上にあるデータベースでの処理に変換します。これにより、クライアントは、異なるプラットフォームおよびオペレーティング・システムを実行している可能性のある様々なシステム上に存在するデータベースに接続できます。
TimesTen Clientは、TimesTen Serverと別のシステムにも同じシステムにもインストールできます。TimesTen ClientをTimesTen Serverと同じシステムにインストールする場合は、それを使用してローカル・システムのTimesTenデータベースにアクセスできます。
ノート: クライアント/サーバー接続は、TimesTenがサポートするプラットフォーム間のいずれの組合せに対しても作成できます。TimesTenでは、クライアント/サーバーを使用したIPレベルのフェイルオーバーまたはロード・バランシングはサポートされていません。 |
図3-1に、それぞれのドライバを使用したTimesTen ClientとTimesTen Serverの通信方法を示します。
TimesTen Client: リモート・システム上のTimesTenデータベースにアクセスするには、TimesTen Client ODBCドライバにアプリケーションをリンクします。その後、アプリケーションはTimesTen Serverプロセスと通信します。TimesTen Client ODBCドライバを使用すると、アプリケーションは、TimesTenがインストールされているリモート・システムまたはローカル・システム上のTimesTenデータベースに透過的に接続できます。
クライアント・アプリケーションは、TimesTen Client ODBCドライバに直接リンクするか、Windows ODBCドライバ・マネージャにリンクして、TimesTenデータベースにアクセスできます。TimesTenでは、Linux、UNIXおよびWindows用のドライバ・マネージャを用意しており、クイック・スタート・サンプル・アプリケーションが付属しています。ドライバ・マネージャを使用する場合には、パフォーマンス上の考慮事項があります。
また、JDBC、OCI、Pro*C/C++など指定したインタフェースを通じて、クライアント・アプリケーションをリンクし、TimesTenデータベースにアクセスすることもできます。
ノート: アプリケーションで各種のドライバとインタフェースを使用してTimesTenデータベースにアクセスする方法の詳細は、「ODBCドライバおよびJDBCドライバを使用したTimesTenへの接続」を参照してください。 |
TimesTen Server: サーバー・システムでは、TimesTen ServerはTimesTen Data Managerドライバを使用します。サーバーで実行されるのは、クライアント・アプリケーションからのリクエストをリスニングし、TimesTen Data Managerドライバを介してリクエストを処理した後、結果およびエラー情報(エラーが発生した場合)をクライアント・アプリケーションに戻す処理です。
ノート: TimesTenアプリケーションのコンパイルおよびリンク方法の詳細は、『Oracle TimesTen In-Memory Database Java開発者ガイド』のJavaアプリケーションのコンパイルに関する説明または『Oracle TimesTen In-Memory Database C開発者ガイド』のアプリケーションのコンパイルおよびリンクに関する説明を参照してください。 |
次の項では、クライアント/サーバー通信の制限および通信プロトコルについて説明します。
クライアント/サーバー通信に対する制限は、次のとおりです。
LinuxおよびUNIXの場合、ttAdmin
、ttRepAdmin
、ttBackup
などの一部のTimesTenユーティリティは、直接接続経由でのみ動作します。LinuxおよびUNIXプラットフォームのクライアント/サーバー接続経由で実行可能なユーティリティの名前には、ttIsqlCS
、ttBulkCpCS
、ttMigrateCS
、ttSchemaCS
など、CS
という接尾辞が付いています。これらのユーティリティは、TimesTen Clientドライバにリンクされており、クライアント/サーバー接続経由でデータべスースにアクセスするときにクライアントDSNに接続するために使用できます。『Oracle TimesTen In-Memory Databaseリファレンス』には、各ユーティリティにクライアント/サーバー・バージョンがある場合はその名前が示されています。
XLAはクライアント/サーバー接続では使用できず、TimesTen Classic内でのみサポートされます。
ttCacheUidPwdSet
組込みプロシージャは、クライアント/サーバー接続経由では使用できません。
あるホスト上で定義されている外部ユーザーは、リモート・ホスト上のTimesTenデータソースに接続できません。内部ユーザーの接続には制限はありません。内部ユーザーと外部ユーザーの詳細は、『Oracle TimesTen In-Memory Databaseセキュリティ・ガイド』のTimesTenユーザーの概要に関する項を参照してください。
クライアント/サーバー接続を介して内部ユーザーを作成または変更できません。したがって、CREATE USER
またはALTER USER
文は、TimesTenデータベースに直接接続されているときのみ発行できます。作成後、ユーザーがクライアントからサーバーに接続するには、そのユーザーにCREATE SESSION
権限を付与しないと、接続は失敗します。TimesTenデータベースでのユーザーの作成方法および管理者によるCREATE SESSION
権限の付与方法の詳細は、『Oracle TimesTen In-Memory Databaseセキュリティ・ガイド』のデータベース・ユーザーの作成または識別に関する項およびデータベースに接続するための権限に関する項を参照してください。
LinuxおよびUNIX上のTimesTenでは、親プロセスがオープンした接続をその子プロセスは使用できません。親プロセスがオープンした接続を使用するために子プロセスがfork()
を使用して処理を試行すると、エラーが戻されます。
次の項では、TimesTen ClientがTimesTen Serverとの間で使用できる通信プロトコルについて説明します。
デフォルトでは、TimesTen Clientは、TCP/IPソケットを使用してTimesTen Serverと通信します。これは、TimesTen ClientとTimesTen Serverが異なるシステムにインストールされている場合に使用可能な唯一の通信形式です。
TimesTen ClientおよびTimesTen Serverの両方が同じシステムにインストールされている場合、TimesTen Client ODBCドライバを使用しているアプリケーションでは、プロセス間通信(IPC)用の共有メモリー・セグメントを使用できます。共有メモリー・セグメントを使用すると、TCP/IP通信よりパフォーマンスが向上します。共有メモリー・セグメントを通信に使用するには、次の操作を行う必要があります。
timesten.conf
ファイルで、共有メモリー通信を使用するようにサーバー属性を構成します。詳細は、「クライアント/サーバーIPCでの共有メモリーの使用方法」を参照してください。
論理サーバー名で、ネットワーク・アドレスをttShmHost
と定義します。詳細は、「論理サーバー名の定義」を参照してください。
ノート: TimesTenでは、共有メモリーのIPC対応サーバーの最大16の異なるインスタンスがサポートされています。アプリケーションで16を超えて異なる共有メモリー・セグメントに接続しようとすると、エラーが戻されます。 |
LinuxおよびUNIXプラットフォームでは、TimesTen ClientとTimesTen Serverが同一のシステムにインストールされている場合、通信にUNIXドメイン・ソケットを使用できます。共有メモリー・セグメントを使用すると、パフォーマンスは向上しますが、消費されるメモリーがわずかに増大します。UNIXドメイン・ソケットを使用すると、共有メモリー・セグメントの接続より少ないメモリーの消費でTCP/IPのパフォーマンスを向上させることができます。ドメイン・ソケットを使用するには、論理サーバーのネットワーク・アドレスとしてttLocalHost
を定義する必要があります。詳細は、「論理サーバー名の定義」を参照してください。
ノート: TimesTen ClientおよびTimesTen Serverを構成する前に、「ODBCおよびJDBCドライバを使用したTimesTenへの接続」および「TimesTenデータベース識別のためのデータソース名の指定」を参照してください。 |
次の各項では、TimesTen ClientおよびTimesTen Serverを使用してアプリケーションからTimesTenデータベースに接続する方法について説明します。
クライアント・アプリケーションをTimesTenデータベースに接続するには、「図3-2」に示すように、クライアントDSN (オプションとして論理サーバー名)およびサーバーDSNを構成して、目的のTimesTenデータベースを一意に識別する必要があります。
クライアント・アプリケーションは、接続の開始時にクライアントDSNを参照します。次の詳細情報により、接続リクエストが解決され、目的のTimesTenデータベースへの接続が可能になります。
クライアントDSNは、サーバー・ホスト名、論理サーバー名または実際のサーバー・システム名、およびサーバー上のTimesTenデータベースを識別するサーバーDSNを使用して、ユーザーodbc.iniファイルまたはシステムsys.odbc.ini
ファイルで構成されます。
論理サーバー名は、クライアントでのオプションの構成です。使用すると、TimesTenデータベースがインストールされているサーバー・ホスト名が指定されます。サーバー・ホスト名を隠したり、簡略化する場合に使用します。論理サーバー名は、共有メモリーIPCまたはUNIXドメイン・ソケットを使用する場合に必ず使用します。
サーバーDSNは、TimesTenデータベース名およびその接続属性を使用して、システムsys.odbc.ini
ファイルで構成されます。接続属性では、TimesTenデータベースのロードおよび構成方法と、TimesTenデータベースへの接続の制御または管理方法が指定されます。
したがって、これらの情報が正しく構成されると、クライアント・アプリケーションでは、クライアントDSNを使用してTimesTenデータベースを特定し、接続することが可能になります。クライアントDSNによって、サーバー・システムおよびサーバーDSNが定義されます。サーバーDSNでは、サーバー上のTimesTenデータベース、そのロード方法および接続の管理方法が指定されます。
次の項では、クライアント/サーバー接続のためにどのノードに何をインストールする必要があるかについて説明します。
次の項では、TimesTen ClientとTimesTen Serverが同じリリースのTimesTenの場合のTimesTenのインストールおよび構成方法について説明します。
TimesTenデータベースが格納されているシステムで、次のタスクを実行します。このシステムを、サーバー・システムと呼びます。
TimesTen Serverをインストールします。
TimesTen Serverのインストール方法については、Oracle TimesTen In-Memory Databaseインストレーション、移行およびアップグレード・ガイドを参照してください。
TimesTenデータベースに対応するサーバーDSNを作成および構成します。「LinuxまたはUNIXシステム上のTimesTen ServerのサーバーDSNの定義」を参照してください。サーバーDSNでTimesTen接続属性を設定します。『Oracle TimesTen In-Memory Databaseリファレンス』の接続属性に関する説明を参照してください。
クライアント・アプリケーションが格納されているシステムで、次のタスクを実行します。このシステムを、クライアント・システムと呼びます。
TimesTen Clientをインストールします。
TimesTen Clientのインストール方法については、Oracle TimesTen In-Memory Databaseインストレーション、移行およびアップグレード・ガイドを参照してください。
データベースとの接続にJDBCを使用している場合は、Java Development Kit (JDK)をインストールした後、CLASSPATH
や共有ライブラリ検索パスなどの環境変数を設定します。詳細は、『Oracle TimesTen In-Memory Database Java開発者ガイド』のJava環境変数の設定に関する説明を参照してください。
サーバーDSNに対応するクライアントDSNを作成および構成します。詳細は、「LinuxおよびUNIXでのクライアントDSNの作成および構成」および「WindowsでのクライアントDSNの作成および構成」を参照してください。
OCIおよびPro*C/C++クライアント/サーバー接続の場合は、『Oracle TimesTen In-Memory Database C開発者ガイド』のOCIからのTimesTenデータベースへの接続に関する説明に従って、tnsnames.ora
または簡易接続を使用するようにアプリケーションを構成します。
クライアント/サーバー・アプリケーションをリンクするには、次の手順を実行します。
『Oracle TimesTen In-Memory Database C開発者ガイド』のオプションのリンクに関する説明に従って、CおよびC++クライアント/サーバー・アプリケーションをリンクします。
OCIまたはPro*C/C++直接接続アプリケーションの場合と同じ方法で、OCIまたはPro*C/C++アプリケーションをリンクします。リンク方法の詳細は、『Oracle TimesTen In-Memory Database C開発者ガイド』の「TimesTenでのOCIのサポート」および『TimesTenでのPro*C/C++のサポート」に関する説明を参照してください。
ほとんどのTimesTen Clientは、リリースの異なるTimesTen Serverに接続できます。TimesTen Client 11.2.2以上のリリースは、TimesTen Server 11.2.2以上のリリースに接続できます。ただし、ODBC 3.5の機能が変更されたことにより、TimesTen Clientのリリース18.1以降では、特定の状況で古いTimesTen Serverに接続できなくなりました。リリースの異なるクライアント/サーバーの制限事項の詳細は、『Oracle TimesTen In-Memory Database C開発者ガイド』のODBC 3.5を使用したリリースの異なるクライアント/サーバーの制限事項に関する項を参照してください。
リリースの異なるTimesTen Client/TimesTen Server接続を構成する場合は、「同一リリースのTimesTen ClientおよびTimesTen Serverの構成方法」の説明に従って、インストールおよび構成します。
TimesTen ClientアプリケーションがTimesTenデータベースに接続されると、TimesTen Serverで、自身のリリースのドライバおよびTimesTenデータベースがロードされます。TimesTen Data Managerドライバが、TimesTen Serverシステムに自動的にインストールされます。
ttLocalHost
経由のUNIXドメイン・ソケットを使用したローカル・クライアント/サーバー接続を使用している場合は、クライアントおよびサーバーのプラットフォームがLinuxまたはUNIXである必要があります。クライアントはサーバーと同じホスト上で実行されている必要があるため、同じプラットフォーム上にある必要があります。クライアント・ホストとサーバー・ホストのリリース・レベルが同じである必要があります。
ttShmHost
を使用して共有メモリーIPC経由でローカル・クライアント/サーバー接続を使用している場合:
クライアントはサーバーと同じホスト上で実行されている必要があるため、同じプラットフォーム上にある必要があります。
プラットフォームはUNIXまたはLinuxである必要があります。WindowsおよびmacOSは、shmipc
ではサポートされません(クライアント専用プラットフォームであるため)。
サーバーDSNにより、クライアント/サーバー接続でアクセスするTimesTenデータベースが識別されます。サーバーDSNはTimesTen Serverからアクセスされるデータベースを識別するため、Data Manager DSNと同じ接続属性を使用して構成することができます。さらに、サーバーDSNの指定でのみ許可される接続属性もあります。それらの属性を使用すると、単一のサーバーに対して複数のクライアント/サーバー接続を指定することが可能になります。
ノート: 一部の接続属性は、TimesTenデーモン・オプション・ファイル(timesten.conf )で設定できます。サーバーDSNとデーモン・オプション・ファイルの両方で同じ接続属性が指定されている場合は、サーバーDSNの接続属性の値が優先されます。
TimesTenデーモン・オプションの詳細は、「TimesTen Client/Server属性の管理」を参照してください。 TimesTen Server接続属性の詳細は、『Oracle TimesTen In-Memory Databaseリファレンス』の接続属性に関する説明を参照してください。 |
サーバーDSNは、Data Manager DSNと同じ構成形式および属性を持ち、システムDSNとして定義する必要があります。
TimesTen Scaleoutの場合: DSNは、適切なデータベース定義および接続可能オブジェクト内で定義されます。接続可能オブジェクトを使用すると、すべてのデータ・インスタンスで、グリッド内の他のデータ・インスタンスからの接続リクエストを受け入れることができます。
ただし、グリッドに含まれていないTimesTen Clientからのクライアント接続を確立するには、ttGridAdmin
gridClientExport
コマンドを使用してユーザーodbc.ini
ファイルまたはシステムsys.odbc.ini
ファイルにクライアントDSNを作成します。このコマンドにより、グリッドで使用可能なすべてのクライアント/サーバー接続可能オブジェクトが、TimesTen Clientで使用されているodbc.ini
ファイルを置き換えるようフォーマットされたファイルにエクスポートされます。
詳細は、『Oracle TimesTen In-Memory Database Scaleoutユーザーズ・ガイド』のODBCおよびJDBCドライバを使用したデータベースへの接続に関する項を参照してください。
TimesTen Classicでは、ユーザーodbc.ini
ファイルまたはシステムsys.odbc.ini
ファイルを作成または編集して、各システムDSNを作成します。TimesTen Serverの稼働中に、サーバーDSNの追加および構成を実行できます。LinuxおよびUNIXでTimesTen ClassicのシステムDSNを作成する方法の詳細は、「LinuxおよびUNIXでのTimesTen ClassicのDSNの作成」を参照してください。
デフォルトでは、TimesTenは、1つのサーバーへの接続は1つの子プロセスにつき1つのみ作成されます。ただし、接続属性(後述)を使用して、またはTimesTen Serverへの複数の接続の指定の説明に従ってtimesten.conf
ファイル内のTimesTenデーモン属性を設定することで、1つのTimesTen Serverに複数のクライアント/サーバー接続を指定できます。サーバー接続属性および関連するtimesten.conf
デーモン属性の両方を設定した場合は、サーバー接続属性の値が優先されます。
Connections
属性: データベースへの同時接続数の上限を設定します。デフォルト値は、2000と、SEMMSL
カーネル・パラメータで指定されたセマフォの数から155を引いた値のうちの小さい方です。TimesTenは、予想される各接続に1つのセマフォを割り当てるため、SEMMSL
カーネル・パラメータを正しく設定する必要があります。接続属性が、予期される同時データベース接続数に対応できるだけの大きさに設定されていることを確認してください。詳細は、『Oracle TimesTen In-Memory Databaseインストレーション、移行およびアップグレード・ガイド』のセマフォ値の設定に関する項およびshmmaxおよびshmallの構成に関する項と、『Oracle TimesTen In-Memory Databaseリファレンス』の接続に関する項を参照してください。
ServerStackSize
: サーバー上のスレッドごとにスタック・サイズを設定します。
MaxConnsPerServer
属性が1より大きい場合以外は、ServerStackSize
属性は無視されます。サーバーごとの接続が1つのみである場合、サーバー・プロセスはプロセスのメイン・スタックを使用します。クライアント接続で複雑なSQL問合せを実行している場合は、ServerStackSize
属性を1024 KB以上に設定することを検討してください。
詳細は、Oracle TimesTen In-Memory DatabaseリファレンスのServerStackSizeを参照してください。
MaxConnsPerServer
: 単一のサーバー・プロセスによって処理される最大クライアント接続数を設定します。MaxConnsPerServer
を1より大きい値に設定すると、データベースに対してマルチスレッド・モードが有効になり、プロセスではなくスレッドを使用してクライアント接続を処理できます。これにより、アプリケーションが新しい接続を確立するのに必要な時間が短縮され、多数の同時クライアント/サーバー接続を使用する構成の全体的な効率が向上します。
サーバーDSNによって参照されるサーバーには複数のサーバー・プロセスが存在できますが、その場合、この属性によって指定された接続数が各プロセスに許可される最大接続数になります。接続数がMaxConnsPerServer
を超えると、新しいサーバー・プロセスが自動的に開始されます。
詳細は、Oracle TimesTen In-Memory DatabaseリファレンスのMaxConnsPerServerを参照してください。
ノート: サーバーをマルチスレッド・モードで実行している場合にサーバー・プロセスが失敗すると、そのプロセスが処理するすべてのクライアント接続が終了します。サーバーをマルチスレッド・モードで構成する場合はこの点を考慮して、信頼性と可用性の要件に対してマルチスレッド・モードでのより効果的なリソース使用率のバランスを保つようなMaxConnsPerServer 値を選択してください。 |
ServersPerDSN
: サーバー上の複数の着信接続に対応する複数のサーバー・プロセスを設定できます。ServersPerDSN
属性は、着信接続の分散のためにMaxConnsPerServer
属性に関連して発生するサーバー・プロセスの数を指定します。
詳細は、Oracle TimesTen In-Memory DatabaseリファレンスのServersPerDSNを参照してください。
MaxConnsPerServer
属性とServersPerDSN
属性は関連しており、接続数を制限せずに、どのようにサーバー・プロセス間で接続を分散するかを制御します。ServersPerDSN
をN
(N
> 1
)に設定した場合は、サーバーDSNへの最初のN
* MaxConnsPerServer
件のクライアント接続が、N
個のサーバー・プロセスにラウンドロビン方式で分散されます。N
* MaxConnsPerServer
を超える追加のクライアント接続が同じサーバーDSNに対して開かれている場合、それらの接続は新しいサーバー・プロセスに順次割り当てられます。たとえば、接続が12個あり、MaxConnsPerServer=3
の場合、サーバー・プロセスは4個になります。
これにより、次の動作が起こります。
最初の着信接続で、新しいサーバー・プロセスが生成されます。追加の着信接続ごとに、ServersPerDSN
値を上限として、新しいサーバー・プロセスが生成されます。
次のServersPerDSN
の数の着信接続が、サーバーごとにMaxConnsPerServer
件の接続を上限として、ラウンドロビン方式で、既存のサーバー・プロセスに割り当てられます。
ServersPerDSN
を上限として起動されたサーバーでMaxConnsPerServer
に達すると、次の接続によって別のサーバー・プロセスが生成され、ステップ1および2で示した処理が繰り返されます。
たとえば、MaxConnsPerServer
を2に、ServersPerDSN
を5に設定すると、次のように処理が実行されます。
接続1がサーバーに接続され、その接続用に1つ目のサーバー・プロセスが起動されます。接続2から接続5までがサーバーに接続され、サーバー・プロセス2からサーバー・プロセス5が起動され、各サーバー・プロセスが1つの接続に対応します。
接続6がサーバーに接続されます。ServersPerDSN
には達しましたが、MaxConnsPerServer
には到達していないため、接続6には1つ目のサーバー・プロセスが割り当てられます。着信接続7から着信接続10までは、それぞれ、2つ目の接続としてサーバー・プロセス2からサーバー・プロセス5が割り当てられます。
接続11がサーバーに接続されます。ServersPerDSN
とMaxConnsPerServer
の両方の値に到達したため、接続11を処理するためにサーバー・プロセス6が起動されます。
論理サーバー名は、TimesTen Client上のサーバー・システムに対する定義です。ローカル・クライアント/サーバーに対して、TCP/IP以外の通信プロトコルを使用したり、TimesTen Serverプロセスが、デフォルトのTCP/IPポートをリスニングしないなどの場合は、クライアント・システムで論理サーバー名を定義する必要があります。このような場合、クライアントDSNは、論理サーバー名を参照する必要があります。ただし、使用されている通信プロトコルがTCP/IPである場合、クライアントDSNが、サーバー・ホスト名を直接参照でき、論理サーバー名を定義する必要がないのが一般的です。
次の項では、LinuxおよびUNIXプラットフォームでの論理サーバー名の定義方法を示します。
論理サーバー名の作成および構成を行うには、次の手順を実行します。
Windowsのデスクトップで、「スタート」メニューから、「コントロール パネル」、「管理ツール」、「データ ソース (ODBC)」の順に選択します。
「ODBC データソース アドミニストレータ」が開きます。
「ユーザー DSN」または「システム DSN」をクリックします。
「TimesTen Client DSN」を選択して「構成」をクリックします。
ノート: クライアントDSNが存在しない場合は「追加」をクリックし、「TimesTen Client 18.1」を選択して「完了」をクリックします。「TimesTen Client DSN Setup」ダイアログ・ボックスが開きます。設定ダイアログでのクライアントDSNの作成の詳細は、「WindowsでのクライアントDSNの作成と構成」を参照してください。 |
「Servers」をクリックします。「TimesTen Logical Server List」ダイアログ・ボックスが開きます。
「追加」をクリックします。「TimesTen Logical Server Name Setup」ダイアログ・ボックスが開きます。
「Server Name」フィールドに、論理サーバー名を入力します。
必要に応じて、「Description」フィールドにサーバーの説明を入力します。
「Network Address」フィールドに、サーバー・システムのホスト名またはIPアドレスを入力します。ネットワーク・アドレスは、次のいずれかである必要があります。
接続のタイプ | ネットワーク・アドレス |
---|---|
リモートのクライアント/サーバー接続 | TimesTen Serverが稼働しているシステムの名前。たとえば、example.com などです |
プロセス間通信(IPC)に共有メモリーを使用する、ローカルのクライアント/サーバー接続 | ttShmHost
共有メモリーをIPCとして使用するには、システムが正しく構成されていることを検証します。「共有メモリー通信」を参照してください。 |
「Network Port」フィールドには、TimesTen Logical Serverがデフォルトでリスニングを行うポート番号が表示されます。TimesTen Serverが別のポートでリスニングしている場合は、「Network Port」フィールドにそのポート番号を入力します。
次に例を示します。
「OK」をクリックした後、「TimesTen Logical Server List」ダイアログ・ボックスの「Close」をクリックして、論理サーバー名の作成を終了します。
クライアント・システム上のWindowsデスクトップで、「Start」メニューから「Control Panel」を選択します。
「ODBC」をダブルクリックします。「ODBC データソース アドミニストレータ」が開きます。
「TimesTen Client DSN」を選択して「構成」をクリックします。「TimesTen Client DSN Setup」ダイアログ・ボックスが開きます。
「Servers」をクリックします。「TimesTen Logical Server List」ダイアログ・ボックスが開きます。
「TimesTen Servers」リストからサーバー名を削除します。
「Delete」をクリックします。
論理サーバー名を、SYSTTCONNECTINI
環境変数で指定されているファイルに定義します。このファイルは、ttconnect.ini
ファイルと呼ばれます。このファイルには、説明、ネットワーク・アドレスおよびポート番号が含まれています。
TimesTenは、論理サーバーを次の順序で検索します。
TimesTenでは、ttconnect.ini
ファイルを使用して、サーバーの名前と属性、および論理サーバー名とそれらのネットワーク・アドレスとの間のマッピングを定義します。この情報は、TimesTen Clientがインストールされているシステムに格納されます。デフォルトでは、ttconnect.ini
ファイルは、timesten_home
/conf/sys.ttconnect.ini
です。
実行時にこのファイルの名前および場所を上書きするには、TimesTenアプリケーションを起動する前に、SYSTTCONNECTINI
環境変数にttconnect.ini
ファイルの名前および場所を設定します。
LinuxおよびUNIXでは、ttconnect.ini
ファイルにTimesTen Serverの短縮名を定義できます。表3-1に、ttconnect.ini
ファイルでのTimesTen Server指定の形式を示します。
表3-1 ttconnect.iniファイルでのTimesTen Serverの形式
コンポーネント | 説明 |
---|---|
[ |
TimesTen Serverシステムの論理サーバー名 |
|
TimesTen Serverの説明。 |
|
TimesTen Serverが実行されているシステムのDNS名、ホスト名またはIPアドレス。 |
|
TimesTen Serverが実行されているTCP/IPポート番号。TimesTenリリース18.1のデフォルトは6625です。 |
ネットワーク・アドレスは、次のいずれかである必要があります。
接続のタイプ | ネットワーク・アドレス |
---|---|
リモートのクライアント/サーバー接続 | TimesTen Serverが稼働しているシステムの名前。たとえば、server.example.com などです |
UNIXドメイン・ソケットを使用する、ローカルのクライアント/サーバー接続 | ttLocalHost |
プロセス間通信に共有メモリーを使用する、ローカルのクライアント/サーバー接続 | ttShmHost |
例3-1 論理サーバー名の定義
この例はttconnect.ini
ファイルの一部を示しており、システムserver.example.com
で稼働し、ポート6625
をリスニングするTimesTen Serverの論理サーバー名LogicalServer
を定義しています。TimesTenインストールのインスタンス名はinstance
です。
[LogicalServer] Description=TimesTen Server 18.1 Network_Address=server.example.com TCP_Port=6625
例3-2 通信におけるUNIXドメイン・ソケットの使用
クライアントとサーバーが同じLinuxまたはUNIXシステム上にある場合、TimesTen Clientドライバを使用するアプリケーションは、通信にUNIXドメイン・ソケットを使用するとパフォーマンスが向上する可能性があります。
また、同じバージョンのTimesTen Serverの複数のインスタンスを同じシステム上で実行できるように、TimesTen Serverがリスニングを行うポート番号を論理サーバー名に定義する必要もあります。これには、ttconnect.ini
ファイルで論理サーバー名を次のように定義します。
[LocalHost] Description=Local TimesTen Server 18.1 through domain sockets Network_Address=ttLocalHost TCP_Port=6625
例3-3 プロセス間通信用の共有メモリーの構成
クライアントとサーバーが同じシステム上にある場合、アプリケーションでプロセス間通信に共有メモリーを使用できます。これによって、パフォーマンスが向上する場合があります。
また、TimesTen Serverが初期接続を行うためにリスニングを行っているポート番号を論理サーバー名に定義する必要もあります。これには、ttconnect.ini
ファイルで論理サーバー名を次のように定義します。
[ShmHost] Description= Local TimesTen Server 18.1 through shared memory Network_Address=ttShmHost TCP_Port=6625
クライアントDSNは、リモート・データベースを指定し、TimesTen Clientを使用します。クライアントDSNは、ユーザーDSNとしても、システムDSNとしても定義できます。クライアントDSNは、hostname、DSN
(hostnameはTimesTenサーバーが稼働しているサーバー・システムを表し、DSNはそのホスト上で定義されているサーバーDSNを表します)のペアを指定して間接的にTimesTenデータベースを参照します。これらは、クライアントDSN接続属性内で構成します。
また、実行時に接続属性を、ODBCのSQLDriverConnect
関数に渡される接続文字列として構成したり、JDBCのDriverManager.getConnection()
メソッドに渡されるURL文字列として構成することもできます。たとえば、サーバー上でクライアントが使用するDSNを指定するには、クライアントの接続文字列またはクライアントDSNでTTC_Server_DSN
属性を使用できます。
ノート: クライアントDSNの定義内で構成されたサーバーDSNデータ・ストアまたは最初の接続属性はいずれも無視されます。ただし、TimesTen Clientでは、接続文字列またはURL文字列の一部として、ほとんどのサーバーDSN属性(DataStore 接続属性を除く)を渡すことができます。それらは、サーバーに透過的に渡され、サーバーDSNの構成が上書きされます。 |
次の項では、WindowsプラットフォームまたはLinuxおよびUNIXプラットフォームでのクライアントDSNとその属性の作成方法について説明します。
Windowsの場合、ODBCデータソース・アドミニストレータを使用して、論理サーバー名の構成およびクライアントDSNの定義を行います。
この項の内容は次のとおりです。
TimesTen Client DSNを定義するには、次の手順を実行します。
Windowsのデスクトップで、「スタート」メニューから、「コントロール パネル」、「管理ツール」、「データ ソース (ODBC)」の順に選択します。「ODBC データソース アドミニストレータ」が開きます。
「ユーザー DSN」または「システム DSN」をクリックします。ユーザーDSNおよびシステムDSNについては、「TimesTenデータベースを識別するためのデータソース名の指定」を参照してください。
「追加」をクリックします。「データソースの新規作成」ダイアログ・ボックスが開きます。
「TimesTen Client 18.1」を選択して、TimesTen Clientドライバを選択します。「完了」をクリックします。「Oracle TimesTen Client DSN Setup」ダイアログ・ボックスが開きます。
「Client DSN」フィールドに、クライアントDSNの名前を入力します。
クライアント・アプリケーションがインストールされているシステム上の定義したDSNの現行のリストで、この名前は最大32文字で一意である必要があります。論理サーバー名とサーバーDSNの名前を組み合せた一貫したネーミング規則を使用すると、名前の競合を回避できます。たとえば、ある企業に、Boston
およびChicago
という名前の論理サーバーと、Accounts
というサーバーDSNがある場合、クライアントDSNの名前はBoston_Accounts
およびChicago_Accounts
にできます。
必要に応じて、「Description」フィールドにクライアントDSNの説明を入力します。
「Server Name or Network Address」フィールドで、サーバー・システムの論理サーバー名またはネットワーク・アドレスを指定します。
この名前には、ホスト名、IPアドレスまたは論理サーバー名を指定できます。クライアント・システムで定義した論理サーバー名は、ドロップダウン・リストに表示されます。論理サーバー名を定義するには、「Servers」をクリックします。
このフィールドに論理サーバー名を指定しない場合、TimesTen Clientは、TimesTen ServerがデフォルトのTCP/IPポート番号で稼働していると想定します。このため、デフォルトのポート以外でサーバーが稼働しているときにこのフィールドに論理サーバー名を指定しない場合は、TCP_Port
属性を使用してODBC接続文字列にポート番号を指定する必要があります。
論理サーバー名の定義の詳細は、「Windowsでの論理サーバー名の作成および構成」を参照してください。
「Server DSN」フィールドに、クライアント・アプリケーションがアクセスするデータベースに対応するサーバーDSNを入力します。
サーバーDSNの名前がわからない場合は、「Refresh」をクリックして、「Server Name」または「Network Address」フィールドに指定したシステムで定義されているサーバーDSNのリストを取得します。ドロップダウン・リストから「Server DSN」を選択します。
TimesTen Serverが稼働しているシステムへのネットワーク・接続が必要です。
このリストに表示されるサーバーDSNのカスタマイズの詳細は、「ODBCデータ・ソース」を参照してください。
「Connection Character Set」フィールドで、ターミナル設定またはデータソースと一致しているキャラクタ・セットを選択します。デフォルトの接続キャラクタ・セットはAL32UTF8
です。詳細は、『Oracle TimesTen In-Memory Databaseリファレンス』のConnectionCharacterSetに関する説明を参照してください。
自動クライアント・フェイルオーバーを使用する場合は、「Failover Server Name」、「Failover Port Range」、「Failover DSN」および「No Reconnect On Failover」を構成します。詳細は、「自動クライアント・フェイルオーバーの使用」を参照してください。
TimesTen Scaleoutを使用する場合は、「TCP KeepAlive Time」、「TCP KeepAlive Interval」および「TCP KeepAlive Probes」を構成します。詳細は、このガイドの「TCPキープ・アライブ・パラメータの構成」および『Oracle TimesTen In-Memory Databaseリファレンス』のTTC_TCP_KEEPALIVE_TIME_MSに関する項、TTC_TCP_KEEPALIVE_INTVL_MSに関する項、TTC_TCP_KEEPALIVE_PROBESに関する項を参照してください。
クライアント/サーバー接続のユーザー名、パスワードおよびネットワーク・タイムアウト時間は、UID
、PWD
およびTTC_TIMEOUT
の各属性を使用して、クライアントDSNで定義できます。ただし、接続時にユーザー名およびパスワードを指定できるため、クライアントDSNでの認証の構成はオプションです。パスワードは暗号化されずにクライアントに格納されるため、クライアントDSNでのパスワード指定は絶対に避けてください。
UID
、PWD
およびTTC_TIMEOUT
の各属性の詳細は、『Oracle TimesTen In-Memory Databaseリファレンス』の接続属性に関する項を参照してください。
ネットワーク・タイムアウト時間および認証を設定するには、次の手順を実行します。
Oracle TimesTen Clientの「DSN Setup」ダイアログ・ボックスの「User ID」フィールドに、サーバー・システムで定義されているユーザー名を入力します。
「Password」フィールドには、ユーザーIDに対応するパスワードを入力します。「PwdCrypt」フィールドに、暗号化されたパスワードを入力することもできます。
「Network Timeout」フィールドに、間隔を秒単位で入力します。負の整数以外を入力できます。0を指定すると、クライアント/サーバー処理でタイムアウトは設定されません。デフォルトは60秒です。最大値は99,999秒です。
TTC_Timeout
接続属性は、TimesTen ClientおよびServerの使用によって完了するネットワーク処理に対して、最大時間制限を設定します。また、TTC_Timeout
接続属性では、タイムアウトする前にTimesTenクライアント・アプリケーションがそれに対応するTimesTen Serverプロセスの結果を待機する最大秒数も指定します。
「OK」をクリックして、設定を保存します。
この例では、TimesTen Clientシステムはclient.example.com
です。クライアント・アプリケーションは、リモート・サーバー・システムserver.example.com
上のサーバーDSNにアクセスしています。論理サーバー名はLogicalServer
です。
ノート: これらの例は、TimesTenのフレッシュ・インストールで事前定義されるサンプルDSNを参照します。 |
サーバー・システムserver.example.com
では、TimesTen Serverが稼働していること、およびTimesTen Serverによってリスニングされているポート番号について、ttStatus
ユーティリティを使用して確認します。
「LinuxまたはUNIXシステム上のTimesTen ServerのサーバーDSNの定義」の手順に従って、サーバーDSN database1
がserver.example.com
上でシステムDSNとして定義されていることを確認します。
クライアント・システムclient.example.com
で、リモートTimesTen Server用に論理サーバー名のエントリを作成します。「TimesTen Logical Server Name Setup」ダイアログ・ボックスで、次のように指定します。
「Server Name」フィールドにLogicalServer
と入力します。
「Network Address」フィールドに、server.example.com
と入力します。
「Network Port」フィールドに、6625
と入力します。これは、TimesTenリリース18.1の場合のTimesTen Serverのデフォルト・ポート番号です。この値は、ステップ1でttStatus
によって表示された値に対応している必要があります。
「TimesTen Server Name」ダイアログ・ボックスを開く手順および詳細は、「Windowsでの論理サーバー名の作成および構成」を参照してください。
クライアント・システムclient.example.com
で、リモートのサーバーDSNであるdatabase1CS
に対応するクライアントDSNを作成します。「TimesTen Client DSN Setup」ダイアログ・ボックスで、次の値を入力します。
「Client DSN」フィールドに、database1CS
と入力します。
「Server Name or Network Address」フィールドにLogicalServer
と入力します。
「Description」フィールドにサーバーの説明を入力します。このフィールドにデータを入力するかどうかはオプションです。
「Server DSN」フィールドにdatabase1
と入力します。
クライアントDSNのdatabase1CS
を使用して、システムclient.example.com
からクライアント・アプリケーションを実行します。次の例では、TimesTen ClientとともにインストールしたttIsql
プログラムを使用します。
% ttIsql -connStr "DSN=database1CS"
次の例では、デフォルトのポート番号以外を使用するTimesTen Serverにアクセスする方法について説明します。
TimesTen Serverのネットワーク・アドレスがserver.example.com
で、TimesTen Serverがポート6625をリスニングしているとします。この場合は、次の方法を使用してサーバーDSNに接続できます。
ネットワーク・アドレスにserver.example.com
、ネットワーク・ポートに6625
を指定して論理サーバー名LogicalServer
を定義します。LogicalServer
をサーバー名、Server_DSN
をサーバーDSNとして、Client_DSN
をクライアントDSNとして定義します。次に、コマンドを実行します。
% ttIsql -connStr "DSN=Client_DSN"
または、ネットワーク・アドレスにserver.example.com
、ネットワーク・ポートにデフォルトのポート番号を指定して論理サーバー名LogicalServer_tt
を定義します。LogicalServer
をサーバー名、Server_DSN
をサーバーDSNとして、Client_DSN
をクライアントDSNとして定義します。コマンドのポート番号を上書きします。
% ttIsql -connStr "DSN=Client_DSN;TCP_Port=6625"
TimesTenデータベースへのクライアント・アプリケーションの接続をテストするには、次の手順を実行します。
Windowsデスクトップで、「スタート」→「設定」→「コントロール パネル」を選択します。
「ODBC」をダブルクリックします。「ODBC データソース アドミニストレータ」が開きます。
接続をテストするTimesTen Client DSNを選択し、「構成」をクリックします。「TimesTen Client DSN Setup」ダイアログ・ボックスが開きます。
「Test Oracle TimesTen Server Connection」をクリックして、TimesTen Serverへの接続をテストします。
ODBCデータソース・アドミニストレータでTimesTen Serverへの接続が試行され、接続が成功したかどうかを示すメッセージが表示されます。このテスト中、TimesTen Clientによって次のことが検証されます。
クライアント・システムにODBC、WindowsソケットおよびTimesTen Clientがインストールされているかどうか。
「TimesTen Client DSN Setup」ダイアログ・ボックスの「Server Name or Network Address」フィールドで指定したサーバーが定義されていて、対応するシステムが存在しているかどうか。
TimesTen Serverはサーバー・システムで稼働しています。
「Test Data Source Connection」をクリックして、サーバーDSNへの接続をテストします。ODBCデータソース・アドミニストレータでサーバーDSNへの接続が試行され、接続が成功したかどうかを示すメッセージが表示されます。
このテスト中、TimesTen Clientによって次のことが検証されます。
「Server DSN」フィールドで指定したサーバーDSNがサーバー・システムで定義されているかどうか。
クライアント・アプリケーションでサーバーDSNに接続できるかどうか。
LinuxおよびUNIXでは、論理サーバー名はttconnect.ini
ファイルを編集して定義し、クライアントDSNはユーザーodbc.ini
ファイル(ユーザーDSN用)またはシステムsys.odbc.ini
ファイル(システムDSN用)を編集して定義します。
ノート: odbc.ini ファイルでクライアントDSNを定義する場合の構文については、「odbc.iniファイル・エントリの説明」を参照してください。ttconnect.ini ファイルの詳細は、「論理サーバー名の定義」を参照してください。ユーザーDSNおよびシステムDSNについては、「TimesTenデータベースを識別するためのデータソース名の指定」を参照してください。 |
odbc.ini
ファイルのODBC Data Sourcesセクションに、クライアントDSNのエントリを追加します。クライアントDSNでは、次の属性を使用して、TimesTenデータベースの場所を指定します。
接続に使用するTimesTen ODBCクライアント・ドライバ。
データベースのサーバー(およびデフォルトのポート番号を使用しない場合はポート番号)は、TTC_Server
属性で指定します。
目的のデータベースを指定するサーバーDSNは、TTC_Server_DSN
属性で指定します。
ノート: サーバーDSNは、データベースが存在するサーバー・システム上で定義します。 |
クライアントが接続されるTimesTenデータベースごとに、次の2つのエントリが必要です。
ODBC Data Sourcesセクションで、クライアントDSN名を定義し、使用するTimesTen ODBCクライアント・ドライバの名前を指定します。
ODBC Data Sourcesセクションで定義済のクライアントDSNを使用してエントリを作成します。このセクションで、サーバー・システムおよびサーバーDSNを指定します。
使用するクライアントDSN名およびODBCクライアント・ドライバを指定する構文を次に示します。
[ODBC Data Sources] Client_DSN=Name-of-ODBC-driver
たとえば、クライアントDSNとしてdatabase1CS
を定義し、TimesTen Client ODBCドライバに関連付けるには、odbc.ini
ファイルのODBC Data Sourcesセクションに次のように入力します。
[ODBC Data Sources] database1CS=TimesTen Client 18.1 Driver
ODBC Data Sourcesセクションの後に、定義した各データソースに対するサーバー・システムおよびサーバーDSNを指定するエントリを追加します。odbc.ini
ファイルのODBC Data Sourcesセクションに示されるクライアントDSNごとに指定セクションが必要です。
サーバー名server.example.com
とポート6625を使用してTimesTen Serverが構成されており、サーバーDSNがdatabase1
である、TimesTen Client DSN database1CS
を指定する例を次に示します。
[database1CS] TTC_Server=server.example.com/6625 TTC_Server_DSN=database1
論理サーバー名を使用する場合、論理サーバー名LogicalServer
を使用してTimesTen Serverが構成されており、サーバーDSNがdatabase1
である、TimesTen Client DSN database1CS
を指定する例を次に示します。
[database1CS] TTC_Server=LogicalServer TTC_Server_DSN=database1
TTC_Server
属性が、クライアントDSN定義の主要属性です。クライアント接続属性の数はわずかですが、それぞれがサーバーDSNを識別します。クライアント定義に指定されたサーバー接続属性は無視されます。クライアント定義では、一般的な接続属性を指定できます。
ノート: 接続時のユーザーIDの指定方法に関するオプションは、『Oracle TimesTen In-Memory Databaseリファレンス』のUIDとPWDに関する項を参照してください。 |
TimesTen Client DSNを構成すると、ttIsqlCSユーティリティを使用してサーバーに接続できます。次は、database1CS
DSNを使用してサーバーに接続します。
% ttIsqlCS -connStr "DSN=database1CS"
odbc.ini
ファイルで使用できるすべてのクライアントと、一般的な接続属性の詳細は、『Oracle TimesTen In-Memory Databaseリファレンス』の接続属性に関する項を参照してください。
自動クライアント・フェイルオーバーは、TimesTen ScaleoutまたはTimesTen Classicを使用する高可用性クライアント/サーバーのシナリオで使用します。クライアントが接続しているTimesTenデータベースに障害が発生した場合は、代替のTimesTenデータベースへのフェイルオーバー(接続転送)が発生します。フェイルオーバー接続は必要な場合にのみ作成されます。
TimesTen Scaleoutの場合、この接続は、グリッドで使用可能なデータ・インスタンスのリストから使用可能なデータ・インスタンスに転送されます(odbc.ini
ファイルのDSN構成に依存しません)。
TimesTen Classicの場合、次の2つのシナリオで自動クライアント・フェイルオーバーを使用できます。
アクティブ・スタンバイ・ペアのレプリケーション・スキーム: アクティブ・スタンバイ・ペアのレプリケーション構成がある場合、この接続は、アクティブ・スタンバイ・ペアのレプリケーション構成内の新しいアクティブ(元のスタンバイ)マスターに転送されます。アクティブ・マスターの障害によって元のスタンバイ・マスターが新しいアクティブ・マスターになるというシナリオを検討します。自動クライアント・フェイルオーバー機能を使用すると、新しいアクティブ(元のスタンバイ)ノードへのフェイルオーバー(転送)が発生し、アプリケーションは新しいアクティブ・マスターに自動的に再接続されます。
ノート: TimesTen Classic内の自動クライアント・フェイルオーバー(アクティブ・スタンバイ・ペアのレプリケーション・スキームを使用している場合)は、Oracle Clusterwareが使用されている場合のOracle Clusterwareに対する補完機能ですが、この2つの機能は互いに依存しません。Oracle Clusterwareの詳細は、『Oracle TimesTen In-Memory Database開発者および管理者ガイド』の「Oracle Clusterwareを使用したアクティブ・スタンバイ・ペアの管理」に関する説明を参照してください。 |
汎用自動クライアント・フェイルオーバー: 複数のデータベースを作成し、両方のデータベースでデータの一貫性を保証するプロセスがある場合、クライアントはデータベース間で自動的にフェイルオーバーできます。たとえば、TimesTen Cache構成が適切な場合は、TimesTen Cacheによって、含まれているすべてのTimesTenデータベースのデータがOracleデータベースのデータと自動的に同期されます。このようなシナリオでは、データの一貫性に影響を与えることなく、アプリケーションは複数のキャッシュ間で安全にフェイルオーバーできます。
これらの各シナリオでは、アプリケーションはフェイルオーバーTimesTenデータベースに自動的に接続されます。TimesTenは、自動クライアント・フェイルオーバーが発生したときにアプリケーションに警告を渡す機能を提供しているため、アプリケーションは適切な処理を行うことができます。
ノート: 最初の接続後の任意の時点でALTER SESSION 文を発行する場合は、フェイルオーバー後に再発行する必要があります。フェイルオーバー後の接続永続性の詳細は、『Oracle TimesTen In-Memory Database C開発者ガイド』の自分のアプリケーションでの自動クライアント・フェイルオーバーの使用に関する項を参照してください。 |
次の項では、自動クライアント・フェイルオーバーを使用および有効化する方法について説明します。
デフォルトでは、TimesTen Scaleoutでの接続の失敗時に、クライアントは自動的に別のデータ・インスタンスへの再接続を試行します(可能な場合)。TimesTen Scaleoutでのクライアント接続フェイルオーバーの管理の詳細は、『Oracle TimesTen In-Memory Database Scaleoutユーザーズ・ガイド』のクライアント接続フェイルオーバーに関する項を参照してください。
TimesTen Classicでアクティブ・スタンバイ・ペアのレプリケーション・スキームを使用するときに、アプリケーションがアクティブ・マスターに接続すると、接続が登録され、この登録はスタンバイ・ノードにレプリケートされます。アクティブ・マスターに障害が発生すると、スタンバイ・マスターがアクティブ・マスターになり、クライアントにフェイルオーバーのことが通知されます。この時点で、クライアントは新しいアクティブ・マスターに新しく接続します。接続ハンドル以外の状態は保持されません。元の接続からのすべてのクライアント文ハンドルは、無効とマークされます。
フェイルオーバーが完了すると、TimesTenは登録されているユーザー定義関数に対してコールバックを行います。この関数は、フェイルオーバーが発生している状況で実行する必要があるカスタム処理を行います。
次の項目は、特定の障害シナリオにおける自動クライアント・フェイルオーバーの動作を示しています。
クライアント・ライブラリがアクティブ・マスターとの接続を失った場合、フェイルオーバーを実行してスタンバイ・マスターへの切替えを試行します。
なんらかの理由でアクティブ・マスターがない場合(サーバー側でフェイルオーバーが発生せず、両方のサーバーがスタンバイかアイドル状態)、アプリケーションは接続できません。ただし、自動クライアント・フェイルオーバーは、アクティブ・マスターを見つけるか、タイムアウトになるまで、両方のサーバーの切替えを継続します。
フェイルオーバーがすでに発生し、クライアントがすでに新しいアクティブ・マスターに接続されている場合、次のフェイルオーバー・リクエストでは、元のアクティブ・マスターへの再接続が試みられます。これが失敗すると、タイムアウトになるまで、2つのサーバーに接続するために切替え試行が行われます。
クライアント登録がスタンバイ・マスターへのレプリケーションによって正常に伝播される前にアクティブ・マスターで障害が発生した場合、クライアントはフェイルオーバー・メッセージを受信せず、接続登録は失われます。ただし、最終的に、クライアント・ライブラリによって、元のアクティブ・マスターへの接続が失われたためにフェイルオーバーの試行を開始することが(TCPを介して)通知されます。
ノート: アクティブ・スタンバイ・ペアのレプリケーション・スキームで自動クライアント・フェイルオーバーを使用すると、サーバー・プロセスごとにデータベース接続が1つ追加されます。TimesTenのConnections 属性(データベースへの同時接続数の上限)の設定を選択するときに、これを考慮する必要があります。サーバー・プロセスの数は、MaxConnsPerServer 属性(サーバー・プロセスによって処理可能な同時接続の最大数)の設定にも影響を受けます。
たとえば、接続が12個あり、 |
C開発者の場合、コールバックの作成方法および自動クライアント・フェイルオーバーの促進方法についての詳細は、『Oracle TimesTen In-Memory Database C開発者ガイド』の「アプリケーションでの自動クライアント・フェイルオーバーの使用」に関する説明を参照してください。Java開発者の場合、詳細は、『Oracle TimesTen In-Memory Database Java開発者ガイド』の「自動クライアント・フェイルオーバー用のJDBCのサポート」に関する説明を参照してください。
汎用自動クライアント・フェイルオーバーは、TimesTen Classicデータベースの任意のセットに対して構成できます。フェイルオーバーTimesTenデータベースのリストは、ユーザーまたはシステムのodbc.ini
ファイルで構成できます。構成後、アプリケーションは接続が成功するまで各接続を試行できます。この機能は、クライアント/サーバー接続のみに適用され、直接接続には適用されません。
ノート: ご使用の環境で自動クライアント・フェイルオーバーが有意義であることを確認する必要があります。つまり、含まれているデータベース間でフェイルオーバーする際に、データ整合性の問題が発生する可能性はありません。また、クライアントは、フェイルオーバー先のデータベースで必要な表およびデータを見つけることができます。 |
フェイルオーバー・サーバー・リストに含まれている各TimesTen Classicデータベースについて、次の点を考慮してください。
関連するデータベースは、TimesTenリリース18.1.4.1.0以降である必要があります。
すべてのデータベースへのクライアント接続には、同じデータベース・ユーザー名とパスワードを使用する必要があります。
フェイルオーバー・データベースには、同じ表定義またはキャッシュ・グループ定義(あるいはその両方)が必要です。すべての表またはキャッシュ・グループ表(あるいはその両方)のすべてのデータベースでデータが一貫していることを確認するプロセスが必要です。
高速フェイルオーバーを実現するには、クライアント・フェイルオーバー・リスト内のすべてのデータベースをメモリーにロードする必要があります。
TimesTen Cacheを使用する場合、データベースには常に稼働中のキャッシュ・エージェントが必要です。
汎用自動フェイルオーバーに含まれるデータベースでは、アクティブ・スタンバイ・ペアのレプリケーション・スキームは使用されません。
汎用自動フェイルオーバーの一般的なユースケースは、読取り専用キャッシュを使用する一連のデータベースで、各データベースのキャッシュ・データ・セットは同じです。たとえば、読取り専用キャッシュ・グループが複数ある場合は、フェイルオーバー・サーバーのリストに含まれるすべてのTimesTen Classicデータベースに、同じ読取り専用キャッシュ・グループを作成します。クライアント接続が代替のTimesTenデータベースにフェイルオーバーされると、TimesTen Cacheは(必要に応じて) Oracleデータベースのデータを自動的にリフレッシュするため、キャッシュ・データの一貫性が保たれます。読取り専用キャッシュ・グループの詳細は、『Oracle TimesTen Application-Tier Database Cacheユーザーズ・ガイド』の読取り専用キャッシュ・グループに関する項を参照してください。
ノート: フェイルオーバーが発生した場合、アプリケーションではすべての文を再準備する必要があります。 |
C開発者の場合、コールバックの作成方法および自動クライアント・フェイルオーバーの促進方法についての詳細は、『Oracle TimesTen In-Memory Database C開発者ガイド』の「アプリケーションでの自動クライアント・フェイルオーバーの使用」に関する説明を参照してください。Java開発者の場合、詳細は、『Oracle TimesTen In-Memory Database Java開発者ガイド』の「自動クライアント・フェイルオーバー用のJDBCのサポート」に関する説明を参照してください。
フェイルオーバーTimesTenデータベースのリストは、クライアントで構成できます。その後、接続が成功するまで、クライアントは各フェイルオーバーTimesTenデータベースへの接続を開始します。
ノート: 指定するフェイルオーバー・サーバー情報は、使用する自動クライアント・フェイルオーバーのタイプによって異なります。つまり、フェイルオーバー・サーバーは、スタンバイ・データベース(アクティブ・スタンバイ・ペアのレプリケーション・スキームを使用する場合)または2番目のTimesTenデータベース(読取り専用キャッシュ・グループを使用する場合)のいずれかである必要があります。自動クライアント・フェイルオーバーの両方のタイプの詳細は、「自動クライアント・フェイルオーバーの使用」を参照してください。 |
次の項では、TimesTen Classicの自動クライアント・フェイルオーバーの構成方法について説明します。
Oracle TimesTenの「Client DSN Setup」ダイアログで、「WindowsでのクライアントDSNの作成および構成」の説明のとおり、残りのクライアントDSN情報を構成した後で、次のフィールドに入力します。
「Failover Server Name or Network Address」フィールドで、フェイルオーバー・サーバーの論理サーバーまたはネットワーク・アドレスを指定します。
この名前には、ホスト名、IPアドレスまたは論理サーバーを指定できます。クライアント・システムで定義した論理サーバー名は、ドロップダウン・リストに表示されます。論理サーバー名を定義するには、「Servers」をクリックします。
このフィールドに論理サーバー名を指定しない場合、TimesTen Clientは、TimesTen ServerがデフォルトのTCP/IPポート番号で稼働していると想定します。このため、デフォルトのポート以外でサーバーが稼働しているときにこのフィールドに論理サーバー名を指定しない場合は、TCP_Port
属性を使用してODBC接続文字列にポート番号を指定する必要があります。
論理サーバー名の定義の詳細は、「Windowsでの論理サーバー名の作成および構成」を参照してください。
「Failover Server DSN」フィールドに、フェイルオーバー・サーバーに対応するサーバーDSNを入力します。
サーバーDSNの名前がわからない場合は、「Refresh」をクリックして、「Failover Server Name」または「Network Address」フィールドに指定したシステムで定義されているサーバーDSNのリストを取得します。ドロップダウン・リストから「Server DSN」を選択します。
TimesTenデータベースが稼働しているシステムへのネットワーク接続が必要です。
自動クライアント・フェイルオーバーにアクティブ・スタンバイ・ペアのレプリケーション・スキームを使用している場合は、オプションで、TimesTenがフェイルオーバー通知をリスニングするポートまたはポート範囲に対応した「Failover Port Range」を指定します。ポート範囲を指定すると、クライアント・システムとサーバー・システムの間のファイアウォールに対応できます。アクティブ・スタンバイ・ペアでは、アクティブ・マスターおよびスタンバイ・マスターによりクライアントにフェイルオーバーが通知されます。
TimesTenでは、デフォルトで、オペレーティング・システムによって選択された単一ポートが使用されます。ポート範囲は、最小値と最大値をハイフンで区切って設定します。
次の2つの条件が一致する場合は、ポート範囲のみを指定する必要があります。
サーバーとクライアント・ホストの間のファイアウォールには複数のポートが必要です。
1つのクライアント・ホスト上で複数のクライアント・アプリケーションを使用して自動クライアント・フェイルオーバーを構成している。
クライアント・ホスト上で自動クライアント・フェイルオーバーを構成している各クライアント・アプリケーションは、フェイルオーバー通知用の個別ポートでリスニングする必要があります。
オプションで、「No Reconnect On Failover」チェック・ボックスを選択して、TimesTenで再接続以外のすべての通常のクライアント・フェイルオーバー処理を実行するようにします。たとえば、文ハンドルおよび接続ハンドルは無効としてマークされます。これは、アプリケーションが独自の接続プーリングを提供したり、クライアント・フェイルオーバー後のデータベースへの独自の再接続を管理する場合に役立ちます。
クライアント上のodbc.ini
ファイルで、クライアントDSNを定義します。TTC_Server
N
接続属性(N
>= 2)を使用して、フェイルオーバー・サーバーを指定します。TTC_Server
N
接続属性では、(ポート番号の有無に関係なく)システムのDNS名、ホスト名またはIPアドレスを指定できます。
TTC_Server_DSN
n
接続属性(n
>= 2)をこのデータベースの名前に設定します。
TTC_Server
N
またはTTC_Server_DSN
n
を設定することは、暗黙的に次のことを意味します。
ユーザーは、自動クライアント・フェイルオーバーを使用するつもりである。
ユーザーは、フェイルオーバー・メカニズムをサポートするためにアプリケーションに新しいクライアント・スレッドが作成されることを理解している。
読取り専用キャッシュ・グループに自動クライアント・フェイルオーバーを使用している場合は、TTC_Server
N
接続属性およびTTC_Server_DSN
n
接続属性(N,n
>= 2)を使用して、複数のフェイルオーバー・サーバーを指定できます。
フェイルオーバー・サーバー(N
で識別される)は連続した順序で指定する必要があります。
次に例を示します。
[MyDSN] TTC_Server=server.example.com/6625 TTC_Server_DSN=MyDSN TTC_Timeout=60 TTC_Server2=server2.example.com/6625 TTC_Server_DSN2=MyDSN_Failover1 TTC_Server3=server3.example.com/6625 TTC_Server_DSN3=MyDSN_Failover2
ノート:
|
詳細は、『Oracle TimesTen In-Memory Databaseリファレンス』のTTC_ServerまたはTTC_Server1に関する項、TTC_Server2、TTC_ServerNに関する項、TTC_Server_DSN2、TTC_Server_DSNnに関する項およびTCP_Port2、TCP_PortNに関する項を参照してください。
読取り専用キャッシュ・グループで自動クライアント・フェイルオーバーを使用し、複数の代替フェイルオーバー・サーバーを指定している場合は、クライアントがフェイルオーバー・サーバーをどのように選択するかを指定できます。デフォルトでは、クライアントは、TTC_Server
属性およびTTC_Server
N
属性で指定されたランダムに順序付けられたサーバー・リストから選択します。
ただし、TTC_Random_Selection
を0に設定すると、クライアントはTTC_Server
N
接続属性で指定された最初のサーバーを選択します。クライアントが指定された最初のサーバーに接続できない場合、クライアントは数値で指定された順序で次のフェイルオーバー・サーバーに進みます。
ノート: 自動クライアント・フェイルオーバーにアクティブ・スタンバイ・ペアを使用し、クライアント・ライブラリがTTC_Server_DSN で指定されたアクティブ・マスターに接続できない場合は、TTC_Server_DSN2 で指定されたスタンバイ・マスターを試行します。 |
詳細は、『Oracle TimesTen In-Memory Databaseリファレンス』のTTC_Random_Selectionに関する項を参照してください。
オプションで、クライアント上のodbc.ini
ファイルで、フェイルオーバーのリカバリにおけるすべての試行の期間を指定するタイムアウトを設定します。
TimesTenが自動クライアント・フェイルオーバーを使用して障害からリカバリしようとするとき、TTC_TIMEOUT
接続属性は、フェイルオーバーのリカバリにおけるすべての試行の期間を指定します。フェイルオーバーが試行されている間は、接続はブロックされることがあります。次に例を示します。
[MyDSN] TTC_Server=server.example.com/6625 TTC_Server_DSN=MyDSN TTC_Timeout=60 TTC_Server2=server2.example.com/6625 TTC_Server_DSN2=MyDSN_Failover1 TTC_Server3=server3.example.com/6625 TTC_Server_DSN3=MyDSN_Failover2
詳細は、『Oracle TimesTen In-Memory Databaseリファレンス』のTTC_Timeoutに関する項を参照してください。
クライアント・フェイルオーバーにアクティブ・スタンバイ・ペアのレプリケーション・スキームを使用している場合は、オプションでTTC_FailoverPortRange
属性を構成して、フェイルオーバー・スレッドがフェイルオーバー通知をリスニングするポートまたはポート範囲を指定できます。ポート範囲を指定すると、クライアント・システムとサーバー・システムの間のファイアウォールに対応できます。アクティブ・スタンバイ・ペアでは、アクティブ・マスターおよびスタンバイ・マスターによりクライアントにフェイルオーバーが通知されます。
TimesTenでは、デフォルトで、オペレーティング・システムによって選択された単一ポートが使用されます。ポート範囲は、最小値と最大値をハイフンで区切って設定します。
次の2つの条件が一致する場合は、ポート範囲のみを指定する必要があります。
サーバーとクライアント・ホストの間のファイアウォールには複数のポートが必要です。
1つのクライアント・ホスト上で複数のクライアント・アプリケーションを使用して自動クライアント・フェイルオーバーを構成している。
クライアント・ホスト上で自動クライアント・フェイルオーバーを構成している各クライアント・アプリケーションは、フェイルオーバー通知用の個別ポートでリスニングする必要があります。
オプションで、TTC_NoReconnectOnFailover
属性を有効にして、TimesTenで通常のクライアント・フェイルオーバーを実行するが、再接続しないようにします。このことは、アプリケーションが独自の接続プーリングを実行したり、フェイルオーバー後に自動的にデータベースへの再接続を試行する場合に役立ちます。デフォルト値は1で、TimesTenが再接続を試行する必要があることを示します。
クライアント接続が失敗する可能性がある原因の1つは、ケーブルの切断やホストのハングまたはクラッシュなどのネットワーク障害です。クライアント接続が失われると、クライアント接続フェイルオーバーが開始されます。ただし、TCP接続が開始されている場合は、接続に対してTCPキープ・アライブ・パラメータを構成し、接続障害を確実かつ迅速に検出できるようにすることができます。
ノート: また、TTC_Timeout 属性を設定して、TimesTen ClientおよびTimesTen Serverを使用したネットワーク操作が完了するまでの時間の上限を設定し、接続に問題があることを検出することもできます。また、TTC_Timeout 属性では、タイムアウトする前にTimesTenクライアント・アプリケーションがそれに対応するTimesTen Serverプロセスの結果を待機する最大秒数も指定します。
一部のデータベース操作は、 この属性の詳細は、『Oracle TimesTen In-Memory Databaseリファレンス』のTTC_Timeoutに関する項を参照してください。 |
次のパラメータを使用して、接続ごとにキープ・アライブ設定を制御できます。
TTC_TCP_KEEPALIVE_TIME_MS
: 送信された最後のデータ・パケットと最初のプローブの間の継続時間(ミリ秒)。デフォルトは10000ミリ秒です。
注意: Linuxクライアント・プラットフォームでは、TTC_TCP_KEEPALIVE_TIME_MS の値の最後の3桁を切り捨てて、この値を秒単位に変換します。このため、2500ミリ秒の設定は、2.5秒ではなく2秒になります。 |
TTC_TCP_KEEPALIVE_INTVL_MS
: 後続のプローブ間の時間間隔(ミリ秒)。デフォルトは10000ミリ秒です。
TTC_TCP_KEEPALIVE_PROBES
: 接続を失敗とみなしてクライアントに通知するまでに送信する確認応答のないプローブの数。確認応答のないプローブ数のデフォルトは、2に設定されます。
デフォルト設定のままにした場合、TimesTenは10秒(TTC_TCP_KEEPALIVE_TIME_MS
の設定)後に最初のプローブを送信します。
レスポンスがある場合、接続は有効で、TTC_TCP_KEEPALIVE_TIME_MS
タイマーがリセットされます。
レスポンスがない場合、TimesTenは、この最初のプローブの後に10秒間隔(TTC_TCP_KEEPALIVE_INTVL_MS
の設定)で別のプローブを送信します。2回連続したプローブに対してレスポンスがない場合、この接続は中止され、TimesTenによって別のデータ・インスタンスに接続がリダイレクトされます。
たとえば、TCPキープ・アライブ設定を次のように変更して、最初のプローブの待機時間を50000ミリ秒に短縮し、接続を20000ミリ秒ごとに、最大3回まで確認できるようにすることができます。
TTC_TCP_KEEPALIVE_TIME_MS=50000 TTC_TCP_KEEPALIVE_INTVL_MS=20000 TTC_TCP_KEEPALIVE_PROBES=3
これらの接続属性の詳細は、『Oracle TimesTen In-Memory Databaseリファレンス』のTTC_TCP_KEEPALIVE_TIME_MSに関する項、TTC_TCP_KEEPALIVE_INTVL_MSに関する項、TTC_TCP_KEEPALIVE_PROBESに関する項を参照してください。
TimesTen Serverとは、TimesTenデーモンの子プロセスのことです。TimesTen Serverがインストールされていて、TimesTenデーモンが起動または停止されると、このプロセスは自動的に起動および停止されます。ttDaemonAdmin
ユーティリティを使用して、デーモンまたはサービスを明示的に起動または停止できます(ttGridAdmin
instanceExec
を使用してTimesTen Scaleoutでこのコマンドを実行します)。TimesTen Serverはインスタンス管理者として実行されます。
TimesTen Serverは、TimesTen Clientドライバとリンクされたアプリケーションからのリクエストを処理します。
TimesTenデーモンおよびTimesTen Serverのデフォルト・ポートの詳細は、Oracle TimesTen In-Memory Databaseインストレーション、移行およびアップグレード・ガイドのttInstanceCreateユーティリティの章を参照してください。システム管理者は、競合の回避またはセキュリティ上の理由から、インストール時にポート番号を変更できます。ポートの範囲は1から65535です。TimesTen Serverに接続するには、クライアントDSNで、論理サーバー名の定義の一部としてポート番号を指定するか、接続文字列にポート番号を指定する必要があります。
TimesTen Serverオプションの変更方法の詳細は、「TimesTen Server属性の変更」を参照してください。
TimesTen Serverは、接続、切断、様々な警告、エラーおよび情報エントリをログ・ファイルに記録します。
LinuxおよびUNIXの場合は、デフォルトで、TimesTen Serverによってtimesten_home
/diag/ttmesg.log
ファイルおよびtimesten_home
/diag/tterrors.log
ファイルにメッセージが記録されます。オプションで、syslog
機能にメッセージを記録するようTimesTenを構成することもできます。
「エラー、警告および情報メッセージ」を参照してください。
この例では、TimesTen Clientアプリケーション・システムはclient.example.com
です。クライアント・アプリケーションは、リモート・サーバー・システムserver.example.com
上のサーバーDSN database1
にアクセスしています。論理サーバー名はLogicalServer
です。TimesTenインストールのインスタンス名はinstance
です。
サーバー・システムserver.example.com
では、TimesTen Serverが稼働していること、およびTimesTen Serverによってリスニングされているポート番号について、ttStatus
ユーティリティを使用して確認します。
server.example.com
上のシステムsys.odbc.ini
ファイルに、サーバーDSNであるdatabase1
が指定されていることを確認します。
これらは、sys.odbc.ini
ファイルで次のように指定されている必要があります。/disk1/timesten
がtimesten_home
であることに注意してください。
[database1] DataStore=/disk1/timesten/server/database1
client.example.com
上のttconnect.ini
ファイルで、リモートTimesTen Server用に論理サーバー名のエントリを作成します。
[LogicalServer] Network_Address=server.example.com TCP_Port=6625
ttconnect.ini
ファイルの作成方法は、「LinuxおよびUNIXでのクライアントDSNの作成および構成」を参照してください。
クライアント・システムclient.example.com
で、リモートのサーバーDSNであるdatabase1
に対応するクライアントDSNを作成します。
これらは、odbc.ini
ファイルで次のように指定されている必要があります。
[database1CS] TTC_Server=LogicalServer TTC_Server_DSN=database1
適切なodbc.ini
ファイルの場所は、「ユーザーDSNおよびシステムDSNの概要」を参照してください。
クライアントDSNのdatabase1CS
を使用して、システムclient.example.com
からクライアント・アプリケーションを実行します。次の例では、TimesTen ClientとともにインストールしたttIsql
プログラムを使用します。
% ttIsqlCS -connStr "DSN=database1CS"
次の例では、デフォルトのポート番号以外を使用するTimesTen Serverにアクセスする方法について説明します。
TimesTen Serverのネットワーク・アドレスがserver.example.com
であり、TimesTen Serverがポート6625
をリスニングしているとします。この場合は、次の方法を使用してサーバーDSNに接続できます。
ネットワーク・アドレスにserver.example.com
、ネットワーク・ポートに6625
を指定して論理サーバー名LogicalServer
を定義します。LogicalServer
をサーバー名、Server_DSN
をサーバーDSNとして、Client_DSN
をクライアントDSNとして定義します。次のコマンドを実行します。
% ttIsqlCS -connStr "DSN=Client_DSN"
または、ネットワーク・アドレスにserver.example.com
、ネットワーク・ポートにデフォルトのポート番号を指定して論理サーバー名logical_server
を定義します。サーバー名にLogicalServer
、サーバーDSNにServer_DSN
を指定し、クライアントDSNを定義します。コマンドのポート番号を上書きします。
% ttIsqlCS -connStr "DSN=Client_DSN;TCP_Port=6625"
あるいは、接続文字列にサーバーを定義します。この場合、クライアントDSNや論理サーバー名を定義する必要はありません。
% ttIsqlCS -connStr "TTC_Server=server.example.com;TTC_Server_DSN=Server_DSN;TCP_Port=6625"
TimesTenデータベースへのクライアント・アプリケーションの接続をテストするには、次の手順を実行します。
クライアント・システムがサーバー・システムにアクセスできることを確認します。
サーバー・システムから応答があるかどうかを確認するために、クライアント・システムからping
を実行します。
TimesTen Serverがサーバー・システムで稼働していることを確認します。
TimesTen Serverがリスニングを行っているポートにtelnet
で接続します。次に例を示します。
% telnet server.example.com 6625
TimesTen Serverへの接続に成功すると、次のようなメッセージが表示されます。
Connected to server.example.com
サーバー・システムはコマンドに応答するが、TimesTen Serverが応答しない場合は、TimesTen Serverが稼働していない可能性があります。接続に失敗した場合、次のようなメッセージが表示されます。
telnet: Unable to connect to remote host: Connection refused
サーバー・システム上のttStatus
ユーティリティを使用して、TimesTen Serverのステータスおよびポート番号を確認します。通常、TimesTen Serverはインストール時に起動されます。TimesTen Serverが稼働していない場合は、起動する必要があります。TimesTen Serverの起動方法は、「TimesTen Server属性の変更」を参照してください。
クライアント・アプリケーションがデータベースに接続可能であることを確認します。データベースへの接続を確立できない場合は、ttconnect.ini
ファイルに正しい情報が指定されていることを確認します。
ttconnect.ini
ファイルの情報が正しい場合は、データベースが存在し、TimesTen Serverが稼働しているホストで、データベースに対応するサーバーDSNがシステムsys.odbc.ini
ファイルで適切に定義されていることを確認します。