6.6.3 データベースの設定
この節では,データベースセッションフェイルオーバ機能を使用する場合に必要となる,テーブルの作成,および環境設定について説明します。
- 注意事項
-
テーブルを作成する際,テンプレートファイルについてここで説明しない変更をした場合,データベースセッションフェイルオーバ機能の動作は保障されません。
- 〈この項の構成〉
(1) データベース接続に必要な権限
データベースのテーブルを操作するには権限が必要です。また,条件を満たす必要があります。データベースごとのテーブルの操作に必要な権限および条件について説明します。ここでは,データベースに接続するユーザのことをデータベース接続ユーザといいます。
-
HiRDBの場合
ここでは,データベース接続ユーザが,データベースセッションフェイルオーバ機能で使用するテーブルに関するすべての操作を実施することを想定しています。データベース接続ユーザは,次の権限および条件を満たす必要があります。
-
スキーマを所有すること。
-
CONNECT権限を持つこと。
-
データベース接続ユーザのスキーマに,データベースセッションフェイルオーバ機能が使用するテーブル,インデックスおよびストアドプロシジャを作成すること。
データベースのテーブルの作成の詳細については,「6.6.3(2) データベースのテーブルの作成」を参照してください。データベースのテーブルの削除の詳細については,「6.8 データベースのテーブルの削除」を参照してください。
-
-
Oracleの場合
ここでは,データベースセッションフェイルオーバ機能が使用するデータベースのテーブルの作成または削除の操作はデータベース管理者が実施し,そのほかの通常の運用で必要となるデータベースの操作は,データベースセッションフェイルオーバ機能のデータベース接続ユーザが実施することを想定しています。データベース接続ユーザは,次の権限および条件を満たす必要があります。
-
CREATE SESSIONシステム権限を持つこと。
-
データベース接続ユーザのスキーマに,データベースセッションフェイルオーバ機能が使用するテーブル,インデックスおよびストアドプロシジャを作成すること。
データベースのテーブルの作成の詳細については,「6.6.3(2) データベースのテーブルの作成」を参照してください。データベースのテーブルの削除の詳細については,「6.8 データベースのテーブルの削除」を参照してください。
-
(2) データベースのテーブルの作成
データベースセッションフェイルオーバ機能では,データベース上に3種類のテーブルを作成する必要があります。作成するテーブルと,作成手順の参照先について次の表に示します。
テーブル名 |
データベース上の物理名称 |
作成手順の参照先 |
---|---|---|
アプリケーション情報テーブル |
SFO_<APPLICATION_ID>_APP_INFO |
|
セッション情報格納テーブル |
SFO_<APPLICATION_ID>_SESSIONS |
|
空きレコード情報テーブル |
SFO_<APPLICATION_ID>_REC_INFO |
データベースセッションフェイルオーバ機能で使用するデータベースのテーブル作成用のテンプレートファイルは次の場所に格納されています。
- Windowsの場合:
-
<Application Serverのインストールディレクトリ>\CC\sfo\sql\
- UNIXの場合:
-
/opt/Cosminexus/CC/sfo/sql/
テーブル作成用のテンプレートファイルは使用するデータベースごとに2種類ずつあります。使用するデータベース,ファイル,および作成するテーブルの種類の対応を次の表に示します。
使用するデータベース |
テンプレートファイル |
作成するテーブルの種類 |
||
---|---|---|---|---|
アプリケーション情報テーブル |
セッション情報格納テーブル |
空きレコード情報テーブル |
||
HiRDB |
hirdb_create_apptbl.sql |
○ |
− |
|
hirdb_create_sessiontbl.sql |
− |
○ |
||
Oracle |
oracle_create_apptbl.sql |
○ |
− |
|
oracle_create_sessiontbl.sql |
− |
○ |
以降で,使用するデータベースごとにテンプレートファイルの詳細について示します。
また,DB Connectorに設定するユーザには,テーブルの作成者を登録してください。
(3) アプリケーション情報テーブルの作成
アプリケーション情報テーブルは,Webアプリケーションに設定したデータベースセッションフェイルオーバ機能に関する設定を格納するテーブルです。
アプリケーション情報テーブルの作成手順を次に示します。
-
テンプレートファイルを任意の場所にコピーします。
テーブル作成用のSQLファイルとして,テンプレートファイルが用意されています。テンプレートファイルの格納場所を,使用するデータベースごとに次に示します。
-
HiRDBを使用する場合のテンプレートファイルの格納場所
Windowsの場合:<Application Serverのインストールディレクトリ>\CC\sfo\sql\hirdb_create_apptbl.sql
UNIXの場合:/opt/Cosminexus/CC/sfo/sql/hirdb_create_apptbl.sql
-
Oracleを使用する場合のテンプレートファイルの格納場所
Windowsの場合:<Application Serverのインストールディレクトリ>\CC\sfo\sql\oracle_create_apptbl.sql
UNIXの場合:/opt/Cosminexus/CC/sfo/sql/oracle_create_apptbl.sql
-
-
テンプレートファイルを編集します。
Webアプリケーションの設定情報に合わせて,テンプレートファイルを編集して,テーブル作成用SQLファイルを作成します。
テンプレートファイル内の変更個所と変更内容を次の表に示します。
表6‒44 テンプレートファイル内の変更個所と変更内容 変更個所
変更対象
変更内容
HiRDB
Oracle
-
1行目
-
5行目
-
1行目
-
5行目
<APPLICATION_ID>
使用するアプリケーションのアプリケーション識別子に変更してください。
なし
-
1行目
-
5行目
<SCHEMA_NAME>
データベース接続ユーザのスキーマ名に変更してください。
6行目
6行目
<HTTP_SESSION_NO>
データベースに格納するグローバルセッション情報の数に変更してください。
-
-
作成したテーブル作成用SQLファイルを実行します。
SQLファイルの実行には,HiRDBを使用する場合はSQL Executer,Oracleを使用する場合はSQL*Plusなどを使用してください。
(4) セッション情報格納テーブルおよび空きレコード情報テーブルの作成
セッション情報格納テーブルは,グローバルセッション情報を格納するテーブルです。空きレコード情報テーブルは,セッション情報格納テーブルの未使用レコードを管理するテーブルです。セッション情報格納テーブルおよび空きレコード情報テーブルは,一つのテーブル作成用のSQLファイルを実行することで同時に作成されます。
セッション情報格納テーブルおよび空きレコード情報テーブルの作成手順を次に示します。
-
テンプレートファイルを任意の場所にコピーします。
テーブル作成用のSQLファイルとして,テンプレートファイルが用意されています。テンプレートファイルの格納場所を,使用するデータベースごとに次に示します。
-
HiRDBを使用する場合のテンプレートファイルの格納場所
Windowsの場合:<Application Serverのインストールディレクトリ>\CC\sfo\sql\hirdb_create_sessiontbl.sql
UNIXの場合:/opt/Cosminexus/CC/sfo/sql/hirdb_create_sessiontbl.sql
-
Oracleを使用する場合のテンプレートファイルの格納場所
Windowsの場合:<Application Serverのインストールディレクトリ>\CC\sfo\sql\oracle_create_sessiontbl.sql
UNIXの場合:/opt/Cosminexus/CC/sfo/sql/oracle_create_sessiontbl.sql
-
-
テンプレートファイルを編集します。
Webアプリケーションの設定情報に合わせて,テンプレートファイルを編集して,テーブル作成用SQLファイルを作成します。
テンプレートファイル内の,使用するデータベースごとの変更個所と変更内容について次の表に示します。
表6‒45 テンプレートファイル内の変更個所と変更内容 変更個所
変更対象
変更内容
HiRDB
Oracle
-
1行目
-
13行目
-
18行目
-
19行目
-
23行目
-
48行目
-
50行目
-
57行目
-
60行目
-
74行目
-
1行目
-
13行目
-
18行目
-
19行目
-
23行目
-
49行目
-
51行目
-
58行目
-
61行目
-
74行目
<APPLICATION_ID>
使用するアプリケーションのアプリケーション識別子に変更してください。
なし
-
1行目
-
13行目
-
18行目
-
19行目
-
23行目
-
49行目
-
51行目
-
58行目
-
60行目
-
74行目
<SCHEMA_NAME>
データベース接続ユーザのスキーマ名に変更してください。
7行目
なし
<ATTRIBUTE_DATA_SIZE_MAX>
HTTPセッションの属性情報の最大サイズ(単位:バイト)に変更してください。
74行目
74行目
<HTTP_SESSION_NO>
データベースに格納するグローバルセッション情報の数に変更してください。
-
-
作成したテーブル作成用SQLファイルを実行します。
SQLファイルの実行には,HiRDBを使用する場合はSQL Executer,Oracleを使用する場合はSQL*Plusなどを使用してください。
(5) データベースの環境設定
データベースセッションフェイルオーバ機能を使用する場合,データベースにはタイムアウト(HiRDBの場合UAP処理時間監視機能)の設定をしてください。
データベースセッションフェイルオーバ機能が有効の場合,機能の処理の中で操作対象となるデータベースのテーブルのレコードが排他制御されます。そのため,J2EEサーバのホストでの障害発生時などに,操作対象となっていたレコードが排他されたままになる場合があります。このとき,HTTPセッションの新規作成や,J2EEサーバとデータベースとの接続に失敗するおそれがあります。
タイムアウトの設定をしておくと,このような状況を検知してタイムアウト時にトランザクションがロールバックされ,レコードが排他制御される前の状態に戻るため,システムへの影響はなくなります。
なお,誤動作を防ぐために,データベースのタイムアウトの値にはDB Connectorに設定するタイムアウトの値よりも大きな値を設定してください。データベースの設定内容,手順については,HiRDBを使用する場合はマニュアル「HiRDB UAP開発ガイド」を,Oracleを使用する場合はOracleのマニュアルを参照してください。
レコードが排他制御される処理,処理中に操作対象となるテーブル,処理中にJ2EEサーバで障害が発生した場合のシステムへの影響,および出力されるメッセージを次の表に示します。
項番 |
レコードが排他制御される処理 |
操作対象のテーブル |
障害が発生した場合のシステムへの影響 |
出力されるメッセージ |
---|---|---|---|---|
1 |
Webアプリケーション開始時のネゴシエーション処理 |
アプリケーション情報テーブル |
アプリケーションのネゴシエーションに失敗するため,データベースセッションフェイルオーバ機能を使用するWebアプリケーションの開始に失敗します。 |
出力されない |
2 |
グローバルセッション情報の作成処理 |
空きレコード情報テーブル |
システムで作成できるHTTPセッションの数が全体の90%になります。このあと,HTTPセッションの作成,または削除処理に失敗する場合があります。 |
|
3 |
グローバルセッション情報の削除処理 |
空きレコード情報テーブル |
システムで作成できるHTTPセッションの数が全体の90%になります。このあと,HTTPセッションの作成,または削除処理に失敗する場合があります。 |
|
4 |
グローバルセッション情報の更新処理 |
セッション情報格納テーブル |
システムで作成できるHTTPセッションの数が1個分減少します。このあと,減少したHTTPセッションを操作するリクエストを受信すると,HTTPセッションの取得に失敗します。 |
|
5 |
グローバルセッション情報の有効期限監視処理 |
アプリケーション情報テーブル |
データベース上のグローバルセッション情報の有効期限が監視されなくなります。 |
|