ACTIVE_JOB_INFO テーブル関数

ACTIVE_JOB_INFO テーブル関数は、すべてのアクティブ・ジョブに対して 1 行を返します。

返される情報は、活動ジョブ処理 (WRKACTJOB) コマンドで表示される詳細に似ています。ACTIVE_JOB_INFO テーブル関数には、以下の 2 つの用途があります。
  1. アクティブ・ジョブの全部またはサブセットの詳細を確認するため。オプションのフィルター・パラメーターを使用して、アクティブ・ジョブのサブセットを要求できます。
  2. アクティブ・ジョブの経過統計を測定するため。WRKACTJOB コマンドの F10 統計の再始動関数と同様に、オプション・パラメーターを使用して統計をリセットできます。測定は、この新規開始点に基づいて計算されます。
構文図を読む構文図をスキップする
>>-ACTIVE_JOB_INFO--(------------------------------------------->

>--+----------------------------------------------+------------->
   '-+------------------------+--reset_statistics-'   
     '-RESET_STATISTICS-- => -'                       

>--+-----------------------------------------------------------+-->
   '-,--+-----------------------------+--subsystem_list_filter-'   
        '-SUBSYSTEM_LIST_FILTER-- => -'                            

>--+-----------------------------------------------+------------>
   '-,--+-----------------------+--job_name_filter-'   
        '-JOB_NAME_FILTER-- => -'                      

>--+-----------------------------------------------------------------+-->
   '-,--+--------------------------------+--current_user_list_filter-'   
        '-CURRENT_USER_LIST_FILTER-- => -'                               

>--)-----------------------------------------------------------><

スキーマは QSYS2 です。
reset_statistics
値として YES または NO が入る文字またはグラフィック・ストリング式。

このパラメーターの値が YES の場合、この照会実行の時刻が新しいベースラインとして使用されるように、統計がリセットされます。この接続内で ACTIVE_JOB_INFO を今後呼び出すと、新しいベースラインに基づいた統計詳細が返されます。このパラメーターの値が NO の場合、subsystem_list_filter または job_name_filter パラメーターの値が前の呼び出しと異なるものでない限り、呼び出しで統計はリセットされません。フィルター値を変更すると、常に統計がリセットされます。このパラメーターが指定されていない場合、デフォルトは NO です。

リセットが明示的に要求されたかどうかに関係なく、接続内の ACTIVE_JOB_INFO の最初の呼び出しは常に暗黙のリセットを実行します。

subsystem_list_filter
単一のコンマで区切られた、最大 25 個のサブシステム名のリストが入った文字またはグラフィック・ストリング式。このフィルターは、ジョブ情報を返すために使用するサブシステムを決定します。

このパラメーターが指定されていないか、空ストリング、または NULL 値の場合、すべてのサブシステムに関する情報が戻されます。

job_name_filter
返すジョブ情報を決定する非修飾ジョブ名を含む文字またはグラフィック・ストリング式。名前は総称にすることができます。
このストリングは、次の特殊値のいずれかにすることができます。
*
現行ジョブの情報だけが戻されます。
*ALL
すべてのジョブの情報が戻されます。
*CURRENT
現行ジョブと同じジョブ名を持つすべてのジョブの情報が戻されます。
*SBS
すべてのアクティブなサブシステム・モニターの情報が戻されます。
*SYS
すべてのアクティブなシステム・ジョブの情報が戻されます。この値を使用する場合、subsystem_list_filter は指定しないか、NULL 値でなければなりません。

このパラメーターが指定されていないか、空ストリング、または NULL 値の場合、すべてのジョブに関する情報が戻されます。

current_user_list_filter
単一のコンマで区切られた、最大 10 個のユーザー・プロファイル名のリストが入った文字またはグラフィック・ストリング式。このフィルターは、ジョブ情報を返すために使用する現行ユーザー値を決定します。

このパラメーターが指定されていないか、空ストリング、または NULL 値の場合、すべてのユーザーに関する情報が戻されます。

この関数の結果は、以下の表に示された形式の複数行を含むテーブルです。列はすべて NULL 可能です。

表 1. ACTIVE_JOB_INFO テーブル関数
列名 データ・タイプ 説明
ORDINAL_POSITION INTEGER 各行の固有番号。
JOB_NAME VARCHAR(28) ジョブの修飾名。
INTERNAL_JOB_ID BINARY(16) 内部ジョブ ID。
SUBSYSTEM VARCHAR(10) ジョブが実行されているサブシステムの名前。

ジョブがシステム・ジョブの場合は、NULL 値が入ります。

SUBSYSTEM_LIBRARY_NAME VARCHAR(10) サブシステム記述が入っているライブラリー。

ジョブがシステム・ジョブの場合は、NULL 値が入ります。

AUTHORIZATION_NAME VARCHAR(10) この時点で初期スレッドが実行されているユーザー・プロファイル。ユーザー・プロファイルをスワップするジョブの場合、このユーザー・プロファイル名と、ジョブを開始したユーザー・プロファイルは異なることがあります。
JOB_TYPE VARCHAR(3) アクティブ・ジョブのタイプ。
ASJ
自動開始
BCH
バッチ
BCI
即時バッチ
EVK
プロシージャー開始要求によって開始された
INT
対話式
M36
アドバンスト36サーバー・ジョブ
MRT
複数要求元端末
PJ
事前開始ジョブ
PDJ
印刷ドライバー・ジョブ
RDR
スプール読み取りプログラム
SBS
サブシステム・モニター
SYS
システム
WTR
スプール書き出しプログラム
FUNCTION_TYPE VARCHAR(3) FUNCTION 列に記述されている機能のタイプ。
CMD
FUNCTION 列には、実行されているコマンドの名前が入ります。
DLY
ジョブの初期スレッドは,DLYJOB(ジョブ延期)コマンドを実行中です。FUNCTION 列には、ジョブが遅延している秒単位の時間 (最大 999999 秒)、またはジョブが処理を再開する時刻 (hh:mm:ss) が入ります。
GRP
FUNCTION 列には、延期されたグループ・ジョブのグループ名が入ります。
I/O
ジョブは,サインオン表示ファイルのためにワークステーションに対して入出力操作(I/O)を実行しているサブシステム・モニターです。 FUNCTION 列には、ワークステーション装置の名前が入ります。
IDX
FUNCTION 列には、索引再作成操作に関連したファイルの名前が入ります。
JVM
ジョブの初期スレッドはJAVA仮想マシンを実行しています。 FUNCTION 列には、Java クラスの名前が入ります。
LOG
FUNCTION 列には、QHST が入ります。これは、ヒストリー情報のログがデータベース・ファイルに記録されていることを示します。
MNU
FUNCTION 列には、メニューの名前が含まれます。
MRT
ジョブは、複数要求元端末 (MRT) ジョブ (JOB_TYPE が BCH の場合) か、MRT ジョブに接続された対話式ジョブ (JOB_TYPE が INT の場合) のいずれかです。
MRT ジョブの場合、FUNCTION 列には、以下のフォーマットの情報が入ります。
  • CHAR(2): MRT ジョブに現在接続されている要求元の数。
  • CHAR(1): / (スラッシュ) が入ります。
  • CHAR(2): 要求元の最大数。
  • CHAR(1): ブランクが入ります。
  • CHAR(3): 非終止プログラム (NEP) 標識。値 NEP は、非終止プログラムを示します。値がブランクの場合は、非終止プログラムではないことを示します。
  • CHAR(1): ブランクが入ります。

MRT に接続されている対話式ジョブの場合、FUNCTION 列には、MRT プロシージャーの名前が入ります。

PGM
FUNCTION 列には、プログラムの名前が入ります。
PRC
FUNCTION 列には、プロシージャーの名前が入ります。
USR
FUNCTION 列には、現行ジョブの変更 (QWCCCJOB) API で設定されたユーザー指定関数が入ります。

これらの値がいずれも該当しない場合は、NULL 値が入ります。

FUNCTION VARCHAR(10) 初期スレッドによって開始された最後の高水準機能。

FUNCTION_TYPE が NULL でない場合は、FUNCTION_TYPE 列によって定義された値が含まれています。それ以外の場合は、以下のいずれかの値が含まれます。

ADLACTJOB
補助記憶装置には,QADLACTJシステム値に指定されている活動ジョブ数が割り振られています。
ADLTOTJOB
補助記憶装置には,QADLTOTJシステム値に指定されているジョブ数が割り振られています。
CMDENT
コマンド入力画面が使用されています。
COMMIT
ジョブの初期スレッドはコミット操作を実行中です。
DIRSHD
このジョブはディレクトリーのシャドーイング機能のもとで実行されます。
DLTSPF
スプール・ファイルの削除中です。
DUMP
ダンプが実行中です。
JOBIDXRCY
損傷のあるジョブ索引が回復されています。
JOBLOG
ジョブ・ログが作成されています。
JOBLOGQRCY
ジョブ・ログ・サーバー待ち行列は回復中または再ビルド中です。
PASSTHRU
ジョブはパススルー・ジョブです。
RCLSPLSTG
空のスプール・データベース・メンバーの削除中です。
ROLLBACK
ジョブの初期スレッドはロールバック操作を実行中です。
SPLCLNUP
ジョブ待ち行列およびスプール・ファイル上のジョブのクリーンアップが実行されます。

ログに記録された関数が実行されていない場合は、NULL 値が入ります。

JOB_STATUS VARCHAR(4) ジョブの初期スレッドの状況。 以下のリストには、ごく一般的な値の一部が含まれています。 値の完全なリストについては、『Work Management API Attribute Descriptions in Application Programming Interfaces』を参照してください
CMNW
通信装置に対する入出力操作の完了を待機中です。
CNDW
ハンドル・ベース条件を待機中です。
DEQW
待ち行列からの除去操作の完了を待機中です。
DLYW
ジョブ延期(DLYJOB)コマンドのために,ジョブの初期スレッドは,ある時間間隔の終わりまで,あるいは特定の延期終了時刻まで待機状態で延期されています。
DSPW
ワークステーション画面からの入力を待機中です。
END
ジョブが *IMMED オプションで終了したか、またはその遅延時間が *CNTRLD オプションで終了しました。
EOJ
ジョブ終了 (ENDJOB) またはサブシステム終了 (ENDSBS) コマンドの実行以外の理由で終了中です。
EVTW
イベントを待機中です。
HLD
ジョブは保留中です。
JVAW
Java プログラム操作の完了を待機中です。
LCKW
ロックを待機中です。
LSPW
ロック・スペースの接続を待機中です。
MSGW
メッセージ待ち行列からのメッセージを待機中です。
MTXW
mutex を待機中です。
PSRW
プログラム開始要求を待機中の事前開始ジョブ。
RUN
ジョブは現在実行中です。
SEMW
セマフォーを待機中です。
THDW
別のスレッドが操作を完了するのを待機中です。
MEMORY_POOL VARCHAR(9) 割り振られるジョブの主記憶域が取られるシステム関連プールの ID。
RUN_PRIORITY INTEGER ジョブの実行優先順位。
THREAD_COUNT INTEGER ジョブ中で活動状態のスレッドの数。
TEMPORARY_STORAGE INTEGER 現在このジョブに割り振られている一時記憶域の容量 (メガバイト単位)。
CPU_TIME DECIMAL(20,0) ジョブが使用している合計処理単位時間 (ミリ秒)。
TOTAL_DISK_IO_COUNT DECIMAL(20,0) すべての経路指定ステップにわたってジョブが実行したディスク入出力操作の総数。これは、非同期と同期ディスク入出力の合計です。
ELAPSED_INTERACTION_COUNT INTEGER 対話の数。これは、測定時間間隔中の操作員の対話の数です。

ジョブが対話式でない場合は、NULL 値が入ります。

ELAPSED_TOTAL_RESPONSE_TIME INTEGER 測定時間間隔における合計応答時間 (秒)。

ジョブが対話式でない場合は、NULL 値が入ります。

ELAPSED_TOTAL_DISK_IO_COUNT DECIMAL(20,0) 測定時間間隔中にジョブによって実行されたディスク入出力操作の数。これは、非同期と同期ディスク入出力の合計です。
ELAPSED_ASYNC_DISK_IO_COUNT DECIMAL(20,0) 測定時間間隔中にジョブによって実行された非同期 (物理) ディスク入出力操作の数。この値はデータベースとデータベース以外に対する非同期読み書きの合計です。
ELAPSED_SYNC_DISK_IO_COUNT DECIMAL(20,0) 測定時間間隔中にジョブによって実行された同期 (物理) ディスク入出力操作の数。この値はデータベースとデータベース以外に対する同期読み書きの合計です。
ELAPSED_CPU_PERCENTAGE DECIMAL(10,1) 測定時間間隔中にこのジョブに起因した処理装置時間のパーセント。
ELAPSED_CPU_TIME DECIMAL(20,0) 測定時間間隔中に費やされた合計 CPU 時間 (ミリ秒)。
ELAPSED_PAGE_FAULT_COUNT DECIMAL(20,0) アクティブ・プログラムが測定時間間隔に指定ジョブの主記憶域にないアドレスを参照した回数。
JOB_END_REASON VARCHAR(60) ジョブが終了している理由。以下のいずれかの値が含まれます。
  • JOB ENDING IN NORMAL MANNER
  • JOB ENDED WHILE IT WAS STILL ON A JOB QUEUE
  • SYSTEM ENDED ABNORMALLY
  • JOB ENDING NORMALLY AFTER A CONTROLLED END WAS REQUESTED
  • JOB ENDING IMMEDIATELY
  • JOB ENDING ABNORMALLY
  • JOB ENDED DUE TO THE CPU LIMIT BEING EXCEEDED
  • JOB ENDED DUE TO THE STORAGE LIMIT BEING EXCEEDED
  • JOB ENDED DUE TO THE MESSAGE SEVERITY LEVEL BEING EXCEEDED
  • JOB ENDED DUE TO THE DISCONNECT TIME INTERVAL BEING EXCEEDED
  • JOB ENDED DUE TO THE INACTIVITY TIME INTERVAL BEING EXCEEDED
  • JOB ENDED DUE TO A DEVICE ERROR
  • JOB ENDED DUE TO A SIGNAL
  • JOB ENDED DUE TO AN UNHANDLED ERROR
ジョブが現在終了中でない場合は、NULL 値が入ります。
SERVER_TYPE VARCHAR (30) ジョブによって表されているサーバーのタイプ。サーバー・タイプの値のリストについては、『サーバー表』を参照してください。

ジョブがサーバーの一部でない場合は、NULL 値が入ります。

ELAPSED_TIME DECIMAL(20,3) 測定開始時刻から現在のシステム時刻までに経過した時間 (秒)。

  • 例 1: QZDASOINIT ジョブのみを確認し、経過入出力の上位 10 位までのコンシューマーを検索します。
    SELECT JOB_NAME, AUTHORIZATION_NAME, ELAPSED_TOTAL_DISK_IO_COUNT, ELAPSED_CPU_PERCENTAGE 
    FROM TABLE(QSYS2.ACTIVE_JOB_INFO(
                JOB_NAME_FILTER => 'QZDASOINIT',
                SUBSYSTEM_LIST_FILTER => 'QUSRWRK')) X
    ORDER BY ELAPSED_TOTAL_DISK_IO_COUNT DESC
    FETCH FIRST 10 ROWS ONLY;
    注: ELAPSED_xxx 列のデータは、照会を再実行するたびに更新されます。
  • 例 2: 一時記憶域の使用量が最大のアクティブ・ジョブを検索します。各ターゲット・ジョブ内で最も新しく実行された SQL ステートメントを含めます。
    WITH TOP_CONSUMERS (Q_JOB_NAME, AUTHORIZATION_NAME, TEMP_STORAGE_CONSUMED) AS (
      SELECT JOB_NAME, AUTHORIZATION_NAME, TEMPORARY_STORAGE 
        FROM TABLE (QSYS2.ACTIVE_JOB_INFO()) X
        WHERE JOB_TYPE <> 'SYS' ) 
    SELECT Q_JOB_NAME, AUTHORIZATION_NAME, TEMP_STORAGE_CONSUMED, V_SQL_STATEMENT_TEXT, B.* 
    FROM TOP_CONSUMERS, TABLE(QSYS2.GET_JOB_INFO(Q_JOB_NAME)) B
    ORDER BY TEMP_STORAGE_CONSUMED DESC;
  • 例 3: JOB_NAME フィールドを、修飾ジョブ名の各部分の別々の列に分解します。
    SELECT SUBSTR(JOB_NAME,1,6) AS JOB_NUMBER,
           SUBSTR(JOB_NAME,8,POSSTR(SUBSTR(JOB_NAME,8),'/')-1) AS JOB_USER,
           SUBSTR(SUBSTR(JOB_NAME,8),POSSTR(SUBSTR(JOB_NAME,8),'/')+1)  AS JOB_NAME
    FROM TABLE (QSYS2.ACTIVE_JOB_INFO()) AS X;