2.2.2 運用コマンドによるキューファイルの運用

ユーザは,キューを使用してメッセージキューイング機能を実現します。キューの情報は,最終的には物理的なキューファイルに格納されます。ここでは,運用コマンドによるキューファイルの運用について説明します。

<この項の構成>
(1) キューファイルの作成
(2) キューの作成と削除
(3) キューの属性の変更
(4) キューファイルの状態
(5) オブジェクトの属性の設定
(6) オブジェクトの属性表示
(7) キューファイル内の情報表示
(8) キューファイルの組み込みと切り離し
(9) キューファイルの論理閉塞と閉塞解除
(10) キューファイルのバックアップとリストア
(11) キューファイルの回復
(12) mqafrcコマンドの使用例(キューファイル格納媒体損傷の場合)
(13) mqafrcコマンドの使用例(キューファイル格納媒体損傷以外の場合)
(14) キューファイルの削除
(15) キューファイル二重化構成
(16) キューファイルグループの使用状況表示
(17) キューファイルの情報表示
(18) キューファイルのコンバート
(19) メッセージの削除
(20) メッセージの表示

(1) キューファイルの作成

ユーザは,キューの情報を格納するためのキューファイルを,mqainitコマンドを使用して作成します。このとき,キャラクタ型スペシャルファイルまたはUNIXファイルのアクセス権は,所有者およびグループにリード・ライト権を与えてください。また,OpenTP1ファイルシステムのアクセス権はユーザ用に設定してください。アクセス権を正しく設定していない場合,KFCA31184-Eが出力されてOpenTP1の起動に失敗します。

mqainitコマンドを使用すると,二つの物理ファイルが作成されます。一つは,メッセージの管理情報が格納されるメッセージ情報管理ファイルです。もう一つは,メッセージ自身が格納されるメッセージファイルです。メッセージ情報管理ファイルとメッセージファイルの合計の最大格納容量は2ギガバイトです。また,OpenTP1ファイルシステムでも2ギガバイト以内で使用してください。

注意
キューファイルパスおよびキューファイル名にスペースを指定しないでください。指定した場合,動作を保証できません。

(2) キューの作成と削除

ユーザは,メッセージキューイングに使用するキューを作成する必要があります。

キューは,作成の方法によって,定義済みキューと動的キューに分けられます。

(a) 定義済みキューの作成

定義済みキューは,オンライン開始前にあらかじめmqamkqueコマンドを使用して作成しておきます。いったん作成すると,キューを削除するまでシステム内に存在します。

定義済みキューの作成方法について,次の図に示します。

図2-5 定義済みキューの作成

[図データ]

(b) 動的キューの作成

動的キューは,オンライン中にアプリケーションからMQOPEN命令で作成するキューです。

MQOPEN命令では,モデルキューの属性定義で指定したモデルキューの定義名を指定します。MQOPEN命令の詳細については,マニュアル「TP1/Message Queue プログラム作成リファレンス」を参照してください。

動的キューには,一時的動的キューと永続的動的キューがあります。一時的か永続的かは,モデルキューの属性定義(MQAサービス定義のmqaqueatl定義コマンド)で指定します。

(c) キューの削除

キューを削除する場合は,mqadelqueコマンドを使用します。mqadelqueコマンドで,定義済みキューと動的キューの両方を削除できます。また,動的キューは,動的キューを作成したMQOPEN命令のアプリケーションが終了すると,自動的に削除されます。

(3) キューの属性の変更

キューの属性を変更する場合は,mqachgqueコマンドを使用します。mqachgqueコマンドで変更できるのは,ローカルキューの属性です。なお,キューの属性のうち,定義タイプは変更できません。

(4) キューファイルの状態

キューファイルには,次に示す状態があります。

正常
正常に使用できる状態です。
論理閉塞
論理的に閉塞して,メッセージの登録および取り出しができない状態です。
障害閉塞
キューファイルに障害が発生した場合の状態です。
一時的障害閉塞
キューファイルに一時的な障害が発生した場合の状態です。次に示す状態があります。
  • 一時的障害閉塞(C)
    メッセージ情報管理ファイルに一時的な障害が発生した状態
  • 一時的障害閉塞(CR)
    メッセージ情報管理ファイルに一時的な障害が発生したあと回復済みの状態
  • 一時的障害閉塞(M)
    メッセージファイルに一時的な障害が発生した状態
  • 一時的障害閉塞(C/M)
    メッセージ情報管理ファイルおよびメッセージファイルに一時的な障害が発生した状態
  • 一時的障害閉塞(CR/M)
    メッセージ情報管理ファイルに一時的な障害が発生したあと回復済みであるが,メッセージファイルに一時的な障害が発生した状態
キューファイル障害発生時に,障害要因が一時的である可能性のある場合は,一時的障害閉塞に移行します。キューファイル格納媒体損傷の場合も,一時的障害閉塞に移行します。
一時的障害閉塞に移行すると,障害発生時点でキューファイルに未反映である更新情報はメモリ上に保持されます(障害閉塞に移行する場合,更新情報は破棄されます)。そのため,障害要因を除去した後に,未反映である更新情報をキューファイルに書き込むことによって回復することができます。mqafrcコマンドによって,ジャーナルファイルを使用してキューファイルを回復する必要はありません。
空き
キューファイルは存在していますが,キューマネジャに認識されていない状態です。オンラインで使用するためには,キューファイルを組み込む必要があります。

キューファイルの状態とコマンドによる状態遷移について,次の図に示します。

図2-6 キューファイルの状態遷移

[図データ]

注1
図中の矢印以外に次に示す状態遷移があります。
  • すべての「一時的障害閉塞」からmqarmコマンドによって「空き」に移行します。
  • すべての「一時的障害閉塞」からmqagrpobsコマンドによって「障害閉塞」に移行します。
  • 「一時的障害閉塞(C)」および「一時的障害閉塞(C/M)」から計画停止および再開始によって「障害閉塞」に移行します。
注2
TP1/Message Queueが一定の間隔(チェックポイントダンプ取得間隔または3分間隔)で回復処理を実行しているため,自動的にキューファイルの状態が移行することがあります。
「正常」から「障害閉塞」に移行するのは,次に示す場合です。
  • 開始時および終了時にキューファイル障害を検知した場合
  • キューファイル二重化構成の片系のキューファイル障害(片系障害)を検知した場合
これら以外でキューファイル障害を検知すると「一時的障害閉塞」に移行します。
注※1
mqarlesコマンド入力時に,メッセージ情報管理ファイルへの書き込みが成功した場合
注※2
mqarlesコマンド入力時に,メッセージ情報管理ファイルへの書き込みが失敗した場合
注意
すべての「一時的障害閉塞」からOpenTP1を正常終了した場合,そのキューファイルは「障害閉塞」として扱われるため,キューファイルの再作成が必要です。

(5) オブジェクトの属性の設定

オブジェクトの属性を設定する場合は,mqasetコマンドを使用します。mqasetコマンドのコマンド引数によって,次に示すオブジェクトの属性を設定できます。

(6) オブジェクトの属性表示

オブジェクトの属性を表示する場合は,mqainqコマンドを使用します。mqainqコマンドのオプションによって,次に示すオブジェクトの属性を表示できます。

-mオプション
  • キューマネジャ
-qオプション
  • ローカルキュー
  • モデルキュー
  • リモートキューのローカル定義で指定されたキュー
  • 別名キュー

(7) キューファイル内の情報表示

オフラインの状態で,指定したキューファイルの管理部の情報を表示するには,mqafilinfコマンドを使用します。mqafilinfコマンドのオプションによって,次に示す情報を表示できます。

-qオプション
  • ローカルキュー情報
-xオプション
  • キュー名一覧

(8) キューファイルの組み込みと切り離し

キューファイルを組み込む場合は,mqaaddコマンドを使用します。キューファイルを組み込むと,オンラインで使用できる状態になります。このあと,mqarlesコマンドを使用して閉塞状態を解除すると,キューファイルはアプリケーションから使用できる状態になります。

キューファイルを切り離す場合,mqarmコマンドを使用します。キューファイルを切り離すと,キューファイルの中のキューおよびメッセージは破棄されます。

-rオプションを指定すると,キューファイルを強制的に切り離せます。

(9) キューファイルの論理閉塞と閉塞解除

mqaaddコマンドでキューファイルを組み込んだ直後は,キューファイルは論理閉塞状態です。閉塞状態を解除するために,mqarlesコマンドを使用します。

また,一時的障害閉塞を解除するには,mqarlesコマンドの-sオプションにtを指定します。

(10) キューファイルのバックアップとリストア

キューファイルをバックアップする場合は,mqabkupコマンドを使用します。mqabkupコマンドで指定したキューファイルがオンラインで使用中の場合,この操作はエラーになります。

バックアップしたファイルをリストアするには,mqarstrコマンドを使用します。

(11) キューファイルの回復

キューファイルの回復をMQA FRCといいます。MQA FRCは,mqafrcコマンドで実行します。MQA FRCはキューファイルの障害要因により回復方法が異なります。

なお,mqafrcコマンドの実行を含むキューファイルの回復手順については,「7.1.4 キューファイルの入出力エラー」を参照してください。

(a) 障害要因がキューファイル格納媒体損傷の場合

キューファイル格納媒体損傷の場合,次に示す資源が必要です。

回復方法については,「2.2.2(12) mqafrcコマンドの使用例(キューファイル格納媒体損傷の場合)」を参照してください。

(b) 障害要因がキューファイル格納媒体損傷以外の場合

キューファイル格納媒体損傷以外の場合,次に示す資源が必要です。

回復方法については,「2.2.2(13) mqafrcコマンドの使用例(キューファイル格納媒体損傷以外の場合)」を参照してください。

(12) mqafrcコマンドの使用例(キューファイル格納媒体損傷の場合)

障害要因がキューファイル格納媒体損傷の場合の,mqafrcコマンドの使用例について説明します。使用例で指定する回復対象キューファイル定義ファイル(ファイル名mappingfile)は,次に示すとおり記述します。

mqafilmap /dev/rdsk/rhd031/rcvf1 /dev/rdsk/rhd032/rcvf1

この定義例では,回復対象キューファイル名は/dev/rdsk/rhd031/rcvf1,回復先キューファイル名は/dev/rdsk/rhd032/rcvf1です。回復先キューファイル名には,実際に回復させるキューファイル名を指定します。回復対象キューファイル名は,回復先キューファイルを回復するために必要なアンロードジャーナル内の情報を特定するために使用します。回復対象キューファイル名が示すファイルの情報を基に回復するわけではありません。mqafrcコマンドを実行する場合には回復先キューファイルが存在している必要があります。キューファイル/dev/rdsk/rhd032/rcvf1は,キューファイル/dev/rdsk/rhd031/rcvf1のバックアップを基にリストア済みで,mqafrcコマンドの入力によってキューファイル/dev/rdsk/rhd032/rcvf1は障害発生直前の状態に回復されます。

mqafrcコマンドに指定するアンロードジャーナルファイル名は次に示すとおりとします。

jnlf001,jnlf002,…,jnlf00n…(n:世代番号)

(a) 使用例1

ファイル分割されていないアンロードジャーナルファイルからキューファイルを回復する場合について説明します。

次に示すとおりコマンドを入力します。

mqafrc -s -e -f mappingfile /jnlf001

jnlf001を入力として,回復先キューファイルが回復されます。

キューファイル回復の流れについて,次の図に示します。

図2-7 キューファイル回復の流れ(キューファイル格納媒体損傷の場合)

[図データ]

(b) 使用例2

三つのファイルに分割されているアンロードジャーナルファイルから,キューファイルを1回のコマンド入力で回復する場合について説明します。

次に示すとおりコマンドを入力します。

mqafrc -s -e -f mappingfile /jnlf001 /jnlf002 /jnlf003

jnlf001,jnlf002,およびjnlf003を入力として,回復先キューファイルが回復されます。

複数のアンロードジャーナルファイルとキューファイル回復の流れについて,次の図に示します。

図2-8 複数のアンロードジャーナルファイルとキューファイル回復の流れ

[図データ]

(c) 使用例3

四つのファイルに分割されているアンロードジャーナルファイルから,キューファイルを3回のコマンド入力で回復する場合について説明します。

(1回目)
次に示すとおりコマンドを入力します。

mqafrc -s -f mappingfile /jnlf001 /jnlf002

jnlf001およびjnlf002を入力として,回復先キューファイルが回復されます。また,引き継ぎファイルとしてmqafrc001およびjnlcolc001が作成されます。
(2回目)
次に示すとおりコマンドを入力します。

mqafrc -f mappingfile /jnlf003

jnlf003,mqafrc001,およびjnlcolc001を入力として,回復先キューファイルが回復されます。そのあと,mqafrc001およびjnlcolc001の内容は更新されます。
(3回目)
次に示すとおりコマンドを入力します。

mqafrc -e -f mappingfile /jnlf004

jnlf004,mqafrc001,およびjnlcolc001を入力として,回復先キューファイルが回復されます。-eオプションを指定しているので,そのあと,mqafrc001およびjnlcolc001は削除されます。

この場合,3回目のmqafrcコマンドが完了するまで,回復対象キューファイル定義ファイルmappingfileの内容を変更しないでください。

引き継ぎファイルを使用するキューファイル回復の流れについて,次の図に示します。図中の番号は何回目のコマンド入力による動作であるかを表します。

図2-9 引き継ぎファイルを使用するキューファイル回復の流れ

[図データ]

(d) 使用例4

世代番号が1のアンロードジャーナルファイルは使用しないで,世代番号2以降のアンロードジャーナルファイルを使用してキューファイルを回復する場合について説明します。

次に示すとおりコマンドを入力します。

mqafrc -s -e -g -f mappingfile /jnlf002 /jnlf003

jnlf002およびjnlf003を入力として,回復先キューファイルが回復されます。

アンロードジャーナルファイルの世代番号とキューファイル回復の流れについて,次の図に示します。

図2-10 アンロードジャーナルファイルの世代番号とキューファイル回復の流れ

[図データ]

(e) 使用例5

キーを指定してキューファイルを回復する場合について説明します。

次に示すとおりコマンドを入力します。

mqafrc -s -k 005 -f mappingfile /jnlf001

mqafrcコマンドに-kオプションを指定すると,mqafrcコマンドが作成する引き継ぎファイルの名称の一部を指定できます。2回目以降のMQA FRCでこの引き継ぎファイルを使用する場合は,前回と同じキーを指定してください。

引き継ぎファイルのキーの指定とキューファイル回復の流れについて,次の図に示します。

図2-11 引き継ぎファイルのキーの指定とキューファイル回復の流れ

[図データ]

(13) mqafrcコマンドの使用例(キューファイル格納媒体損傷以外の場合)

障害要因がキューファイル格納媒体損傷以外の場合の,mqafrcコマンドの使用例について説明します。使用例で指定する回復対象キューファイル定義ファイル(ファイル名mappingfile)は,次に示すとおり記述します。

mqafilmap /dev/rdsk/rhd031/rcvf1

この定義例では,回復対象キューファイル名および回復先キューファイル名はともに/dev/rdsk/rhd031/rcvf1です。回復先キューファイル名には,実際に回復させるキューファイル名を指定します。mqafrcコマンドを実行する場合には回復先キューファイルが存在している必要があります。キューファイル/dev/rdsk/rhd031/rcvf1は障害発生直前の状態に回復されます。

mqafrcコマンドに指定するアンロードジャーナルファイル名は次に示すとおりとします。

jnlf001,jnlf002,…,jnlf00n…(n:世代番号)

(a) 使用例

ファイル分割されていないアンロードジャーナルファイルからキューファイルを回復する場合について説明します。

次に示すとおりコマンドを入力します。

mqafrc -s -e -f mappingfile /jnlf001

jnlf001を入力として,回復先キューファイルが回復されます。

キューファイル回復の流れについて,次の図に示します。

図2-12 キューファイル回復の流れ(キューファイル格納媒体損傷以外の場合)

[図データ]

(14) キューファイルの削除

キューファイルを削除する場合は,mqadelコマンドを使用します。mqadelコマンドを実行すると,指定したキューファイルに対応するメッセージ情報管理ファイルとキューファイルの二つが削除されます。

オンラインで使用中のキューファイルは削除できません。オンラインで使用中のキューファイルを指定した場合,エラーになります。

(15) キューファイル二重化構成

MQAサービス定義のmqaquegrp定義コマンドで,指定したキューファイル名(A系ファイル名)に対するバックアップキューファイル名(B系ファイル名)を指定できます。この指定によって,A系またはB系のどちらかのキューファイルに障害が発生すると,もう一方の系統のキューファイルを使用して運用を行います。キューファイルの二重化は,ユーザアプリケーションが意識することなく行われます。また,キューファイルは,同期を取って更新しているので,A系またはB系だけに,メッセージが残ったり消えたりすることはありません。

障害が発生したファイルを回復する場合はmqarcvrコマンドを使用します。これによって,現在使用中の系統キューファイルと情報が同じになります。

ファイル障害の詳細については,「7.1.4 キューファイルの入出力エラー」を参照してください。

注意
A系またはB系の物理ファイルは複数のディスクに分散させて作成してください。一つのディスク上に同じ系統のすべての物理ファイルを作成すると,ディスクの全面障害が発生した場合,その系統は使用できません。

キューファイル二重化構成は,次に示すどちらかの手順で定義および作成します。

手順1
  1. mqabkupコマンドでキューファイルをバックアップします。
  2. 1.でバックアップしたキューファイルをmqarstrコマンドでリストアします。これがバックアップキューファイル(B系ファイル)になります。
  3. 1.および2.で作成したキューファイルの名前をMQAサービス定義のmqaquegrp定義コマンドにA系ファイル名およびB系ファイル名として指定します。
手順2
  1. mqainitコマンドでA系ファイルおよびB系ファイルを作成します。
    同じオプション指定値でキューファイルを作成してください。
  2. A系ファイルおよびB系ファイルについて,MQAサービス定義のmqaqueatl定義を作成します。
    モデルキューの定義名およびキューファイル名以外のオプション指定値は同じにしてください。
  3. mqamkqueコマンドで同じ名前のキューを作成します。
  4. 1.で作成したキューファイルの名前をMQAサービス定義のmqaquegrp定義コマンドにA系ファイル名およびB系ファイル名として指定します。

なお,キューファイル二重化構成は,キューファイル二重化構成しない場合に比べて性能が低下します。

(16) キューファイルグループの使用状況表示

キューファイルグループの使用状況を表示する場合は,mqadfコマンドを使用します。表示されるキューファイルグループの使用状況の項目について,次に示します。

(17) キューファイルの情報表示

キューファイル名の一覧およびキューファイルの情報を表示する場合は,mqafillsコマンドを使用します。

mqafillsコマンドで-xオプションを指定すると,MQAサービスで使用中のすべてのキューファイル名が表示されます。mqafillsコマンドの-fオプションにキューファイル名を指定すると,指定したキューファイルの情報が表示されます。次に示す項目などが表示されます。

(18) キューファイルのコンバート

キューファイルをコンバートする場合は,mqaconvertコマンドを使用します。過去のバージョンで使用していたTP1/Message Queueのキューファイルを,現在のバージョンで使用する場合は,mqaconvertコマンドでキューファイルをコンバートする必要があります。

mqaconvertコマンドを使用すると,mqabkupコマンドでバックアップした旧バージョンのキューファイル(メッセージ情報管理ファイル(キューファイル名.cnt),およびメッセージファイル(キューファイル名.msg))を,最新バージョンのキューファイルへコンバートできます。なお,mqaconvertコマンドを使用する際は,次の点に注意してください。

キューファイルのコンバートは,次に示す手順で行います。

  1. 過去のバージョン環境で,mqabkupコマンドで変換元となるキューファイルをバックアップします。
  2. 使用したいバージョン環境に変更します。
  3. mqaconvertコマンドで,使用するキューファイルを変換します。

(19) メッセージの削除

キュー名に登録されているメッセージを削除する場合は,mqadelmsgコマンドを使用します。

(20) メッセージの表示

キュー名に登録されているメッセージ情報を表示する場合は,mqalsmsgコマンドを使用します。表示される情報の項目について,次に示します。