6.6.4 DBキュー表の構成
DBキュー表には次の5種類があります。
-
ライト管理表
メッセージを書き込んだ通番,通番のラップの有無,および最大書き込み通番を管理します。
-
リード管理表
メッセージを読み込んだ通番および通番のラップの有無を管理します。
-
メッセージ管理表
メッセージを管理します。
-
データ連携支援引き継ぎ情報表
TP1/FSPデータ連携支援の実行をするときに,DBキューに同じデータを書き込まないようにする制御で使用する情報を管理します。データ連携支援書き込み属性を付与したDBキューに作成されます。データ連携支援書き込み属性がないDBキューには作成されません。
-
交替用メッセージ表
メッセージ表のRDエリア容量不足,RDエリア閉塞などの障害が発生した場合に,業務を継続するためにメッセージを管理する交替用の表です。交替用メッセージ表書き込み機能を使用しない場合は作成されません。
交替用メッセージ表書き込み機能を使用する場合は,メッセージ表とメッセージ表のINDEXを,ほかの表とは別のRDエリアに作成してください。交替用メッセージ表書き込み機能は,メッセージ表のRDエリア容量不足,RDエリア閉塞などの障害時に別のRDエリアに作成した交替用メッセージ表に書き込む機能です。同じRDエリアに作成すると,障害発生時に交替用メッセージ表の書き込みも失敗するため,交替用メッセージ表書き込み機能を使用する意味がありません。各表を作成するRDエリアは,eedbqtblhコマンドのオプションで指定できます。
DBキュー表の命名規則を次の表に示します。
|
表の種類 |
表の名称 |
例(DBキュー名が"DB001"の場合) |
|---|---|---|
|
ライト管理表 |
DBキュー名+WT |
DB001WT |
|
リード管理表 |
DBキュー名+RD |
DB001RD |
|
メッセージ管理表 |
DBキュー名+MG |
DB001MG |
|
データ連携支援引き継ぎ情報表 |
DBキュー名+KS |
DB001KS |
|
交替用メッセージ表 |
DBキュー名+ AM |
DB001AM |
(1) HiRDBをリソースマネジャとして使用する場合
HiRDBをリソースマネジャとして使用する場合のDBキュー表の作成方法,表の構成情報,必要となる権限,および注意事項について説明します。
(a) DBキュー表の作成
DBキュー表は,eedbqtblhコマンドを使用して作成します。
(b) DBキューが使用する表の構成情報
HiRDB上のRDエリアサイズなどを見積もるための情報を次の表に示します。
|
表の種類 |
表の数 |
行数 |
|---|---|---|
|
ライト管理表 |
DBキュー数 |
1 |
|
リード管理表 |
DBキュー数 |
1 |
|
メッセージ管理表 |
DBキュー数 |
DBキューの最大メッセージ数※1 |
|
データ連携支援引き継ぎ情報表 |
データ連携支援書き込み属性を付与したDBキュー数 |
データ連携支援数※2 |
|
交替用メッセージ表 |
交替用メッセージ表書き込み機能を使用するDBキュー数 |
DBキューの最大メッセージ数※1 |
- 注※1
-
eedbqtblhコマンドの-cオプション指定値
- 注※2
-
データ連携支援ID一つにつき1行
DBキューが使用する表の列属性と列数を次の表に示します。
|
表の種類 |
列属性 |
列数 |
|---|---|---|
|
ライト管理表 |
INTEGER |
2 |
|
SMALLINT |
1 |
|
|
BINARY※1 |
1 |
|
|
リード管理表 |
INTEGER |
1 |
|
SMALLINT |
1 |
|
|
BINARY※1 |
2 |
|
|
メッセージ表 |
INTEGER |
1 |
|
BINARY※2 |
1 |
|
|
BINARY※3 |
1 |
|
|
データ連携支援引き継ぎ情報表 |
CHARCTER(26) |
1 |
|
CHARCTER(32) |
1 |
|
|
INTEGER |
2 |
|
|
DECIMAL(19,0) |
1 |
|
|
交替用メッセージ表 |
INTEGER |
1 |
|
BINARY※2 |
1 |
|
|
BINARY※3 |
1 |
- 注※1
-
データの長さは,256バイトです。
- 注※2
-
データの長さは,eedbqtblhコマンドの-zオプションの指定値+4(単位:バイト)です。
- 注※3
-
データの長さは,512バイトです。
メッセージ管理表および交替用メッセージ表には,インデクスを使用しています。メッセージ管理表および交替用メッセージ表のインデクスについて次の表に示します。
|
種別 |
DB格納キー長(バイト) |
|---|---|
|
ユニーク |
4 |
(c) ユーザに必要な権限
TP1/EEがDBキュー表にアクセスする場合は,HiRDBのクライアント環境定義ファイル(環境変数設定ファイル)に設定するユーザ名でDBキュー表にアクセスします。HiRDBのクライアント環境定義ファイルの設定の詳細については,「6.8.2 HiRDB連携時の運用」を参照してください。また,eedbqtblhコマンドでDBキュー表にアクセスする場合は,環境変数PDUSERに設定するユーザ名でDBキュー表にアクセスします。
これらのユーザ名に,次に示す権限を設定する必要があります。
-
CONNECT
-
RDAREA
RDエリア名(eedbqtblhコマンドの-bオプションで指定)に対する利用権限,またはeedbqtblhコマンドの-bオプションを省略したときに使用されるRDエリア名に対する利用権限です。
権限の設定方法の詳細については,マニュアル「HiRDB システム運用ガイド」を参照してください。
(d) HiRDBをリソースマネジャとして使用する場合の注意事項
-
一度作成した表はTP1/EEで管理するため,変更や更新などをしないでください。ただし,最大メッセージ数などを変更したい場合は,eedbqtblhコマンドで表をいったん削除したあとに再作成することによって変更できます。
-
HiRDBクライアント環境定義のPDDBLOGオペランドにNO(ログレスモード指定)を指定している場合,DBキューの表全体にHiRDBが排他を取得するため,DBキューの性能が低下します。
-
DBキューを複数使用する場合,スキーマ構成を統一してください。
-
一つのHiRDBサーバに,DBキュー機能で使用するDBキュー表と同じ名称のDBキュー表を作成しないでください。DBキュー機能では,クラスタキーの構成チェックをするため,同じ名称のDBキュー表が複数存在する場合,KFSB55600-Eメッセージを出力します。この場合,DBキューを使用できないことがあります。
-
DBキュー機能のSQL実行時にエラーが発生した場合は,TP1/EEが出力するメッセージとHiRDBが出力するエラーログファイルを参照し,原因を取り除いてください。HiRDBのクライアント環境定義のPDUAPERLOGオペランドで,エラーログファイルのサイズには十分な値を指定してください。十分な値を指定しないと,エラーログファイルを取得できません。
HiRDBのエラーログファイルおよびPDUAPERLOGオペランドの詳細については,マニュアル「HiRDB UAP開発ガイド」の,クライアント環境定義の設定内容およびエラーログ機能に関する記述を参照してください。
-
DBキュー機能のSQL実行時に複数のエラーが発生した場合,TP1/EEが出力するメッセージ中のSQLCODEには,最後にエラーが発生したSQL実行時のSQLCODEが表示されます。
-
HiRDBのシステム共通定義のpd_max_access_tablesオペランドには,次に示す計算式で算出した値以上の値を指定してください。
DBキュー機能関連定義のdbqdef定義コマンドの指定数×3
pd_max_access_tablesオペランドに指定した値が上記の計算式で算出した値に満たない場合,次に示す状態になることがあります。
-
オンライン開始監視トランザクションおよびDBキュータイマトランザクションがロールバックして,DBキュー表の構成チェックに時間が掛かる。
-
プロセス終了監視トランザクションがロールバックして,TP1/EE終了時の未読み出しメッセージのチェックに時間が掛かる。また,一部のDBキューの未読み出しメッセージをチェックできない。
-
eedbqlsqgコマンドまたはeedbqlsdqコマンド実行時のコマンドトランザクションがロールバックして,一部のDBキューの状態を表示できない。
-
eedbqchgrコマンドに-Gオプションまたは-Nオプションを指定して実行したコマンドトランザクションがロールバックして,一部のDBキューの状態を変更できない。
-
-
Cosminexus Reliable Messagingの共用キューと接続する場合,TP1/EEのシステム定義,運用コマンド,またはAPI関数で,次に示すとおりにDBキュー名を指定してください。
〈システム名〉_SHR_〈キュー名〉
システム名およびキュー名については,マニュアル「Cosminexus Reliable Messaging」を参照してください。
(2) Oracleをリソースマネジャとして使用する場合
Oracleをリソースマネジャとして使用する場合のDBキュー表の作成方法,表の構成情報,必要となる権限,および注意事項について説明します。
(a) DBキュー表の作成
DBキュー表は,eedbqtbloコマンドで作成します。
(b) DBキューが使用する表の構成情報
Oracle上の表領域の容量などを見積もるための情報を次の表に示します。
|
表の種類 |
表の数 |
行数 |
|---|---|---|
|
ライト管理表 |
DBキュー数 |
1 |
|
リード管理表 |
DBキュー数 |
1 |
|
メッセージ管理表 |
DBキュー数 |
DBキューの最大メッセージ数(eedbqtbloコマンドの-cオプションの指定値) |
DBキューが使用する表の列属性と列数を次の表に示します。
|
表の種類 |
列属性 |
列数 |
|---|---|---|
|
ライト管理表 |
NUMBER(10) |
2 |
|
NUMBER(5) |
1 |
|
|
RAW(256) |
1 |
|
|
リード管理表 |
NUMBER(10) |
1 |
|
NUMBER(5) |
1 |
|
|
RAW(256) |
2 |
|
|
メッセージ管理表 |
NUMBER(10) |
1 |
|
BLOB※ |
1 |
|
|
RAW(512) |
1 |
- 注※
-
データの長さは,DBキューに書き込むメッセージのメッセージ長+4(単位:バイト)です。
メッセージ管理表には,インデクスを使用しています。メッセージ管理表のインデクスについて次の表に示します。
|
種別 |
キーの属性 |
|---|---|
|
ユニーク |
NUMBER(10) |
(c) ユーザに必要な権限
TP1/EEがDBキュー表にアクセスする場合は,トランザクション関連定義のtrnstring定義コマンドのxa_open関数用文字列に指定するユーザ名でDBキュー表にアクセスします。また,eedbqtbloコマンドでDBキュー表にアクセスする場合は,eedbqtbloコマンドの-uオプションで指定するユーザ名でDBキュー表にアクセスします。
これらのユーザ名に,次に示す権限を設定する必要があります。
- システム権限
-
-
CREATE SESSION
-
CREATE TABLE
-
ALTER SESSION
eedbqtbloコマンドに-Tオプションを指定する場合だけ,必ず設定してください。
-
- オブジェクト権限
-
SELECT ON DBA_PENDING_TRANSACTIONS
- 割り当て制限
-
表領域名(eedbqtbloコマンドの-bオプションで指定)に対する割り当て制限,またはeedbqtbloコマンドの-bオプションを省略するときに使用される表領域名に対する割り当て制限です。
権限の設定方法の詳細については,Oracleのマニュアルを参照してください。
(d) Oracleをリソースマネジャとして使用する場合の注意事項
-
一度作成した表はTP1/EEで管理するため,変更や更新などをしないでください。ただし,最大メッセージ数などを変更したい場合は,eedbqtbloコマンドで表をいったん削除したあとに再作成することによって変更できます。
-
DBキューを複数使用する場合,スキーマ構成を統一してください。
-
DBキュー機能のSQL実行時にエラーが発生した場合,Oracleのエラー情報は,TP1/EEのメッセージ,または回線トレースファイルに出力されます。出力されたTP1/EEのメッセージ,または回線トレースファイルの編集結果を見て原因を取り除いてください。
-
次に示すロケール(言語種別)は,同一の言語としてください。DBキュー機能の使用時にTP1/EEが出力するメッセージにはOracleのメッセージが含まれているため,同一の言語が設定されていないとメッセージが正しく出力されないからです。
-
TP1/EEが動作するOracleのクライアントに対してNLSパラメタで選択するロケール
-
環境変数LANGに設定する言語種別
OracleのNLSパラメタについては,Oracleのマニュアルを参照してください。
-
-
Cosminexus Reliable Messagingの共用キューと接続する場合,TP1/EEのシステム定義,運用コマンド,またはAPI関数で,次に示すとおりにDBキュー名を指定してください。
〈システム名〉_SHR_〈キュー名〉
システム名およびキュー名については,マニュアル「Cosminexus Reliable Messaging」を参照してください。