Hitachi

JP1 Version 12 JP1/Automatic Job Management System 3 運用ガイド


9.3.1 ISAMデータベースの再編成

ISAMデータベースは,データの実体を格納する「データファイル」と,アクセスを高速化できるように,データへのインデクスを管理する「キーファイル」から成り立っています。ISAMは,レコードを削除しても無効領域になるだけで,ファイルサイズが自動的に縮小されることはありません。

ISAMデータベースを使用すると,日々の運用で占有量が増えてしまうことによるファイルサイズの問題と,ファイルサイズの肥大化およびフラグメンテーション化によるジョブ実行性能の劣化の問題が発生します。また,突然の電源ダウンなどで強制停止された場合,ISAMファイルのインデクスが不整合となるおそれがあります。

これらの問題は,QUEUEジョブ,サブミットジョブ数に応じて適切な時期にISAMデータベースを再編成することで解決できます。

なお,JP1/AJS3 - AgentはJP1/AJS3のデータベースを持たないため,再編成の必要はありません。

注意事項
  • メンテナンスモードおよび自動再編成スクリプト(jpqautocond)による再編成

    対象の物理ホストもしくは論理ホストの作業ディレクトリがあるドライブ,またはパーティションに,再編成対象のISAMファイルの中で最もサイズが大きいファイルの2倍程度の空き容量が必要です。再編成時には,次のディレクトリを作業ディレクトリとして使用します。

    Windowsの場合

    QUEUEジョブ,サブミットジョブの実行環境のマネージャープロセス実行時のワークフォルダ

    UNIXの場合

    環境設定パラメーターWorkPathに指定したマネージャープロセス実行時のワークディレクトリ

    また,QUEUEジョブ,サブミットジョブの実行環境のデータベースディレクトリがあるドライブまたはパーティションに,再編成対象のISAMファイルの中で最もサイズが大きいファイルと同程度の空き容量が必要です。

  • jpqdbcondコマンドによる再編成

    ファイルをバックアップして保存した上で,再編成を実施してください。jpqdbcondコマンドは,-dオプションで指定したディレクトリを作業ディレクトリとして使用します。-dオプションで指定したディレクトリがあるドライブまたはパーティションには,再編成対象のジョブ実行環境のISAMキーファイルの中で最もサイズが大きいキーファイルの2倍以上の空き容量が必要です。また,ジョブ実行環境データベースディレクトリがあるドライブまたはパーティションには,再編成対象のジョブ実行環境のISAMファイルの中で最もサイズが大きいファイルと同程度の空き容量が必要です。

    -dオプションを指定しない場合は,OSの標準的なワークディレクトリを使用します。マニュアル「JP1/Base 運用ガイド」のJiscondコマンドの説明を参照してください。

〈この項の構成〉

(1) jajs_maintainコマンドで再編成する

バージョン07-00以降のJP1/AJS2 - ManagerおよびJP1/AJS3 - Managerでは,jajs_maintainコマンドによってマネージャー機能を縮退し,ISAMデータベースを再編成(メンテナンス)できます。マネージャー機能を縮退して再編成する方法では,稼働中のサービスに対してデータベースの切断要求を出し,データベースを切り離してから,安全にISAMデータベースを再編成できます。

ISAMデータベースを再編成するときは,jajs_maintainコマンドによるデータベースの再編成を推奨します。

jajs_maintainコマンドの詳細については,マニュアル「JP1/Automatic Job Management System 3 コマンドリファレンス 4. 特別な運用で使用するコマンド jajs_maintain」を参照してください。

(2) jpqautocondスクリプトを利用して再編成する

QUEUEジョブ,サブミットジョブの実行環境のデータベースは,ジョブ情報の保存日数で指定された日数を超過したジョブ情報については,自動的にレコードを削除します。レコードが削除されると,無効領域が発生します。データを格納する領域は再利用されますが,ISAMファイルのキー再利用機能を有効にしていない場合,キーファイルには無効領域が残ります。データベースを再編成することで,占有されたディスク領域を解放できます。また,無効領域が多くあるデータベースへアクセスするとディスクのI/O回数が増加し,性能が低下することがあります。これも再編成することで改善されます。

ジョブ実行環境データベースはjpqautocondスクリプトを使用して再編成します。

また,jpqdbcondコマンドでもQUEUEジョブ,サブミットジョブの実行環境のデータベースを再編成できます。その場合は,必ずバックアップを取得してから再編成してください。jpqdbcondコマンドの詳細については,マニュアル「JP1/Automatic Job Management System 3 コマンドリファレンス 3. 通常の運用で使用するコマンド jpqdbcond」を参照してください。

(a) 未使用領域率の表示と再編成の時期

QUEUEジョブ,サブミットジョブの実行環境の,データベースの未使用領域率の割合は,jpqdbcond -lコマンドで確認できます。ISAMファイルが使用中の場合は,jpqdbcond -Lコマンドで未使用領域率の割合を確認できます。ただし,jpqdbcond -Lコマンドで未使用領域率を表示した場合,未使用領域率の値に誤差が生じます。jpqdbcond -Lコマンドを使用する場合は,ジョブを多く実行する時期を避けて使用してください。

ISAMデータベースのキー再利用機能を有効にしていない場合,1日当たり1万件のジョブを実行し,ジョブ情報保存日数が7日とすると,ジョブ情報保存日数の経過後1日当たり,最大約86メガバイトの無効領域が発生します。この無効領域は,再利用されるデータファイル分を含みます。

運用を続けていく中で,キーファイル中に発生する無効領域のサイズが大きくなった場合には,データベースアクセスに要するファイル入出力時間が増えるため,性能が著しく劣化します。

QUEUEジョブ,サブミットジョブの実行環境のデータベースJPQJOBINFO.K02ファイルが20メガバイトを超えないように監視してください。20メガバイト超えても再編成をしないで運用を続けると,性能が急激に悪化することがあります。

なお,キー再利用機能を使用している場合,20メガバイトに到達することはほとんどありません。ただし,長時間運用によってキーファイル内の利用効率が低下すると,このサイズに達するおそれがあるため,ファイルサイズを監視することを推奨します。

また,データベース再編成の時期については,ジョブ情報の保存日数も目安にしてください。ジョブ情報の保存日数については,マニュアル「JP1/Automatic Job Management System 3 構築ガイド 20.5 ジョブ実行環境設定」を参照してください。

(b) 未使用領域サイズおよび未使用領域サイズしきい値の出力

QUEUEジョブ,サブミットジョブの実行環境の,データベースの未使用領域サイズは,jpqdbcond -iコマンドで確認できます。未使用領域サイズは通知メッセージに出力されます。

また,未使用領域サイズがしきい値に達しているかを,jpqdbcond -tコマンドで確認できます。未使用領域サイズしきい値に達していた場合は,警告メッセージが出力されます。

メッセージの出力先には,次の出力先を単独または組み合わせて指定できます。

  • 標準エラー出力

  • Windowsイベントログまたはsyslog

  • JP1イベント

ジョブを多く実行する時期を避けて,jpqdbcond -tコマンドをジョブとして定義・実行することで,定期的にISAMファイルの状態を確認できます。

(c) 再編成の手順

QUEUEジョブ,サブミットジョブの実行環境のデータベースの再編成手順を次に示します。

  1. JP1/AJS3サービスを停止する。

  2. 環境変数JP1_HOSTNAMEを設定する。

    論理ホストのデータベースを再編成する場合は,環境変数JP1_HOSTNAMEに論理ホスト名称を設定してください。

    物理ホストでデータベースを再編成する場合は,環境変数JP1_HOSTNAMEを設定しないでください。

  3. 次に示すスクリプトを実行する。または,jpqdbcondコマンドを実行する。

    Windowsの場合

    JP1/AJS3のインストール先フォルダ\bin\jpqautocond.bat

    UNIXの場合

    /opt/jp1ajs2/bin/jpqautocond

    注意事項

    次に示すスクリプトやコマンドを同時に実行しないでください。

    jpqautocond

    jpqdbcond -x -k

    jajs_maintain -m manager