ACTIVE_JOB_INFO 表関数を V7R1 で実行する (V7R1)

V7R2 から ACTIVE_JOB_INFO という表関数で、リアルタイムにシステム状況を SQL を使って取得できるようになりました。

テクノロジー・リフレッシュ 10 の発表で、V7R1 でもこの表関数は使用できるようになっています。

ところが、インフォメーションセンターに載っている例が V7R1 ではそのままでは実行できません。

たとえば、2つ目の例である↓をそのまま V7R1 で実行しようとすると、

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;

↓ のようなエラーになってしまいます。

実は、V7R1 と V7R2 で文法の許容範囲がちょっと違うんですね。

V7R1(TR10 以降)では ↓ のように変更することで動きます。TEMP_STORAGE_CONSUMED という値は V7R2 からのサポートなのではずす必要があります。

WITH TOP_CONSUMERS (Q_JOB_NAME, AUTHORIZATION_NAME) AS (
  SELECT JOB_NAME, AUTHORIZATION_NAME
    FROM TABLE (QSYS2.ACTIVE_JOB_INFO('NO', '', '', '')) X
    WHERE JOB_TYPE <> 'SYS' ) 
SELECT Q_JOB_NAME, AUTHORIZATION_NAME V_SQL_STATEMENT_TEXT, B.* 
FROM TOP_CONSUMERS, TABLE(QSYS2.GET_JOB_INFO(Q_JOB_NAME)) B 
ORDER BY V_CPU_USED DESC ;

V7R1 では、V7R2 の例 ↓ のように何も指定しないことはできず、

QSYS2.ACTIVE_JOB_INFO()

↓ のように 4つあるオプションをすべて指定する必要があるんです。

QSYS2.ACTIVE_JOB_INFO('NO', '', '', '')

4つのオプションというのは、

で、これを V7R1 ではこの順番で引数として指定しないといけないことになっています。

また、最初の

は値が 'YES' か 'NO' かしか許されないので、ただのブランクにしておくと ↓ のようなエラーになります。

もうひとつ、↓ の例が載っていますが、

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;

これは、V7R1 では ↓ のようにすることで動きます。

SELECT JOB_NAME, AUTHORIZATION_NAME, ELAPSED_TOTAL_DISK_IO_COUNT, ELAPSED_CPU_PERCENTAGE 
FROM TABLE(QSYS2.ACTIVE_JOB_INFO( 'NO', 'QUSRWRK', 'QZDASOINIT', '')) X
ORDER BY ELAPSED_TOTAL_DISK_IO_COUNT DESC
FETCH FIRST 10 ROWS ONLY;

V7R2 では ↓ のように、上述の 4つのオプションを自由な順番で指定できるよう(V7R2 が手近にないのでテストできませんでした…)なのですが、

QSYS2.ACTIVE_JOB_INFO(
            JOB_NAME_FILTER => 'QZDASOINIT',
            SUBSYSTEM_LIST_FILTER => 'QUSRWRK')

V7R1 では位置で判断しているので、↓ のように並べ替える必要があります。job_name_filter は 3つめ、subsystem_list_filter は 2つ目になります。
最初の reset_statistics はブランクのままにできないのでデフォルトの 'NO' を指定しています。

QSYS2.ACTIVE_JOB_INFO( 'NO', 'QUSRWRK', 'QZDASOINIT', '')

[Top Pageに戻る]

Ads by TOK2