データベースへの接続
接続可能オブジェクトは、データベースに接続するためにアプリケーションで使用可能な名前を定義します。接続可能オブジェクトは、データベースと同じ名前にすることも、異なる名前にすることもできます。接続可能オブジェクトには、次の2つのタイプがあります。
-
直接接続可能オブジェクト: アプリケーションで直接通信を介してデータベースに接続できる名前を定義します。
-
クライアント/サーバー接続可能オブジェクト: アプリケーションでクライアント/サーバー通信を介してデータベースに接続できる名前を定義します。
TimesTen Scaleoutでは、単一データベースに対して定義された接続属性の異なるセットを含む複数の接続可能オブジェクトを作成できます。
接続可能オブジェクトは、次のタイプの接続属性をサポートしています。
-
一般接続属性は、接続のたびに設定され、その接続期間中のみ保持されます。
-
NLS一般接続属性は、グローバリゼーションに関してデータベースの接続固有動作を定義します。
-
PL/SQL一般接続属性は、PL/SQL操作に関してデータベースの接続関連動作を定義します。
-
クライアント接続属性は、クライアント/サーバー接続の接続パラメータを定義します。
すべての接続属性の詳細は、『Oracle TimesTen In-Memory Databaseリファレンス』の接続属性を参照してください。
接続可能オブジェクトの作成
TimesTen Scaleoutでは、デフォルトで、グリッドに追加された各データベース定義について、直接接続可能オブジェクトが作成されます。この接続可能オブジェクトを使用すると、アプリケーションで、データベースの分散マップ内の任意のデータ・インスタンスからデータベースへの直接接続を作成できます。TimesTen Scaleoutでは、データベース定義に割り当てられた名前を使用して、接続可能オブジェクトの名前を指定します。データベースへのクライアント/サーバー接続を確立するには、クライアント/サーバー接続可能オブジェクトを作成する必要があります。
接続可能オブジェクトを作成するためのタスクは、次のとおりです。
接続可能オブジェクト・ファイルの作成
接続可能オブジェクト・ファイルでは、データベースへの接続に使用する属性を指定します。接続可能オブジェクト・ファイルでは、ファイル名接尾辞として.connect
を使用する必要があります。接続可能オブジェクト・ファイルのファイル名接頭辞により、接続可能オブジェクトの名前が設定されます。たとえば、database1CS.connect
という名前の接続可能オブジェクト・ファイルにより、database1cs
という名前の接続可能オブジェクトが作成されます。
ノート:
接続可能オブジェクト名には、データ・ソース名と同じ制限があります。詳細は、『Oracle TimesTen In-Memory Databaseオペレーション・ガイド』のTimesTenデータベースを識別するためのデータ・ソース名の識別方法に関する説明を参照してください。
database1
データベースの接続属性を使用してクライアント/サーバー接続可能オブジェクト・ファイルを作成します。
この例は、database1CS.connect
という名前の接続可能ファイルの内容を示しています。
-
接続文字セットとして
AL32UTF8
を設定します。 -
UID
接続属性のユーザーIDとしてterry
を指定します。ノート:
ユーザーIDを指定しない場合、TimesTenでは、接続リクエストを
UID
として送信するユーザーのOSユーザーIDが使用されます。この場合、OSユーザーIDは認証できないため、localhost以外のシステムからの接続リクエストは失敗します。 -
PwdWallet
接続属性を使用して接続可能なウォレットの場所を指定することで、ユーザー資格証明を提供します。ウォレットに資格証明を指定することは、PWD
またはPWDCrypt
接続属性を使用して接続文字列にパスワードを指定するよりも安全です。
ConnectionCharacterSet=AL32UTF8
UID=terry
PwdWallet=/wallets/dsn1wallet
ウォレットを提供する接続可能オブジェクトを使用するには、まずユーザー資格証明のウォレットを作成する必要があります。Oracle Walletにユーザー資格証明を追加する方法については、『Oracle TimesTen In-Memory Databaseセキュリティ・ガイド』のOracle Walletでのユーザー名とパスワードの指定を参照してください。
ウォレットを指定する場合は、ユーザーが接続可能オブジェクトにアクセスするすべてのデータ要素の同じパスにウォレットが存在する必要があります。
『Oracle TimesTen In-Memory Databaseリファレンス』のUIDおよびPWDおよびPwdWalletと、『Oracle TimesTen In-Memory Databaseセキュリティ・ガイド』のTimesTenでの認証を参照してください。
接続可能オブジェクト・ファイルに基づいた接続可能オブジェクトの作成
ttGridAdmin connectableCreate
コマンドにより、接続可能オブジェクト・ファイルに基づいて接続可能オブジェクトが作成されます。
database1CS.connect
接続可能オブジェクト・ファイルに基づいて、database1CS
接続可能オブジェクトを作成します。
% ttGridAdmin connectableCreate -dbdef database1 -cs /mydir/database1CS.connect
Connectable database1CS created.
ノート:
-
-cs
オプションを使用すると、直接接続ではなく、クライアント接続用の接続可能オブジェクトが有効化されます。 -
-only
オプションを使用すると、指定したデータ・インスタンスの要素のみに対するクライアント接続を確立できます。
現在のバージョンのモデルにdatabase1CS
接続可能オブジェクトの作成を適用して、接続可能オブジェクトを使用できるようにします。
% ttGridAdmin modelApply
...
Updating grid state...................................................OK
Pushing new configuration files to each instance......................OK
...
ttGridAdmin modelApply complete
ttGridAdmin connectableCreate
またはttGridAdmin modelApply
コマンドの詳細は、それぞれ『Oracle TimesTen In-Memory Databaseリファレンス』の接続可能オブジェクトの作成(connectableCreate)、または「モデルに加えた変更の適用」を参照してください。
ODBCドライバとJDBCドライバを使用したデータベースへの接続
アプリケーションは、ODBCダイレクト・ドライバ、ODBCクライアント・ドライバまたはODBCドライバ・マネージャを使用してデータベースに接続できます。『Oracle TimesTen In-Memory Databaseオペレーション・ガイド』のODBCドライバおよびJDBCドライバを使用したTimesTenへの接続を参照してください。
次のトピックでは、これらのDSNを使用してデータベースへの直接接続およびクライアント接続を確立する方法について説明します。
データ・インスタンスからの直接接続の確立
TimesTen Scaleoutでは、データベース定義ファイルで指定されたすべての一般接続属性を含む、直接接続可能オブジェクトが自動的に作成されます。TimesTen Scaleoutでは、データベース定義の名前を使用して、接続可能オブジェクトの名前を指定します。接続可能オブジェクトが現在のバージョンのモデルに適用されると、TimesTen Scaleoutにより、接続可能オブジェクトと同じ名前のすべてのデータ・インスタンスでDSNが定義されます。これにより、ODBCアプリケーションとJDBCアプリケーションは、接続可能オブジェクトに関連付けられたデータベースに接続できます。
データ・インスタンスからttIsql
ユーティリティを使用して、データベースへの直接接続を確立できます。
host3.instance1
データ・インスタンスから、database1
接続可能オブジェクトを使用してdatabase1
データベースに接続します。
% ttIsql -connStr "DSN=database1"
Copyright (c) 1996, 2016, Oracle and/or its affiliates. All rights reserved.
Type ? or "help" for help, type "exit" to quit ttIsql.
connect "DSN=database1";
Connection successful: DSN=database1;UID=instanceadmin;DataStore=/disk1/databases/database1;
DatabaseCharacterSet=AL32UTF8;ConnectionCharacterSet=US7ASCII;LogDir=/disk2/logs;
PermSize=32768;TempSize=4096;TypeMode=0;
(Default setting AutoCommit=1)
Command>
ノート:
この例では、インスタンス管理者として、grid1
グリッドのすべてのインスタンス(データおよび管理)に対して定義されているデータベースに接続します。データベース・ユーザーの詳細は、『Oracle TimesTen In-Memory Databaseセキュリティ・ガイド』のTimesTenユーザーの概要を参照してください。
ttIsql
ユーティリティの詳細は、『Oracle TimesTen In-Memory Databaseオペレーション・ガイド』のttIsqlユーティリティの使用方法を参照してください。
TimesTen Clientからのクライアント接続の確立
クライアント/サーバー接続可能オブジェクトを使用すると、すべてのデータ・インスタンスで、TimesTenクライアント・ドライバを使用してTimesTenクライアント・インスタンスまたはアプリケーションからの接続を受け入れることができます。ただし、グリッドに含まれないTimesTenクライアントからのクライアント接続を確立するには、TimesTenクライアントのシステムまたはユーザーodbc.ini
ファイルにクライアントDSNを作成する必要があります。
ttGridAdmin gridClientExport
コマンドにより、グリッドで使用可能なすべてのクライアント/サーバー接続可能オブジェクトが、TimesTenクライアントで使用されているシステムまたはユーザーodbc.ini
ファイルを置き換えるようフォーマットされたファイルにエクスポートされます。
grid1
グリッドのクライアント/サーバー接続可能オブジェクトをファイルにエクスポートします。
% ttGridAdmin gridClientExport /mydir/sys.odbc.ini
次の例は、結果として得られるファイルの内容を示しています。
[ODBC Data Sources]
database1CS=TimesTen 22.1 Client Driver
[database1CS]
TTC_SERVER_DSN=DATABASE1
# External address/port info for host3.instance1
TTC_SERVER1=host3.example.com/6625
# External address/port info for host4.instance1
TTC_SERVER2=host4.example.com/6625
# External address/port info for host5.instance1
TTC_SERVER3=host5.example.com/6625
# External address/port info for host6.instance1
TTC_SERVER4=host6.example.com/6625
# External address/port info for host7.instance1
TTC_SERVER5=host7.example.com/6625
# External address/port info for host8.instance1
TTC_SERVER6=host8.example.com/6625
ConnectionCharacterSet=AL32UTF8
UID=terry
ttGridAdmin gridClientExport
コマンドの詳細は、『Oracle TimesTen In-Memory Databaseリファレンス』のグリッド外部のクライアント/サーバー接続のためのsys.odbc.iniのエクスポート(gridClientExport)を参照してください。
LinuxまたはUNIX上のTimesTen ClientへのクライアントDSNの追加
LinuxまたはUNIX上のTimesTenクライアントにクライアントDSNを追加するには、TimesTenクライアントのシステムまたはユーザーodbc.ini
ファイルを作成したファイルと置き換えるか、ファイルの内容をシステムまたはユーザーodbc.ini
ファイルにコピーします。次に、TimesTenクライアントから、ttIsqlCS
ユーティリティとともにdatabase1CS
DSNを使用して、database1
データベースに接続します。
% ttIsqlCS -connStr "DSN=database1CS"
Copyright (c) 1996, 2016, Oracle and/or its affiliates. All rights reserved.
Type ? or "help" for help, type "exit" to quit ttIsql.
connect "DSN=database1CS;UID=terry;
Enter password for 'terry':
Connection successful: DSN=database1CS;TTC_SERVER=host3.example.com;TTC_SERVER_DSN=DATABASE1;
UID=terry;DATASTORE=/disk1/databases/database1;DATABASECHARACTERSET=AL32UTF8;CONNECTIONCHARACTERSET=AL32UTF8;
PERMSIZE=32768;TEMPSIZE=4096;TYPEMODE=0;
(Default setting AutoCommit=1)
Command>
ノート:
この例では、データベースに対して少なくともCREATE SESSION
権限を持つterry
ユーザーで、データベースに接続します。『Oracle TimesTen In-Memory Databaseセキュリティ・ガイド』のデータベース・ユーザーの作成または識別を参照してください。
ttIsqlCS
ユーティリティおよびTimesTenクライアントの詳細は、『Oracle TimesTen In-Memory Databaseオペレーション・ガイド』のTimesTen ClientおよびTimesTen Serverの使用を参照してください。
Windows上のTimesTen ClientへのクライアントDSNの追加
TimesTenクライアントリリース22.1に含まれているttInstallDSN
ユーティリティを使用することで、Windows上のTimesTenクライアントにクライアントDSNを追加できます。ttInstallDSN
ユーティリティは、ttGridAdmin gridClientExport
コマンドの出力ファイルの内容に基づいてシステムDSNを作成します。ファイルまたはその内容を、TimesTenクライアントがインストールされているWindowsシステムで使用できるようにする必要があります。
C:\>ttInstallDSN -f C:\Users\terry\Downloads\sys.odbc.ini
Found the following DSNs in available 'C:\Users\terry\Downloads\sys.odbc.ini'.
0 : database1CS
[ Please select the DSN to be imported: ]
0
Adding DSN 'database1CS'.
ノート:
TimesTenクライアントの環境変数を設定して、Windowsの管理者としてttInstallDSN
ユーティリティを実行する必要があります。『Oracle TimesTen In-Memory Databaseインストレーション、移行およびアップグレード・ガイド』のTimesTenの環境変数の設定を参照してください。
TimesTenクライアント・システムから、ttIsql
ユーティリティでdatabase1CS
DSNを使用してdatabase1
データベースに接続できるようになりました。
C:\>ttIsql -connStr "DSN=database1CS"
Copyright (c) 1996, 2016, Oracle and/or its affiliates. All rights reserved.
Type ? or "help" for help, type "exit" to quit ttIsql.
connect "DSN=database1CS;UID=terry;
Enter password for 'terry':
Connection successful: DSN=database1CS;TTC_SERVER=host3.example.com;TTC_SERVER_DSN=DATABASE1;
UID=terry;DATASTORE=/disk1/databases/database1;DATABASECHARACTERSET=AL32UTF8;CONNECTIONCHARACTERSET=AL32UTF8;
PERMSIZE=256;TEMPSIZE=128;TYPEMODE=0;
(Default setting AutoCommit=1)
Command>
ノート:
この例では、データベースに対して少なくともCREATE SESSION
権限を持つterry
ユーザーで、データベースに接続します。『Oracle TimesTen In-Memory Databaseセキュリティ・ガイド』のデータベース・ユーザーの作成または識別を参照してください。
ttInstallDSN
ユーティリティの詳細は、『Oracle TimesTen In-Memory Databaseリファレンス』のttInstallDSNを参照してください。
ttIsql
ユーティリティおよびTimesTenクライアントの詳細は、『Oracle TimesTen In-Memory Databaseオペレーション・ガイド』のTimesTen ClientおよびTimesTen Serverの使用を参照してください。
TimesTen Clientからの暗号化されたクライアント接続の確立
クライアント/サーバー接続可能オブジェクトを使用すると、すべてのデータ・インスタンスで、TimesTenクライアント・ドライバを使用してTimesTenクライアント・インスタンスまたはアプリケーションからの暗号化接続を受け入れることや要求することができるようになります。
ただし、グリッドに含まれていないTimesTenクライアント・インスタンスからの暗号化されたクライアント接続を確立するには、TimesTenクライアント・インスタンスに次のものをインポートする必要があります。
-
認証局(CA)公開キー
-
クライアント証明書
-
そのグリッド内で使用可能なすべてのクライアント/サーバー接続可能オブジェクトを含む、
sys.odbc.ini
ファイル
ttGridAdmin gridClientExportAll
コマンドにより、すべてのクライアント/サーバー接続可能オブジェクトを含むsys.odbc.ini
ファイルと、必要な証明書を含むOracleウォレットを、.zip
ファイルにエクスポートします。
ttClientImport
ユーティリティにより、生成された.zipファイルを使用して、ウォレットおよびクライアント/サーバー接続可能オブジェクトをUNIX上またはWindows上のTimesTenクライアントにインポートします。
TimesTen Clientからの暗号化されたクライアント接続を確立するには、次の手順を実行します。
ノート:
『Oracle TimesTen In-Memory Databaseセキュリティ・ガイド』のクライアント/サーバー用のTLSの構成で示されているとおり、クライアントとサーバーの両方を、暗号化接続を受け入れるか、リクエストするか、必要とするように設定し、一致する暗号スイートをサポートするように設定する必要があります。
ノート:
暗号化接続用にすでに設定されているTimesTenクライアント・インスタンスへの暗号化アクセスを取り消すには、グリッド上で証明書を再生成する必要があります。『Oracle TimesTen In-Memory Databaseセキュリティ・ガイド』のタスク1: ttGridAdmin gridCreateおよびinstanceCreateを使用した証明書の生成およびTLS属性の設定を参照してください。
ttGridAdmin gridClientExportAll
コマンドの詳細は、『Oracle TimesTen In-Memory Databaseリファレンス』の暗号化されたクライアント/サーバー接続のためのsys.odbc.iniと証明書のエクスポート(gridClientExportAll)を参照してください。
クライアント接続のリダイレクト
アプリケーションからクライアント/サーバー接続可能オブジェクトに接続するとき、グリッド内のデータ・インスタンスのいずれかに対して、TCP/IP接続が確立されます。ただし、インスタンスがビジー状態の場合、インスタンスでは、クライアント接続をグリッド内の他のインスタンスに自動的にリダイレクトできます。
デフォルトでは、グリッド内で使用可能な任意のインスタンスに、クライアント接続を自動的にリダイレクトできます。ただし、この動作は、次のものを使用して制限または変更できます。
-
TTC_Redirect
接続属性を使用して、クライアントのリダイレクト方法を定義します。-
自動リダイレクション: デフォルトで、この接続属性は
1
に設定されます。これにより、現在のインスタンスがビジー状態または使用不可の場合、クライアント接続は、グリッド内の使用可能ないずれかのインスタンスに自動的にリダイレクトされます。接続は、クライアント接続数が最も少ないインスタンスにリダイレクトされます。 -
単一レプリカ・セット内の要素: クライアントで単一レプリカ・セット内の要素を含むインスタンスに接続する必要がある場合(目的のデータがこのレプリカ・セットに含まれているため)、
TTC_Redirect
属性を0
に設定します。次に、クライアントでは、同じレプリカ・セット内の要素を含むインスタンスにのみ接続します。接続が拒否された場合は、接続エラーが戻されます。
-
-
TTC_Redirect_Limit
接続属性を使用して、クライアントのリダイレクト回数を制限します。グリッド内のインスタンスの数は、パフォーマンス上の理由からリダイレクトされるクライアント接続の試行回数を制限する必要があるサイズに設定できます。TTC_Redirect_Limit
属性は、接続リダイレクションの試行回数に設定できます。たとえば、TTC_Redirect_Limit
を設定すると、他のインスタンスへのクライアント接続リダイレクションの試行が10回に制限されます。クライアントが、この試行回数内で接続されない場合、接続エラーが戻されます。
クライアント接続を適切なインスタンスにリダイレクトできない場合、クライアント接続は失敗します。クライアント・フェイルオーバー・プロセスの詳細は、「クライアント接続のフェイルオーバー」を参照してください。
TTC_Redirect
またはTTC_Redirect_Limit
接続属性の詳細は、それぞれ『Oracle TimesTen In-Memory Databaseリファレンス』のTTC_REDIRECTまたはTTC_Redirect_Limitを参照してください。
クライアント接続属性の変更方法の詳細は、「接続可能オブジェクトでの接続属性の変更」を参照してください。
データベースが分散データベースであるかどうかの確認
接続しているデータベースが実際に分散データベース(TimesTen Scaleout)であり、単一インスタンス・データベース(TimesTen Classic)でないことを確認する必要がある場合は、ttConfiguration
組込みプロシージャを使用して、ttGridEnable
属性の値をコールします。組込みプロシージャにより、グリッド内のデータベースのttGridEnable=1
が戻されます。
Command> CALL ttConfiguration('ttGridEnable');
< TTGridEnable, 1 >
1 row found.
ttConfiguration
組込みプロシージャの詳細は、『Oracle TimesTen In-Memory Databaseリファレンス』のttConfigurationを参照してください。