Hallo zusammen,

ich bin jetzt etwas am Ende.

Ich wollte alle Jobs ermitteln die auf Lockwait sind. Das habe ich hinbekommen
SELECT *
FROM TABLE (QSYS2.ACTIVE_JOB_INFO()) as t
where t.Job_status = 'LCKW';

Jetzt wollte ich wissen welcher Job meinen Lockwait verursacht.

Da habe ich den View RECORD_LOCK_INFO gefunden.
Wenn ich jetzt allerdings den nachfolgenden Select
SELECT * FROM qsys2.record_lock_info WHERE JOB_NAME =
'249492/SPEPGMRHK/S01IPD0038' ausführe (Den Jobnamen habe ich aus dem oben genannten Select) bekomme ich Schnappatmung wegen der Dauer

Mit Tablename = und Schemaname = ist er rasend schnell, leider steht mir aber nur der Jobname zur Verfügung.

Jetzt habe ich mir gedacht schaust Du dir mal mit
SELECT * FROM sysviews WHERE TABLE_SCHEMA = 'QSYS2' an wie das SQL-Statement für den View aussieht. Vielleicht bekomme ich was ich brauche aus den Tabellen die verwendet werden.

Und das lautet wie folgt
SELECT COALESCE(A.TABLE_SCHEMA,''), COALESCE(A.TABLE_NAME,''), COALESCE(B.TABLE_PARTITION,''), COALESCE(A.SYSTEM_TABLE_SCHEMA,''), COALESCE(A.SYSTEM_TABLE_NAME,''), COALESCE(B.SYSTEM_TABLE_MEMBER,''), COALESCE(RELATIVE_RECORD_NUMBER,0), COALESCE(LOCK_STATE,''), COALESCE(LOCK_STATUS,''), COALESCE(LOCK_SCOPE,''), COALESCE(JOB_NAME,''), THREAD_ID, LOCK_SPACE_ID FROM QSYS2.SYSTABLES A INNER JOIN QSYS2.SYSPSTAT B ON A.SYSTEM_TABLE_SCHEMA = B.SYSTEM_TABLE_SCHEMA AND A.SYSTEM_TABLE_NAME = B.SYSTEM_TABLE_NAME, TABLE ( QSYS2.RECORD_LOCK_INFO ( A.SYSTEM_TABLE_SCHEMA , A.SYSTEM_TABLE_NAME , B.SYSTEM_TABLE_MEMBER , A.IASPNUMBER ) ) AS C;

Jetzt habe ich mir die beiden Tabellen QSYS2.SYSTABLES und QSYS2.SYSPSTAT angeschaut, aber aus dem SQL erschließt sich mir nicht wie er den Status "HELD" und "WAITING" in den View RECORD_LOCK_INFO bekommt und vor allem nicht wie er auf die Satznummer kommt.

Was ich eigentlich will ist, dass ich die Jobs bekomme die auf LCKW sind und welcher Job die Sperre verursacht und warum (also z.B. Datei A mit RecordID 2 ist der Verursacher)

Vielleicht hat jemand eine Idee

Ich habe auch versucht einen Create Index auf RECORD_LOCK_INFO zu machen, aber das geht nicht. Deshalb auch die Idee eventuelle über die Tabellen des Views zu gehen.