ユーザは,キューを使用してメッセージキューイング機能を実現します。キューの情報は,最終的には物理的なキューファイルに格納されます。ここでは,運用コマンドによるキューファイルの運用について説明します。
ユーザは,キューの情報を格納するためのキューファイルを,mqainitコマンドを使用して作成します。このとき,キャラクタ型スペシャルファイルまたはUNIXファイルのアクセス権は,所有者およびグループにリード・ライト権を与えてください。また,OpenTP1ファイルシステムのアクセス権はユーザ用に設定してください。アクセス権を正しく設定していない場合,KFCA31184-Eが出力されてOpenTP1の起動に失敗します。
mqainitコマンドを使用すると,二つの物理ファイルが作成されます。一つは,メッセージの管理情報が格納されるメッセージ情報管理ファイルです。もう一つは,メッセージ自身が格納されるメッセージファイルです。メッセージ情報管理ファイルとメッセージファイルの合計の最大格納容量は2ギガバイトです。また,OpenTP1ファイルシステムでも2ギガバイト以内で使用してください。
ユーザは,メッセージキューイングに使用するキューを作成する必要があります。
キューは,作成の方法によって,定義済みキューと動的キューに分けられます。
定義済みキューは,オンライン開始前にあらかじめmqamkqueコマンドを使用して作成しておきます。いったん作成すると,キューを削除するまでシステム内に存在します。
定義済みキューの作成方法について,次の図に示します。
図2-5 定義済みキューの作成
動的キューは,オンライン中にアプリケーションからMQOPEN命令で作成するキューです。
MQOPEN命令では,モデルキューの属性定義で指定したモデルキューの定義名を指定します。MQOPEN命令の詳細については,マニュアル「TP1/Message Queue プログラム作成リファレンス」を参照してください。
動的キューには,一時的動的キューと永続的動的キューがあります。一時的か永続的かは,モデルキューの属性定義(MQAサービス定義のmqaqueatl定義コマンド)で指定します。
キューを削除する場合は,mqadelqueコマンドを使用します。mqadelqueコマンドで,定義済みキューと動的キューの両方を削除できます。また,動的キューは,動的キューを作成したMQOPEN命令のアプリケーションが終了すると,自動的に削除されます。
キューの属性を変更する場合は,mqachgqueコマンドを使用します。mqachgqueコマンドで変更できるのは,ローカルキューの属性です。なお,キューの属性のうち,定義タイプは変更できません。
キューファイルには,次に示す状態があります。
キューファイルの状態とコマンドによる状態遷移について,次の図に示します。
図2-6 キューファイルの状態遷移
オブジェクトの属性を設定する場合は,mqasetコマンドを使用します。mqasetコマンドのコマンド引数によって,次に示すオブジェクトの属性を設定できます。
オブジェクトの属性を表示する場合は,mqainqコマンドを使用します。mqainqコマンドのオプションによって,次に示すオブジェクトの属性を表示できます。
オフラインの状態で,指定したキューファイルの管理部の情報を表示するには,mqafilinfコマンドを使用します。mqafilinfコマンドのオプションによって,次に示す情報を表示できます。
キューファイルを組み込む場合は,mqaaddコマンドを使用します。キューファイルを組み込むと,オンラインで使用できる状態になります。このあと,mqarlesコマンドを使用して閉塞状態を解除すると,キューファイルはアプリケーションから使用できる状態になります。
キューファイルを切り離す場合,mqarmコマンドを使用します。キューファイルを切り離すと,キューファイルの中のキューおよびメッセージは破棄されます。
-rオプションを指定すると,キューファイルを強制的に切り離せます。
mqaaddコマンドでキューファイルを組み込んだ直後は,キューファイルは論理閉塞状態です。閉塞状態を解除するために,mqarlesコマンドを使用します。
また,一時的障害閉塞を解除するには,mqarlesコマンドの-sオプションにtを指定します。
キューファイルをバックアップする場合は,mqabkupコマンドを使用します。mqabkupコマンドで指定したキューファイルがオンラインで使用中の場合,この操作はエラーになります。
バックアップしたファイルをリストアするには,mqarstrコマンドを使用します。
キューファイルの回復をMQA FRCといいます。MQA FRCは,mqafrcコマンドで実行します。MQA FRCはキューファイルの障害要因により回復方法が異なります。
なお,mqafrcコマンドの実行を含むキューファイルの回復手順については,「7.1.4 キューファイルの入出力エラー」を参照してください。
キューファイル格納媒体損傷の場合,次に示す資源が必要です。
回復方法については,「2.2.2(12) mqafrcコマンドの使用例(キューファイル格納媒体損傷の場合)」を参照してください。
キューファイル格納媒体損傷以外の場合,次に示す資源が必要です。
回復方法については,「2.2.2(13) 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:世代番号)
ファイル分割されていないアンロードジャーナルファイルからキューファイルを回復する場合について説明します。
次に示すとおりコマンドを入力します。
mqafrc -s -e -f mappingfile /jnlf001
jnlf001を入力として,回復先キューファイルが回復されます。
キューファイル回復の流れについて,次の図に示します。
図2-7 キューファイル回復の流れ(キューファイル格納媒体損傷の場合)
三つのファイルに分割されているアンロードジャーナルファイルから,キューファイルを1回のコマンド入力で回復する場合について説明します。
次に示すとおりコマンドを入力します。
mqafrc -s -e -f mappingfile /jnlf001 /jnlf002 /jnlf003
jnlf001,jnlf002,およびjnlf003を入力として,回復先キューファイルが回復されます。
複数のアンロードジャーナルファイルとキューファイル回復の流れについて,次の図に示します。
図2-8 複数のアンロードジャーナルファイルとキューファイル回復の流れ
四つのファイルに分割されているアンロードジャーナルファイルから,キューファイルを3回のコマンド入力で回復する場合について説明します。
mqafrc -s -f mappingfile /jnlf001 /jnlf002
mqafrc -f mappingfile /jnlf003
mqafrc -e -f mappingfile /jnlf004
この場合,3回目のmqafrcコマンドが完了するまで,回復対象キューファイル定義ファイルmappingfileの内容を変更しないでください。
引き継ぎファイルを使用するキューファイル回復の流れについて,次の図に示します。図中の番号は何回目のコマンド入力による動作であるかを表します。
図2-9 引き継ぎファイルを使用するキューファイル回復の流れ
世代番号が1のアンロードジャーナルファイルは使用しないで,世代番号2以降のアンロードジャーナルファイルを使用してキューファイルを回復する場合について説明します。
次に示すとおりコマンドを入力します。
mqafrc -s -e -g -f mappingfile /jnlf002 /jnlf003
jnlf002およびjnlf003を入力として,回復先キューファイルが回復されます。
アンロードジャーナルファイルの世代番号とキューファイル回復の流れについて,次の図に示します。
図2-10 アンロードジャーナルファイルの世代番号とキューファイル回復の流れ
キーを指定してキューファイルを回復する場合について説明します。
次に示すとおりコマンドを入力します。
mqafrc -s -k 005 -f mappingfile /jnlf001
mqafrcコマンドに-kオプションを指定すると,mqafrcコマンドが作成する引き継ぎファイルの名称の一部を指定できます。2回目以降のMQA FRCでこの引き継ぎファイルを使用する場合は,前回と同じキーを指定してください。
引き継ぎファイルのキーの指定とキューファイル回復の流れについて,次の図に示します。
図2-11 引き継ぎファイルのキーの指定とキューファイル回復の流れ
障害要因がキューファイル格納媒体損傷以外の場合の,mqafrcコマンドの使用例について説明します。使用例で指定する回復対象キューファイル定義ファイル(ファイル名mappingfile)は,次に示すとおり記述します。
mqafilmap /dev/rdsk/rhd031/rcvf1
この定義例では,回復対象キューファイル名および回復先キューファイル名はともに/dev/rdsk/rhd031/rcvf1です。回復先キューファイル名には,実際に回復させるキューファイル名を指定します。mqafrcコマンドを実行する場合には回復先キューファイルが存在している必要があります。キューファイル/dev/rdsk/rhd031/rcvf1は障害発生直前の状態に回復されます。
mqafrcコマンドに指定するアンロードジャーナルファイル名は次に示すとおりとします。
jnlf001,jnlf002,…,jnlf00n…(n:世代番号)
ファイル分割されていないアンロードジャーナルファイルからキューファイルを回復する場合について説明します。
次に示すとおりコマンドを入力します。
mqafrc -s -e -f mappingfile /jnlf001
jnlf001を入力として,回復先キューファイルが回復されます。
キューファイル回復の流れについて,次の図に示します。
図2-12 キューファイル回復の流れ(キューファイル格納媒体損傷以外の場合)
キューファイルを削除する場合は,mqadelコマンドを使用します。mqadelコマンドを実行すると,指定したキューファイルに対応するメッセージ情報管理ファイルとキューファイルの二つが削除されます。
オンラインで使用中のキューファイルは削除できません。オンラインで使用中のキューファイルを指定した場合,エラーになります。
MQAサービス定義のmqaquegrp定義コマンドで,指定したキューファイル名(A系ファイル名)に対するバックアップキューファイル名(B系ファイル名)を指定できます。この指定によって,A系またはB系のどちらかのキューファイルに障害が発生すると,もう一方の系統のキューファイルを使用して運用を行います。キューファイルの二重化は,ユーザアプリケーションが意識することなく行われます。また,キューファイルは,同期を取って更新しているので,A系またはB系だけに,メッセージが残ったり消えたりすることはありません。
障害が発生したファイルを回復する場合はmqarcvrコマンドを使用します。これによって,現在使用中の系統キューファイルと情報が同じになります。
ファイル障害の詳細については,「7.1.4 キューファイルの入出力エラー」を参照してください。
キューファイル二重化構成は,次に示すどちらかの手順で定義および作成します。
なお,キューファイル二重化構成は,キューファイル二重化構成しない場合に比べて性能が低下します。
キューファイルグループの使用状況を表示する場合は,mqadfコマンドを使用します。表示されるキューファイルグループの使用状況の項目について,次に示します。
キューファイル名の一覧およびキューファイルの情報を表示する場合は,mqafillsコマンドを使用します。
mqafillsコマンドで-xオプションを指定すると,MQAサービスで使用中のすべてのキューファイル名が表示されます。mqafillsコマンドの-fオプションにキューファイル名を指定すると,指定したキューファイルの情報が表示されます。次に示す項目などが表示されます。
キューファイルをコンバートする場合は,mqaconvertコマンドを使用します。過去のバージョンで使用していたTP1/Message Queueのキューファイルを,現在のバージョンで使用する場合は,mqaconvertコマンドでキューファイルをコンバートする必要があります。
mqaconvertコマンドを使用すると,mqabkupコマンドでバックアップした旧バージョンのキューファイル(メッセージ情報管理ファイル(キューファイル名.cnt),およびメッセージファイル(キューファイル名.msg))を,最新バージョンのキューファイルへコンバートできます。なお,mqaconvertコマンドを使用する際は,次の点に注意してください。
キューファイルのコンバートは,次に示す手順で行います。
キュー名に登録されているメッセージを削除する場合は,mqadelmsgコマンドを使用します。
キュー名に登録されているメッセージ情報を表示する場合は,mqalsmsgコマンドを使用します。表示される情報の項目について,次に示します。