17.5.8 ISAMファイルの再作成

ISAMファイルが不正になった場合の再作成の方法について説明します。

JP1/AJS2のスケジューラーデータベースやジョブ実行環境データベースのISAMファイルが不正になると,スケジューラーサービスが起動しない,キューを使用するジョブの起動に失敗するなどの問題が発生します。

スケジューラーデータベースに関してデータベースアクセスエラーのメッセージが出力されている場合は,(1)(ジョブ実行環境データベースの再作成とJP1/AJS2のコールドスタート処理を含みます)に従って対処してください。

スケジューラーサービスのエラーメッセージが出力されず,ジョブ実行環境だけでエラーになっている場合は,(2)の対処を実施するだけで対処できます。

<この項の構成>
(1) スケジューラーデータベースの再作成手順
(2) ジョブ実行環境データベース再作成手順

(1) スケジューラーデータベースの再作成手順

スケジューラーデータベースをISAMで使用している場合の再作成手順を次に示します。スケジューラーデータベースを再作成する場合は,スケジューラーの管理情報に依存するジョブ実行環境データベースも再作成する必要があります。なお,再作成後は,登録されていたジョブネットがすべて登録解除されるため,必要に応じてジョブネットの再登録が必要となります。

スケジューラーデータベースは,ジョブネットやジョブの定義情報を保持する「定義系」のISAMファイルと,ジョブネットやジョブの実行予実績情報を保持する「実行系」のISAMファイルから成り立ちます。ISAMファイルの破壊状況によって,復旧方法が異なります。スケジューラーデータベースの破壊状況はISAMファイルの整合性を検証するJischkコマンドを実行して確認します。Jischkコマンドについては,マニュアル「JP1/Base 運用ガイド」を参照してください。

表17-17 スケジューラーデータベースの破壊状況と復旧方法

破壊状況実行系ファイルの破壊定義系ファイルの破壊復旧方法リカバリーに必要な情報
パターン1ありなしJP1/AJS2サービスのコールドスタートなし
パターン2-(定義系破壊時,実行系無条件再作成が必要)ありデータベース再作成ユニット定義情報
スケジューラーサービスの環境設定パラメーターのテーブル名プリフィックス(TABLENAMEPREFIX)に「AJS」,テーブルID(TABLENAMEPOSTFIX)指定なしの標準設定の場合,テーブル名は次のようになります。
 実行系ファイル:AJSSTAT,AJSENTRY,AJSGEN,AJSPERF
 定義系ファイル:AJSUNIT,AJSARROW,AJSBODY,AJSSCH,AJSCAL
JP1/AJS2のデータベースの詳細については,「15.14.1 JP1/AJS2のデータベースについて」を参照してください。

定義系ファイルの破壊がある場合は,スケジューラーデータベースのすべての情報を再作成しなければならないため,ユニット定義情報のバックアップを取得してあることが前提となります。

バックアップ方法については,「11.2 JP1/AJS2を使用するシステムの設定情報のバックアップ」を参照してください。

次の手順で再作成してください。

  1. スケジューラーデータベースディレクトリを取得する。
    スケジューラーデータベースディレクトリが不明な場合は,ajsstatusコマンドを実行し,「データベースファイル格納ディレクトリ」を取得します。

    ajsstatus -F スケジューラーサービス名

    ajsstatusコマンドによってデータベースディレクトリが取得できない場合は,設定されている環境設定パラメーターを参照してください。
    Windowsの場合
    スケジューラーデータベースディレクトリは,[マネージャー環境設定]ダイアログボックスの[スケジューラーファイルの構成]-[データベースディレクトリ名]に指定したフォルダです。デフォルトは,物理ホストの場合は「JP1/AJS2 - Managerのインストール先フォルダ¥database¥schedule¥AJSROOT1」,論理ホストの場合は「共有フォルダ¥jp1ajs2¥database¥schedule¥スケジューラーサービス名」です。
    UNIXの場合
    スケジューラーデータベースディレクトリは,[{JP1_DEFAULT|論理ホスト名}¥JP1AJSMANAGER¥スケジューラーサービス名]のAJSDBDIRECTORYパラメーターに指定したディレクトリです。
    jbsgetcnf [-h 論理ホスト名]コマンドで取得したパラメーターから該当するスケジューラーサービスのデータベースディレクトリ名を検索してください。
    デフォルトは,物理ホストの場合は「/var/opt/jp1ajs2/database/schedule/AJSROOT1」,論理ホストの場合は「共有ディレクトリ/jp1ajs2/database/schedule/スケジューラーサービス名」です。
    注※
     「-h 論理ホスト名」は使用環境に応じて指定してください。
  2. JP1/AJS2サービスおよびJP1/AJS2 Monitorサービスを停止する。また,該当するスケジューラーサービスに接続している連携製品からのアクセスをすべて停止する。
  3. ジョブ実行環境データベースを再作成する。
    (2) ジョブ実行環境データベース再作成手順」の手順に従って,ジョブ実行環境データベースを再作成してください。この場合,(2)の手順6にあるJP1/AJS2の再起動を行う必要はありません。JP1/AJS2サービスを再起動した場合は,再度JP1/AJS2サービスを停止してください。
  4. スケジューラーデータベースのISAMファイルの破壊状況を検証する。
    (a) 対象のスケジューラーサービスのデータベースディレクトリに移動する。
    cd スケジューラーデータベースディレクトリ
    (b) JP1/BaseのJischkコマンドを実行する。
    Windowsの場合
    Jischk -l 3 *.KDF
    UNIXの場合
    /opt/jp1base/bin/Jischk -l 3 *.DEF
    KAIU019-IおよびKAIU020-Iが出力されたISAMファイルは正常です。
    ファイル破壊が実行系ファイルだけか,定義系ファイルに及ぶかを判断してください。
    定義系ファイルも破壊されている場合は,手順6に進んでください。
    注意事項
    KAIU012-Eが出力される場合は,JP1/AJS2 - Viewからの接続やジョブネットワーク要素を操作するコマンドの実行によって,ファイルが使用中であることを示します。すべてのJP1/AJS2 - Viewからの接続を切断し,ジョブネットワーク要素を操作するコマンドが実行されていない状態で,再度Jischkコマンドを使用して検証してください。
  5. 実行系ファイルだけが破壊されている場合は,JP1/AJS2サービスをコールドスタートする。
    (a) 対象の物理ホストまたは論理ホストに含まれるスケジューラーサービス数が1個の場合
    Windowsの場合
    (1) [管理ツール]から[サービス]を選択する。
    (2) 起動させたいJP1/AJS2のサービス名を選択する。
    (3) [スタートアップ パラメータ]に-cold を指定する。
    (4) [開始]ボタンをクリックする。
    UNIXの場合
    jajs_spmdコマンドに-coldオプションを指定して実行する。
    (b) 対象の物理ホストまたは論理ホストに含まれるスケジューラーサービスが複数ある場合(ISAMファイルが破壊されているスケジューラーサービスだけをコールドスタートし,ほかのスケジューラーサービスへの影響を少なくする場合)
    JP1/AJS2サービスは通常どおり開始し,ISAMファイルが破壊されているスケジューラーサービスだけをコールドスタートします。
    Windowsの場合
    (1) [マネージャー環境設定]ダイアログボックスで該当する論理ホストの[スケジューラーサービスの制御]で,ISAMファイルが破壊されているスケジューラーサービスを選択し,「JP1/AJS2 - Manager起動時の自動起動」の設定を「いいえ」に変更する。[OK]をクリックし,設定を保存する。
    (2) JP1/AJS2 サービスを起動する。
    (3) JP1/AJS2 サービスが正常に開始したら,ISAMファイルが破壊されているスケジューラーサービスをコールドスタートする。
      ajsstart -F スケジューラーサービス名 -c
    (4) スケジューラーサービスが正常に開始した場合は,(1)で設定した「JP1/AJS2 - Manager起動時の自動起動」オプションを「はい」に戻す。
    UNIXの場合
    (1) 次に示すファイル(以降の説明ではautostart.confとします)を作成する。
    下線部にはISAMファイルの破壊されている論理ホスト名とスケジューラーサービス名を指定してください。
    物理ホストの場合
    [JP1_DEFAULT¥JP1AJSMANAGER¥スケジューラーサービス名]
    AUTOSTART="no"
    論理ホストの場合
    [論理ホスト名¥JP1AJSMANAGER¥スケジューラーサービス名]
    AUTOSTART="no"
    (2) (1)で作成したファイルを共通定義に反映する。
     /opt/jp1base/bin/jbssetcnf autostart.conf
    (3) jajs_spmdコマンドを実行しJP1/AJS2 サービスを起動する。
    (4) JP1/AJS2 サービスが正常に開始したら,ISAMファイルが破壊されているスケジューラーサービスをコールドスタートする。
     ajsstart -F スケジューラーサービス名 -c
    (5) スケジューラーサービスが正常に開始した場合は,(1)で準備したファイルを次のように元の設定値に戻す。
    物理ホストの場合
    [JP1_DEFAULT¥JP1AJSMANAGER¥スケジューラーサービス名]
    AUTOSTART="yes"
    論理ホストの場合
    [論理ホスト名¥JP1AJSMANAGER¥スケジューラーサービス名]
    AUTOSTART="yes"
    (6) (5)で編集したファイルを共通定義に反映する。
     /opt/jp1base/bin/jbssetcnf autostart.conf
    JP1/AJS2サービスおよびスケジューラーサービスが運用中の状態になれば,再作成は終了です。必要に応じてJP1/AJS2 Monitorサービスなどの関連サービスを再開し,ジョブネットの再登録を実施してください。
    JP1/AJS2サービスのコールドスタートが失敗した場合は,ISAMファイルを再作成する必要があります。JP1/AJS2サービスが不完全に起動した場合は,いったんサービスを停止してください。ユニット定義情報のバックアップを取得していない場合は,この時点でajsprintコマンドを使用して定義情報をバックアップしてください(Windowsの場合は,ajsprintコマンドを実行する間だけ,一時的にJP1/AJS2 Monitorサービスを起動してください)。
    引き続き手順6以降の再作成を続行してください。
    注意事項
    ajsprintコマンドを使用して定義情報を出力する場合は,該当するスケジューラーサービスのAJSPRINTNETSCHPRFパラメーターの値が「no」になっていることを確認してください。このパラメーターは08-00を新規にセットアップした環境では「no」がデフォルトで設定されていますが,08-00より前のバージョンからバージョンアップした環境では注意が必要です。
    AJSPRINTNETSCHPRFパラメーターの設定を変更した場合は,いったんJP1/AJS2 Monitorサービスを再起動し,ajsprintでのバックアップが終わった時点でJP1/AJS2 Monitorサービスを停止してください。
  6. 定義系ファイルに破壊がある場合,または手順5でコールドスタートに失敗した場合は,再作成を行う。
    注意事項
    この手順以降は,ユニット定義情報のバックアップを採取してあることが前提です。定義情報のバックアップがない場合は,初期状態から再構築する必要があります。
    (a) 対象のスケジューラーサービスディレクトリに移動する。
     cd スケジューラーデータベースディレクトリ
    (b) スケジューラーデータベースディレクトリから,ISAMファイルを削除する。
    Windowsの場合
    del *.DRF *.K01 *.K02 *.KDF
    UNIXの場合
    rm *.DAT *.K01 *.K02 *.DEF
    注意事項
    これらの拡張子以外のファイルを削除することや,データベース格納ディレクトリ全体の削除・移動は,行わないでください。
    (c) スケジューラーデータベースを再作成する。
     ajssetup -F スケジューラーサービス名 [-mh 論理ホスト名]
    注意事項
    (b)で誤ってスケジューラーデータベースディレクトリにあるISAMファイル以外のファイルを削除してしまった場合は,使用機能に応じて設定をリカバリーしてください。
    サスペンド機能を使用する場合
     ajssetup -F スケジューラーサービス名 -m [-mh 論理ホスト名]
    キューレスジョブを使用する場合
     ajsqlsetup -F スケジューラーサービス名 [-h 論理ホスト名]
    (d) JP1/AJS2 Monitorサービスを起動する。
    (e) バックアップしてあるユニット定義情報をajsdefineコマンドなどを使用して回復する。
    ルートジョブグループ(/)に設定されていた,基準時刻・基準日・月区分・カレンダー定義情報・所有者・JP1資源グループ・コメントなどもあわせて回復してください。
    リカバリー方法については,「11.3 JP1/AJS2を使用するシステムの設定情報のリカバリー」を参照してください。
    注※
    「-mh 論理ホスト名」,「-h 論理ホスト名」は使用環境に応じて指定してください。
  7. JP1/AJS2サービスをコールドスタートする。
    (a) 対象の物理ホストまたは論理ホストに含まれるスケジューラーサービス数が1個の場合
    Windowsの場合
    (1) [管理ツール]から[サービス]を選択する。
    (2) 起動させたいJP1/AJS2のサービス名を選択する。
    (3) [スタートアップ パラメータ]に-coldを指定する。
    (4) [開始]ボタンをクリックする。
    UNIXの場合
    jajs_spmdコマンドに-coldオプションを指定して実行する。
    (b) 対象の物理ホストまたは論理ホストに含まれるスケジューラーサービスが複数ある場合(ISAMファイルが破壊されているスケジューラーサービスだけをコールドスタートし,他のスケジューラーサービスへの影響を少なくする場合)
    JP1/AJS2サービスは通常どおり開始し,ISAMファイルが破壊されているスケジューラーサービスだけをコールドスタートします。
    Windowsの場合
    (1) [マネージャー環境設定]ダイアログボックスで該当する論理ホストの[スケジューラーサービスの制御]で,ISAMファイルが破壊されているスケジューラーサービスを選択し,「JP1/AJS2 - Manager起動時の自動起動」の設定を「いいえ」に変更する。[OK]をクリックし,設定を保存する。
    (2) JP1/AJS2 サービスを起動する。
    (3) JP1/AJS2 サービスが正常に開始したら,ISAMファイルが破壊されているスケジューラーサービスをコールドスタートする。
     ajsstart -F スケジューラーサービス名 -c
    (4) スケジューラーサービスが正常に開始した場合は,(1)で設定した「JP1/AJS2 - Manager起動時の自動起動」オプションを「はい」に戻す。
    UNIXの場合
    (1) 次に示すファイル(以降の説明ではautostart.confとします)を作成する。
    下線部にはISAMファイルの破壊されている論理ホスト名とスケジューラーサービス名を指定してください。
    物理ホストの場合
    [JP1_DEFAULT¥JP1AJSMANAGER¥スケジューラーサービス名]
    AUTOSTART="no"
    論理ホストの場合
    [論理ホスト名¥JP1AJSMANAGER¥スケジューラーサービス名]
    AUTOSTART="no"
    (2) (1)で作成したファイルを共通定義に反映する。
     /opt/jp1base/bin/jbssetcnf autostart.conf
    (3) jajs_spmdコマンドを実行しJP1/AJS2サービスを起動する。
    (4) JP1/AJS2 サービスが正常に開始したら,ISAMファイルが破壊されているスケジューラーサービスをコールドスタートする。
     ajsstart -F スケジューラーサービス名 -c
    (5) スケジューラーサービスが正常に開始した場合は,(1)で準備したファイルを次のように元の設定値に戻す。
    物理ホストの場合
    [JP1_DEFAULT¥JP1AJSMANAGER¥スケジューラーサービス名]
    AUTOSTART="yes"
    論理ホストの場合
    [論理ホスト名¥JP1AJSMANAGER¥スケジューラーサービス名]
    AUTOSTART="yes"
    (6) (5)で編集したファイルを共通定義に反映する。
    /opt/jp1base/bin/jbssetcnf autostart.conf

なお,サービス起動後は,必要に応じてジョブネットの再登録を行ってください。

(2) ジョブ実行環境データベース再作成手順

ジョブ実行環境で使用するデータベースの再作成手順を次に示します。

  1. JP1/AJS2サービスが停止していることを確認します。
  2. jpqexportコマンドでジョブ実行環境の定義情報を退避する。
    Windowsの場合
    jpqexport [-mh 論理ホスト名] -dt isam -co jpqsetup.conf
    UNIXの場合
    /opt/jp1ajs2/bin/jpqexport [-mh 論理ホスト名] -dt isam -co jpqsetup.conf
    ファイル名は任意ですが,管理のためjpqsetup.confを使用することを推奨します。
    注※
    「-mh 論理ホスト名」は使用環境に応じて指定してください。
    なお,ISAMファイルの破壊状況によっては,jpqexportコマンドによるアクセスもエラーになる場合があります。ジョブ実行環境構成定義ファイル(jpqsetup.conf)のバックアップがある場合はこれを使用してください。バックアップがない場合は,マニュアル「JP1/Automatic Job Management System 2 セットアップガイド 20. セットアップ時に使用するコマンド jpqimport」に記載されているジョブ実行環境構成定義ファイルを作成してください。
  3. ジョブ実行環境のデータベース格納ディレクトリ配下のファイルと一時ファイルを削除する。
    Windowsの場合
    del ジョブ実行環境データベース格納ディレクトリ¥*※1
    del ジョブ実行環境マネージャープロセス実行時のワークディレクトリ¥M_JPQ*※2
    注※1 ジョブ実行環境データベース格納ディレクトリは,[マネージャー環境設定]ダイアログボックスの[ジョブ実行環境]の[データベース格納ディレクトリ名]に指定したフォルダです。
    デフォルトは,物理ホストの場合は「JP1/AJS2 - Managerのインストール先フォルダ¥database¥queue」,論理ホストの場合は「共有フォルダ¥jp1ajs2¥database¥queue」です。
    注※2 ジョブ実行環境マネージャープロセス実行時のワークディレクトリは,[マネージャー環境設定]ダイアログボックスの[ジョブ実行環境]の[マネージャープロセス実行時のワークディレクトリ名]に指定したフォルダです。デフォルトは,物理ホストの場合は「JP1/AJS2 - Managerのインストール先フォルダ¥tmp」,論理ホストの場合は「共有フォルダ¥jp1ajs2¥tmp」です。
    UNIXの場合
    rm ジョブ実行環境データベース格納ディレクトリ/*※1
    rm ジョブ実行環境マネージャープロセス実行時のワークディレクトリ/M_JPQ*※2
    注※1 ジョブ実行環境データベース格納ディレクトリは,[{JP1_DEFAULT|論理ホスト名}¥JP1NBQMANAGER¥Database]の"DatabasePath"に指定したディレクトリです。デフォルトは,物理ホストの場合は「/var/opt/jp1ajs2/database/queue」,論理ホストの場合は「共有ディレクトリ/jp1ajs2/database/queue」です。
    注※2 ジョブ実行環境マネージャープロセス実行時のワークディレクトリは,[{JP1_DEFAULT|論理ホスト名}¥JP1NBQMANAGER¥Process]の"WorkPath"に指定したフォルダです。デフォルトは,物理ホストの場合は「/var/opt/jp1ajs2/tmp」,論理ホストの場合は「共有ディレクトリ/jp1ajs2/tmp」です。
  4. jpqimportコマンドで,手順2で退避したファイルをジョブ実行環境の定義情報としてISAMファイルを再作成する。
    Windowsの場合
    jpqimport [-mh 論理ホスト名] -dt isam -ci jpqsetup.conf
    UNIXの場合
    /opt/jp1ajs2/bin/jpqimport [-mh 論理ホスト名] -dt isam -ci jpqsetup.conf
    注※
    「-mh 論理ホスト名」は使用環境に応じて指定してください。
  5. jpqimportコマンド実行時に出力されるメッセージを確認して,ISAMファイルの再作成に成功しているかどうか確認する。
    jpqimportコマンドが正常に終了していないと,JP1/AJS2サービスが起動できません。なお,不明な場合は,再度手順2のjpqexportコマンドで定義情報を出力し,再作成前に出力した定義情報とエージェント定義およびキュー定義について差異がないかを確認してください。
  6. ジョブ実行環境データベースの再作成だけを行う場合は,JP1/AJS2サービスを再起動する。
    スケジューラーデータベースの再作成も行う場合は,ここでJP1/AJS2サービスを再起動しないで,スケジューラーデータベースの再作成を続行してください。

ajssetup,ajsqlsetup,jpqexport,jpqimportコマンドの詳細については,マニュアル「JP1/Automatic Job Management System 2 セットアップガイド 20. セットアップ時に使用するコマンド」を参照してください。

jbsgetcnf,jbssetcnfコマンドの詳細については,マニュアル「JP1/Base 運用ガイド」を参照してください。