TimesTen ClientおよびTimesTen Serverの構成
クライアントおよびサーバーを使用してアプリケーションをTimesTenデータベースに接続できます。
ノート:
TimesTenクライアントとTimesTenサーバーを構成する前に、「ODBCドライバおよびJDBCドライバを使用したTimesTenへの接続」と「TimesTenデータベース識別のためのデータソース名の指定」を参照してください。
次の各項では、TimesTenクライアントとTimesTenサーバーを使用してアプリケーションをTimesTenデータベースに接続する方法について説明します:
オプションで、クライアントとサーバー間の暗号化通信にTLSを構成して使用できます。『Oracle TimesTen In-Memory Databaseセキュリティ・ガイド』のTimesTenクライアント/サーバーのTransport Layer Securityを参照してください。
TimesTenクライアント/サーバー構成の概要
クライアント・アプリケーションをTimesTenデータベースに接続するには、クライアントDSN(オプションとして論理サーバー名)およびサーバーDSNを構成して、目的のTimesTenデータベースを一意に識別する必要があります。
図3-2を参照してください。
クライアント・アプリケーションは、接続の開始時にクライアントDSNを参照します。次の詳細情報により、接続リクエストが解決され、目的のTimesTenデータベースへの接続が可能になります。
-
クライアントDSNは、ユーザーodbc.iniファイルまたはシステム
sys.odbc.ini
ファイルにおいて、サーバー・ホスト名、論理サーバー名または実際のサーバー・システム名、およびサーバー上のTimesTenデータベースを識別するサーバーDSNを指定して構成します。 -
論理サーバー名は、クライアントでのオプションの構成です。使用すると、TimesTenデータベースがインストールされているサーバー・ホスト名が指定されます。サーバー・ホスト名を隠したり、簡略化する場合に使用します。論理サーバー名は、共有メモリーIPCまたはUNIXドメイン・ソケットを使用する場合に必ず使用します。
-
サーバーDSNは、システム
sys.odbc.ini
ファイルにおいて、TimesTenデータベース名およびその接続属性を指定して構成します。接続属性では、TimesTenデータベースのロードおよび構成方法と、TimesTenデータベースへの接続の制御または管理方法が指定されます。
したがって、これらの情報が正しく構成されると、クライアント・アプリケーションでは、クライアントDSNを使用してTimesTenデータベースを特定し、接続することが可能になります。クライアントDSNによって、サーバー・システムおよびサーバーDSNが定義されます。サーバーDSNでは、サーバー上のTimesTenデータベース、そのロード方法および接続の管理方法が指定されます。
同一リリースのTimesTenクライアントおよびTimesTenサーバーのインストールと構成
クライアントとサーバーが同じTimesTenリリースである場合のTimesTenのインストール方法と構成方法を示します。
TimesTenサーバーのインストールおよび構成
TimesTenデータベースが格納されているシステムで、次のタスクを実行します。このシステムを、サーバー・システムと呼びます。
-
TimesTenサーバーをインストールします。
TimesTenサーバーのインストール方法については、『Oracle TimesTen In-Memory Databaseインストレーション、移行およびアップグレード・ガイド』のTimesTen Classicでのインストール・プロセスの概要を参照してください。
-
TimesTenデータベースに対応するサーバーDSNを作成および構成します。「LinuxまたはUNIXシステム上のTimesTenサーバーのサーバーDSNの定義」を参照してください。サーバーDSNでTimesTen接続属性を設定します。『Oracle TimesTen In-Memory Databaseリファレンス』の接続属性を参照してください。
TimesTenクライアントのインストールおよび構成
クライアント・アプリケーションが配置されているシステムに、TimesTenクライアントをインストールして構成します。このシステムを、クライアント・システムと呼びます。
-
TimesTenクライアントをインストールします。
TimesTenクライアントのインストール方法については、『Oracle TimesTen In-Memory Databaseインストレーション、移行およびアップグレード・ガイド』のTimesTen Classicでのインストール・プロセスの概要を参照してください。
-
データベースとの接続に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クライアントおよびTimesTenサーバーのインストールと構成
ほとんどのTimesTenクライアントは、リリースの異なるTimesTenサーバーに接続できます。
TimesTenクライアント11.2.2以降のリリースでは、TimesTenサーバー11.2.2以降のリリースに接続できます。ただし、ODBC 3.5の機能の変更が原因で、TimesTenクライアントのリリース18.1以降では、特定の状況で古いTimesTenサーバーに接続できません。リリースの異なるクライアント/サーバーについての制限事項の詳細は、『Oracle TimesTen In-Memory Database C開発者ガイド』のODBC 3.5でのリリースの異なるクライアント/サーバーの制限事項を参照してください。
リリースの異なるTimesTenクライアント/サーバーの接続を構成する場合は、「同一リリースのTimesTenクライアントおよびTimesTenサーバーのインストールと構成」の説明に従って、インストールし構成します。
TimesTenクライアント・アプリケーションがTimesTenデータベースに接続されると、TimesTenサーバーで、それ固有のリリースのドライバおよびTimesTenデータベースがロードされます。TimesTen Data ManagerドライバがTimesTenサーバー・システムに自動的にインストールされます。
ttLocalHost
経由のUNIXドメイン・ソケットを使用したローカル・クライアント/サーバー接続を使用している場合は、クライアントおよびサーバーのプラットフォームがLinuxまたはUNIXである必要があります。クライアントはサーバーと同じホスト上で実行されている必要があるため、同じプラットフォーム上にある必要があります。クライアント・ホストとサーバー・ホストのリリース・レベルが同じである必要があります。
LinuxまたはUNIXシステム上のTimesTenサーバーのサーバーDSNの定義
サーバーDSNにより、クライアント/サーバー接続でアクセスするTimesTenデータベースが識別されます。
TimesTenサーバーからアクセスされるデータベースはサーバーDSNによって特定されるため、サーバーDSNは、Data Manager DSNと同じ接続属性を使用して構成できます。さらに、サーバーDSNの指定でのみ許可される接続属性もあります。それらの属性を使用すると、単一のサーバーに対して複数のクライアント/サーバー接続を指定することが可能になります。
ノート:
一部の接続属性は、TimesTenデーモン・オプション・ファイル(timesten.conf
)で設定できます。サーバーDSNとデーモン・オプション・ファイルの両方で同じ接続属性が指定されている場合は、サーバーDSNの接続属性の値が優先されます。TimesTenデーモンのオプションについては、「TimesTenクライアント/サーバーの属性の管理」を参照してください。TimesTen Server接続属性の詳細は、Oracle TimesTen In-Memory Databaseリファレンスの接続属性を参照してください。
サーバーDSNは、システムDSNとして定義する必要があり、Data Manager DSNと構成形式および属性が同じである必要があります。
-
TimesTen Scaleoutの場合: DSNは、適切なデータベース定義および接続可能オブジェクト内で定義されます。接続可能オブジェクトを使用すると、すべてのデータ・インスタンスで、グリッド内の他のデータ・インスタンスからの接続リクエストを受け入れることができます。
ただし、グリッドに含まれていないTimesTenクライアントからのクライアント接続を確立するには、
ttGridAdmin
gridClientExport
コマンドを使用して、ユーザーodbc.ini
ファイルまたはシステムsys.odbc.ini
ファイルでクライアントDSNを作成します。このコマンドにより、グリッドで使用可能なすべてのクライアント/サーバー接続可能オブジェクトが、書式設定されたファイルにエクスポートされて、TimesTenクライアントで使用されているodbc.ini
ファイルと置き換えられます。『Oracle TimesTen In-Memory Database Scaleoutユーザーズ・ガイド』のODBCドライバおよびJDBCドライバを使用したデータベースへの接続を参照してください。 -
TimesTen Classicでは、ユーザー
odbc.ini
ファイルまたはシステムsys.odbc.ini
ファイルを作成または編集して、各システムDSNを作成します。TimesTenサーバーの稼働中に、サーバーDSNの追加および構成を実行できます。LinuxおよびUNIXでのTimesTen ClassicのDSNの作成を参照してください。
デフォルトでは、TimesTenは、1つのサーバーへの接続は1つの子プロセスにつき1つのみ作成されます。ただし、接続属性(後述)を使用して、または「TimesTenサーバーへの複数の接続の指定」の説明に従ってtimesten.conf
ファイル内のTimesTenデーモン属性を設定することで、1つのTimesTenサーバーへのクライアント/サーバー接続を複数指定できます。サーバー接続属性および関連するtimesten.conf
デーモン属性の両方を設定した場合は、サーバー接続属性の値が優先されます。
ノート:
次の属性は、初期接続で読み込まれます。サーバー設定に対する変更は、サーバーを再起動するまで有効になりません。
サーバーを再起動するには、次のコマンドを使用します。TimesTen Scaleoutでは、このコマンドをttGridAdmin
instanceExec
コマンド内で実行します。
ttDaemonAdmin -restartserver
-
Connections
属性: データベースへの同時接続数の上限を設定します。TimesTenは、予想される各接続に1つのセマフォを割り当てるため、SEMMNS
カーネル・パラメータを正しく設定する必要があります。接続属性が、予期される同時データベース接続数に対応できるだけの大きさに設定されていることを確認してください。『Oracle TimesTen In-Memory Databaseリファレンス』の接続、または『Oracle TimesTen In-Memory Databaseインストレーション、移行およびアップグレード・ガイド』のセマフォ値の設定およびshmmaxおよびshmallの構成を参照してください。
-
ServerStackSize
: サーバー上のスレッドごとにスタック・サイズを設定します。MaxConnsPerServer
属性が1より大きい場合以外は、ServerStackSize
属性は無視されます。サーバーごとの接続が1つのみである場合、サーバー・プロセスではプロセスのメイン・スタックが使用されます。クライアント接続で複雑なSQL問合せを実行している場合は、ServerStackSize
属性を1024 KB以上に設定することを検討してください。 -
MaxConnsPerServer
: 単一のサーバー・プロセスによって処理される最大クライアント接続数を設定します。MaxConnsPerServer
を1より大きい値に設定すると、データベースに対してマルチスレッド・モードが有効になり、プロセスではなくスレッドを使用してクライアント接続を処理できます。これにより、アプリケーションが新しい接続を確立するのに必要な時間が短縮され、多数の同時クライアント/サーバー接続を使用する構成の全体的な効率が向上します。サーバーDSNによって参照されるサーバーに複数のサーバー・プロセスがある場合がありますが、その場合、各プロセスに許可される最大接続数は、この属性によって指定された数になります。接続数が
MaxConnsPerServer
を超えると、新しいサーバー・プロセスが自動的に開始されます。ノート:
サーバーをマルチスレッド・モードで実行している場合にサーバー・プロセスが失敗すると、そのプロセスが処理するすべてのクライアント接続が終了します。サーバーをマルチスレッド・モードで構成する場合はこの点を考慮して、信頼性と可用性の要件に対してマルチスレッド・モードでのより効果的なリソース使用率のバランスを保つような
MaxConnsPerServer
値を選択してください。 -
ServersPerDSN
: サーバー上の複数の着信接続に対応する複数のサーバー・プロセスを設定できます。ServersPerDSN
属性は、着信接続の分散のためにMaxConnsPerServer
属性に関連して発生するサーバー・プロセスの数を指定します。
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が起動されます。
Oracle TimesTen In-Memory DatabaseリファレンスのServersPerDSN、ServerStackSizeおよびMaxConnsPerServerを参照してください。
論理サーバー名の定義
論理サーバー名とは、TimesTenクライアント上のサーバー・システムについての定義です。
ローカル・クライアント/サーバーでTCP/IP以外の通信プロトコルを使用している場合や、TimesTenサーバー・プロセスでデフォルトTCP/IPポートをリスニングしていない場合など、場合によっては、クライアント・システムで論理サーバー名を定義する必要があります。このような場合、クライアントDSNは、論理サーバー名を参照する必要があります。ただし、使用されている通信プロトコルがTCP/IPである場合、クライアントDSNが、サーバー・ホスト名を直接参照でき、論理サーバー名を定義する必要がないのが一般的です。
次の項では、LinuxおよびUNIXプラットフォームでの論理サーバー名の定義方法を示します。
Windowsでの論理サーバー名の作成および構成
Windowsで論理サーバー名を作成および構成できます。
-
Windowsのデスクトップで、「スタート」メニューから、「コントロール パネル」、「管理ツール」、「データ ソース (ODBC)」の順に選択します。
「ODBC データソース アドミニストレータ」が開きます。
-
「ユーザー DSN」または「システム DSN」をクリックします。
-
「TimesTen Client DSN」を選択して「構成」をクリックします。
ノート:
クライアントDSNが存在しない場合は「追加」をクリックし、「TimesTen Client 22.1」を選択して「完了」をクリックします。「TimesTen Client DSN Setup」ダイアログ・ボックスが開きます。設定ダイアログでのクライアントDSNの作成の詳細は、「WindowsでのクライアントDSNの作成と構成」を参照してください。
-
「Servers」をクリックします。「TimesTen Logical Server List」ダイアログ・ボックスが開きます。
-
「Add」をクリックします。「TimesTen Logical Server Name Setup」ダイアログ・ボックスが開きます。
-
「Server Name」フィールドに、論理サーバー名を入力します。
-
必要に応じて、「Description」フィールドにサーバーの説明を入力します。
-
「Network Address」フィールドに、サーバー・システムのホスト名またはIPアドレスを入力します。ネットワーク・アドレスは、TimesTenサーバーが実行されているシステムの名前である必要があります。たとえば、
example.com
です -
「Network Port」フィールドには、TimesTen Logical Serverがデフォルトでリスニングを行うポート番号が表示されます。TimesTenサーバーで別のポートがリスニングされている場合は、「Network Port」フィールドにそのポート番号を入力します。
次に例を示します:
-
「OK」をクリックした後、「TimesTen Logical Server List」ダイアログ・ボックスの「Close」をクリックして、論理サーバー名の作成を終了します。
サーバー名を削除するには、次の手順を実行します。
- クライアント・システム上のWindowsデスクトップで、「Start」メニューから「Control Panel」を選択します。
- 「ODBC」をダブルクリックします。「ODBC データソース アドミニストレータ」が開きます。
- 「ユーザー DSN」または「システム DSN」のいずれかをクリックします。
- 「TimesTen Client DSN」を選択して「構成」をクリックします。「TimesTen Client DSN Setup」ダイアログ・ボックスが開きます。
- 「Servers」をクリックします。「TimesTen Logical Server List」ダイアログ・ボックスが開きます。
- 「TimesTen Servers」リストからサーバー名を削除します。
- 「Delete」をクリックします。
LinuxおよびUNIXでの論理サーバー名の作成および構成
論理サーバー名を、SYSTTCONNECTINI
環境変数で指定されているファイルに定義します。
このファイルは、ttconnect.ini
ファイルと呼ばれます。このファイルには、説明、ネットワーク・アドレスおよびポート番号が含まれています。
TimesTenは、論理サーバーを次の順序で検索します。
-
SYSTTCONNECTINI
環境変数によって指定されたファイル内(設定されている場合) -
timesten_home
/conf/sys.ttconnect.ini
ファイル内
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サーバーの形式
構成要素 | 説明 |
---|---|
[ |
TimesTenサーバー・システムの論理サーバー名 |
|
TimesTenサーバーの説明。 |
|
TimesTenサーバーが実行されているシステムのDNS名、ホスト名またはIPアドレス。 |
|
TimesTenサーバーが実行されているTCP/IPポート番号。TimesTenリリース22.1のデフォルトは6625です。 |
ネットワーク・アドレスは、次のいずれかである必要があります:
接続のタイプ | ネットワーク・アドレス |
---|---|
リモートのクライアント/サーバー接続 |
TimesTen Serverが稼働しているシステムの名前。たとえば、 |
UNIXドメイン・ソケットを使用する、ローカルのクライアント/サーバー接続 |
|
次の例では、システムserver.example.com
で稼働し、ポート6625
をリスニングするTimesTenサーバーについて、論理サーバー名LogicalServer
を定義しているttconnect.ini
ファイルを示します。TimesTenインストールのインスタンス名はinstance
です。
[LogicalServer] Description=TimesTen server 22.1 Network_Address=server.example.com TCP_Port=6625
クライアントとサーバーが同じLinuxまたはUNIXシステム上にある場合、TimesTenクライアント・ドライバを使用するアプリケーションでは、通信にUNIXドメイン・ソケットを使用することでパフォーマンスが向上する可能性があります。
また、論理サーバー名では、同じバージョンのTimesTenサーバーの複数のインスタンスを同じシステム上で実行できるように、TimesTenサーバーによるリスニング対象のポートの番号を定義する必要があります。これには、ttconnect.ini
ファイルで論理サーバー名を次のように定義します。
[LocalHost] Description=Local TimesTen Server 22.1 through domain sockets Network_Address=ttLocalHost TCP_Port=6625
TimesTenクライアント・システムでのクライアントDSNの定義
クライアントDSNでは、リモート・データベースを指定し、TimesTenクライアントを使用します。
クライアントDSNは、ユーザーDSNとしても、システムDSNとしても定義できます。クライアントDSNでは、hostname、DSN
のペア(ここで、hostnameはTimesTenサーバーが実行されているサーバー・システムを表し、DSNはそのホスト上で定義されているサーバーDSNを表します)を指定することで間接的にTimesTenデータベースを参照します。これらは、クライアントDSN接続属性内で構成します。
ノート:
TimesTenクライアント接続属性の詳細は、『Oracle TimesTen In-Memory Databaseリファレンス』の接続属性のリストを参照してください。
また、実行時に接続属性を、ODBCのSQLDriverConnect
関数に渡される接続文字列として構成したり、JDBCのDriverManager.getConnection()
メソッドに渡されるURL文字列として構成することもできます。たとえば、サーバー上でクライアントが使用するDSNを指定するには、クライアントの接続文字列またはクライアントDSNでTTC_Server_DSN
属性を使用できます。
ノート:
クライアントDSNの定義内で構成されたサーバーDSNデータ・ストアまたは最初の接続属性はいずれも無視されます。ただし、TimesTenクライアントでは、接続文字列またはURL文字列の一部として、ほとんどのサーバーDSN属性(DataStore
接続属性を除く)を渡すことができます。それらは、サーバーに透過的に渡され、サーバーDSNの構成が上書きされます。
次の項では、WindowsプラットフォームまたはLinuxおよびUNIXプラットフォームでのクライアントDSNとその属性の作成方法について説明します。
WindowsでのクライアントDSNの作成および構成
Windowsの場合、ODBCデータソース・アドミニストレータを使用して、論理サーバー名の構成およびクライアントDSNの定義を行います。
この項の内容は次のとおりです。
ネットワーク・タイムアウト時間および認証の設定
クライアント/サーバー接続のユーザー名、パスワードおよびネットワーク・タイムアウト時間は、UID
、PWD
およびTTC_TIMEOUT
属性を指定してクライアントDSNで定義できます。
ただし、接続時にユーザー名およびパスワードを指定できるため、クライアントDSNでの認証の構成はオプションです。また、パスワードは暗号化されずに格納されるため、クライアントDSNでパスワードを指定することは絶対に避けてください。
TimesTenを使用すると、ユーザー名および関連するパスワードをOracleウォレットに格納することもできます。これは、TimesTenデータベースに接続する際に資格証明を提供するための最も安全で推奨される方法です。ただし、接続文字列にOracleウォレットの場所と名前を指定します。ウォレットの作成と、Oracleキャッシュ管理ユーザーのIDおよびパスワードの管理の詳細は、『Oracle TimesTen In-Memory Databaseセキュリティ・ガイド』のOracle Walletでのユーザー名とパスワードの指定を参照してください。
UID
、PWD
およびTTC_TIMEOUT
接続属性の詳細は、『Oracle TimesTen In-Memory Databaseリファレンス』の接続属性のリストを参照してください。
ネットワーク・タイムアウト時間および認証を設定するには、次の手順を実行します。
-
Oracle TimesTen Clientの「DSN Setup」ダイアログ・ボックスの「User ID」フィールドに、サーバー・システムで定義されているユーザー名を入力します。
-
「Password」フィールドには、ユーザーIDに対応するパスワードを入力します。または、「PwdCrypt」フィールドにハッシュ・パスワードを入力するか、
ttUser
ユーティリティを使用してパスワードをOracleウォレットに格納し、「PwdWallet」フィールドを使用してウォレットから取得できます。『Oracle TimesTen In-Memory Databaseリファレンス』のttUser
を参照してください。次のいずれかの方法でパスワードを指定します:- Oracleウォレットにパスワードを格納し、「PwdWallet」フィールドにウォレットへのパスを入力します。
- 「Password」フィールドにユーザーIDに対応するパスワードを入力します。
- 「PwdCrypt」フィールドにユーザーIDに対応する暗号化されたパスワードを入力します
-
「Network Timeout」フィールドに、間隔を秒単位で入力します。負の整数以外を入力できます。0を指定すると、クライアント/サーバー処理でタイムアウトは設定されません。デフォルトは60秒です。最大値は99,999秒です。
TTC_Timeout
接続属性は、TimesTen ClientおよびServerの使用によって完了するネットワーク処理に対して、最大時間制限を設定します。また、TTC_Timeout
接続属性により、TimesTenクライアント・アプリケーションでその対応するTimesTenサーバー・プロセスからの結果を何秒まで待ってからタイムアウトにするかを指定します。 -
「OK」をクリックして、設定を保存します。
Windowsでのリモート・データベースへのアクセス
この例では、TimesTenクライアント・システムはclient.example.com
です。クライアント・アプリケーションは、リモート・サーバー・システムserver.example.com
上のサーバーDSNにアクセスしています。論理サーバー名はLogicalServer
です。
ノート:
これらの例は、TimesTenのフレッシュ・インストールで事前定義されるサンプルDSNを参照します。
-
サーバー・システム
server.example.com
で、ttStatus
ユーティリティを使用して、TimesTenサーバーが稼働していることと、TimesTenサーバーでリスニングされているポートの番号を確認します。 -
「LinuxまたはUNIXシステム上のTimesTenサーバーのサーバーDSNの定義」の手順に従って、サーバーDSN
database1
がserver.example.com
上でシステムDSNとして定義されていることを確認します。 -
クライアント・システム
client.example.com
で、リモートTimesTenサーバー用に論理サーバー名のエントリを作成します。「TimesTen Logical Server Name Setup」ダイアログ・ボックスで、次のように指定します。-
「Server Name」フィールドに
LogicalServer
と入力します。 -
「Network Address」フィールドに、
server.example.com
と入力します。 -
「Network Port」フィールドに、
6625と入力します
これは、TimesTenリリース22.1の場合のTimesTenサーバーのデフォルト・ポート番号です。この値は、ステップ1でttStatus
によって表示された値に対応している必要があります。
-
-
クライアント・システム
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クライアントとともにインストールされたttIsql
プログラムを使用します。ttIsql -connStr "DSN=database1CS"
次の例では、デフォルト以外の番号のポートをリスニングしているTimesTenサーバーへのアクセス方法を説明します。
TimesTenサーバーのネットワーク・アドレスがserver.example.com
であり、そのサーバーでポート6625がリスニングされているとします。サーバーDSNへの接続には次の方法を使用できます:
「Windowsでの論理サーバー名の作成および構成」を参照してください。
LinuxおよびUNIXでのクライアント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は、データベースが存在するサーバー・システム上で定義します。
使用可能なすべてのODBCクライアント・ドライバのリストは、「TimesTen ODBCドライバを使用した接続」を参照してください。
クライアントが接続される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クライアントODBCドライバに関連付けるには、odbc.ini
ファイルのODBC Data Sourcesセクションに次のように入力します。
[ODBC Data Sources]
database1CS=TimesTen Client 22.1 Driver
ODBC Data Sourcesセクションの後に、定義した各データソースに対するサーバー・システムおよびサーバーDSNを指定するエントリを追加します。odbc.ini
ファイルのODBC Data Sourcesセクションに示されるクライアントDSNごとに指定セクションが必要です。
サーバー名server.example.com
とポート6625を使用してTimesTenサーバーが構成されておりサーバーDSNがdatabase1
である場合の、TimesTenクライアントDSN database1CS
の指定の例を次に示します。
[database1CS] TTC_Server=server.example.com/6625 TTC_Server_DSN=database1
論理サーバー名を使用する必要がある場合のために、論理サーバー名LogicalServer
を使用してTimesTenサーバーが構成されておりサーバーDSNがdatabase1
である場合の、TimesTenクライアントDSN database1CS
の指定の例を次に示します。
[database1CS] TTC_Server=LogicalServer TTC_Server_DSN=database1
TTC_Server
の属性が、クライアントDSN定義の主要属性です。クライアント接続属性の数はわずかですが、それぞれがサーバーDSNを識別します。クライアント定義に指定されたサーバー接続属性は無視されます。クライアント定義では、一般的な接続属性を指定できます。
ノート:
接続時のユーザーIDの指定方法に関するオプションは、『Oracle TimesTen In-Memory Databaseリファレンス』のUIDとPWDおよびPwdWalletを参照してください。
デフォルトでは、接続においての、TimesTenクライアントとTimesTenサーバーでネットワーク操作が完了するのを待つ時間は60秒です。TTC_Timeout
属性は、TimesTen ClientおよびServerの使用によって完了するネットワーク処理に対して、最大時間制限を設定します。また、TTC_Timeout
接続属性により、TimesTenクライアント・アプリケーションでその対応するTimesTenサーバー・プロセスからの結果を何秒まで待ってからタイムアウトにするかを指定します。
[database1CS] TTC_Server=server.example.com/6625 TTC_Server_DSN=database1 TTC_Timeout=60
TimesTenクライアントDSNを構成すると、ttIsqlCS
ユーティリティを使用してサーバーに接続できるようになります。次は、database1CS
DSNを使用してサーバーに接続します。
ttIsqlCS -connStr "DSN=database1CS"
odbc.ini
ファイルで使用できるすべてのクライアントと、一般的な接続属性の詳細は、Oracle TimesTen In-Memory Databaseリファレンスの接続属性を参照してください。
クライアント結果セット・バッファのサイズ設定
SELECT
文を実行すると、結果セットが返されます(存在する場合)。サーバーは、クライアント結果セット・バッファに適合する行の最大数を結果セットから格納します。
次の接続属性を使用して、結果セット・バッファの最大サイズまたはクライアント結果セット・バッファに格納できる行の最大数を変更することで、パフォーマンスを向上させることができます。
-
TTC_NetMsgMaxBytes
: クライアント結果セット・バッファのサイズ(バイト単位)。デフォルトは2097152バイトです。 -
TTC_NetMsgMaxRows
: クライアント結果セット・バッファに格納できる行の最大数。デフォルトは8192行です。
SELECT
文は、バイトまたは行の最大数のうちどちらか最初に制限に達するほうを、クライアント結果セット・バッファに返します。大きな結果セットを返す問合せでは、両方のパラメータの値を増やすことができます。
ODBC、OCIおよびJDBCプログラムAPIの使用によるこれらの制限の設定の詳細は、『Oracle TimesTen In-Memory Database C開発者ガイド』のODBCを使用したクライアント/サーバーでの結果セット・バッファ・サイズの構成とOCIを使用したクライアント/サーバーでの結果セット・バッファ・サイズの構成、および『Oracle TimesTen In-Memory Database Java開発者ガイド』のJDBCを使用したクライアント/サーバーでの結果セット・バッファ・サイズの構成を参照してください。
自動クライアント・フェイルオーバーの使用
自動クライアント・フェイルオーバーは、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によって、含まれているすべてのTimesTenデータベース内のデータが、Oracleデータベース内のデータと自動的に同期されます。このようなシナリオでは、データの一貫性に影響を与えることなく、アプリケーションは複数のキャッシュ間で安全にフェイルオーバーできます。
-
これらの各シナリオでは、アプリケーションはフェイルオーバーTimesTenデータベースに自動的に接続されます。TimesTenは、自動クライアント・フェイルオーバーが発生したときにアプリケーションに警告を渡す機能を提供しているため、アプリケーションは適切な処理を行うことができます。
ノート:
最初の接続後の任意の時点でALTER SESSION
文を発行する場合は、フェイルオーバー後に再発行する必要があります。フェイルオーバー後の接続永続性の詳細は、『Oracle TimesTen In-Memory Database C開発者ガイド』の自動クライアント・フェイルオーバーでのODBCサポートを参照してください。
次の項では、自動クライアント・フェイルオーバーを使用および有効化する方法について説明します。
TimesTen Scaleoutでの自動クライアント・フェイルオーバーの管理
デフォルトでは、TimesTen Scaleoutでの接続の失敗時に、クライアントは自動的に別のデータ・インスタンスへの再接続を試行します(可能な場合)。
TimesTen Scaleoutでのクライアント接続フェイルオーバーの管理の詳細は、『Oracle TimesTen In-Memory Database Scaleoutユーザーズ・ガイド』のクライアント接続フェイルオーバーを参照してください。
アクティブ・スタンバイ・ペアを使用するTimesTen Classicでの自動クライアント・フェイルオーバーの管理
接続ハンドル以外の状態は保持されません。元の接続からのすべてのクライアント文ハンドルは、無効とマークされます。
フェイルオーバーが完了すると、TimesTenは登録されているユーザー定義関数に対してコールバックを行います。この関数は、フェイルオーバーが発生している状況で実行する必要があるカスタム処理を行います。
次の項目は、特定の障害シナリオにおける自動クライアント・フェイルオーバーの動作を示しています。
-
クライアント・ライブラリがアクティブ・マスターとの接続を失った場合、フェイルオーバーを実行してスタンバイ・マスターへの切替えを試行します。
-
なんらかの理由でアクティブ・マスターがない場合(サーバー側でフェイルオーバーが発生せず、両方のサーバーがスタンバイかアイドル状態)、アプリケーションは接続できません。ただし、自動クライアント・フェイルオーバーは、アクティブ・マスターを見つけるか、タイムアウトになるまで、両方のサーバーの切替えを継続します。
-
フェイルオーバーがすでに発生し、クライアントがすでに新しいアクティブ・マスターに接続されている場合、次のフェイルオーバー・リクエストでは、元のアクティブ・マスターへの再接続が試みられます。これが失敗すると、タイムアウトになるまで、2つのサーバーに接続するために切替え試行が行われます。
-
クライアント登録がスタンバイ・マスターへのレプリケーションによって正常に伝播される前にアクティブ・マスターで障害が発生した場合、クライアントはフェイルオーバー・メッセージを受信せず、接続登録は失われます。ただし、最終的に、クライアント・ライブラリによって、元のアクティブ・マスターへの接続が失われたためにフェイルオーバーの試行を開始することが(TCPを介して)通知されます。
ノート:
アクティブ・スタンバイ・ペアのレプリケーション・スキームで自動クライアント・フェイルオーバーを使用すると、サーバー・プロセスごとにデータベース接続が1つ追加されます。TimesTenのConnections
属性(データベースへの同時接続数の上限)の設定を選択するときに、これを考慮する必要があります。サーバー・プロセスの数は、MaxConnsPerServer
属性(サーバー・プロセスによって処理可能な同時接続の最大数)の設定にも影響を受けます。
たとえば、接続が12個あり、MaxConnsPerServer=3
の場合、サーバー・プロセスは4個になります。したがって、いくつかの接続で自動クライアント・フェイルオーバーを使用する場合、追加の接続は4個になります。
C開発者向けの、コールバックの作成方法および自動クライアント・フェイルオーバーの促進方法の詳細は、『Oracle TimesTen In-Memory Database C開発者ガイド』の自動クライアント・フェイルオーバーのODBCサポートを参照してください。Java開発者向けの詳細は、『Oracle TimesTen In-Memory Database Java開発者ガイド』の自動クライアント・フェイルオーバーのJDBCサポートを参照してください。
TimesTen Classicでの汎用自動クライアント・フェイルオーバーの管理
汎用自動クライアント・フェイルオーバーは、TimesTen Classicデータベースの任意のセットに対して構成できます。
フェイルオーバーTimesTenデータベースのリストは、ユーザーまたはシステムのodbc.ini
ファイルで構成できます。構成後、アプリケーションは接続が成功するまで各接続を試行できます。この機能は、クライアント/サーバー接続のみに適用され、直接接続には適用されません。
ノート:
ご使用の環境で自動クライアント・フェイルオーバーが有意義であることを確認する必要があります。つまり、含まれているデータベース間でフェイルオーバーする際に、データ整合性の問題が発生する可能性はありません。また、クライアントは、フェイルオーバー先のデータベースで必要な表およびデータを見つけることができます。
フェイルオーバー・サーバー・リストに含まれている各TimesTen Classicデータベースについて、次の点を考慮してください。
-
関連するデータベースは、TimesTenリリース18.1.4.1.0以降である必要があります。
-
すべてのデータベースへのクライアント接続には、同じデータベース・ユーザー名とパスワードを使用する必要があります。
-
フェイルオーバー・データベースには、同じ表定義またはキャッシュ・グループ定義(あるいはその両方)が必要です。すべての表またはキャッシュ・グループ表(あるいはその両方)のすべてのデータベースでデータが一貫していることを確認するプロセスが必要です。
-
高速フェイルオーバーを実現するには、クライアント・フェイルオーバー・リスト内のすべてのデータベースをメモリーにロードする必要があります。
-
キャッシュを使用する場合、データベースには、常に稼働中のキャッシュ・エージェントが必要です。
-
汎用自動フェイルオーバーに含まれるデータベースでは、アクティブ・スタンバイ・ペアのレプリケーション・スキームは使用されません。
汎用自動フェイルオーバーの一般的なユースケースは、読取り専用キャッシュを使用する一連のデータベースで、各データベースのキャッシュ・データ・セットは同じです。たとえば、読取り専用キャッシュ・グループが複数ある場合は、フェイルオーバー・サーバーのリストに含まれるすべてのTimesTen Classicデータベースに、同じ読取り専用キャッシュ・グループを作成します。クライアント接続が代替TimesTenデータベースにフェイルオーバーされるときには、必要に応じてキャッシュ操作によってOracleデータベースのデータが自動リフレッシュされるため、キャッシュ・データの一貫性が保たれます。読取り専用キャッシュ・グループの詳細は、『Oracle TimesTen In-Memory Databaseキャッシュ・ガイド』の読取り専用キャッシュ・グループを参照してください。
ノート:
フェイルオーバーが発生した場合、アプリケーションではすべての文を再準備する必要があります。
C開発者向けの、コールバックの作成方法および自動クライアント・フェイルオーバーの促進方法の詳細は、『Oracle TimesTen In-Memory Database C開発者ガイド』の自動クライアント・フェイルオーバーのODBCサポートを参照してください。Java開発者向けの詳細は、『Oracle TimesTen In-Memory Database Java開発者ガイド』の自動クライアント・フェイルオーバーのJDBCサポートを参照してください。
TimesTen Classicの自動クライアント・フェイルオーバーの構成
フェイルオーバーTimesTenデータベースのリストは、クライアントで構成できます。その後、接続が成功するまで、クライアントは各フェイルオーバーTimesTenデータベースへの接続を開始します。
ノート:
指定するフェイルオーバー・サーバー情報は、使用する自動クライアント・フェイルオーバーのタイプによって異なります。つまり、フェイルオーバー・サーバーは、スタンバイ・データベース(アクティブ・スタンバイ・ペアのレプリケーション・スキームを使用する場合)または2番目のTimesTenデータベース(読取り専用キャッシュ・グループを使用する場合)のいずれかである必要があります。両方のタイプの自動クライアント・フェイルオーバーの詳細は、「自動クライアント・フェイルオーバーの使用」を参照してください。
次の項では、TimesTen Classicの自動クライアント・フェイルオーバーの構成方法について説明します。
WindowsでのTimesTen Classicの自動クライアント・フェイルオーバーの構成
「TimesTen client DSN Setup」ダイアログで、「WindowsでのクライアントDSNの作成および構成」の説明のとおりに残りのクライアントDSN情報を構成した後で、次のフィールドに入力します:
TCPキープ・アライブ・パラメータの構成
クライアント接続が失敗する可能性がある原因の1つは、ケーブルの切断やホストの中断またはクラッシュなどのネットワーク障害です。
クライアント接続が失われると、クライアント接続フェイルオーバーが開始されます。ただし、TCP接続が開始されている場合は、接続に対してTCPキープ・アライブ・パラメータを構成し、接続障害を確実かつ迅速に検出できるようにすることができます。
ノート:
また、TTC_Timeout
属性を設定して、TimesTen ClientおよびTimesTen Serverを使用したネットワーク操作が完了するまでの時間の上限を設定し、接続に問題があることを検出することもできます。また、TTC_Timeout
属性では、タイムアウトする前にTimesTenクライアント・アプリケーションがそれに対応するTimesTen Serverプロセスの結果を待機する最大秒数も指定します。
一部のデータベース操作は、TTC_TIMEOUT
属性に設定された値より予想に反して長くかかる場合があるため、TimesTenでは、TTC_TIMEOUT
属性に加えて、失敗したTCP接続を判別するために、TCPキープ・アライブ・パラメータを構成することをお薦めします。
『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の項を参照してください。