Il modo diretto, da riga comandi:
WRKOBJLCK OBJ(PRODLIB/ARTICOLI) OBJTYPE(*FILE)
Lo stesso in SQL, utile quando serve raccogliere il dato in un programma o guardare più oggetti insieme:
SELECT JOB_NAME, LOCK_STATE, LOCK_STATUS, LOCK_SCOPE
FROM QSYS2.OBJECT_LOCK_INFO
WHERE SYSTEM_OBJECT_SCHEMA = 'PRODLIB'
AND SYSTEM_OBJECT_NAME = 'ARTICOLI'
Per i membri di un file database il lock può essere sul singolo membro:
WRKOBJLCK OBJ(PRODLIB/ARTICOLI) OBJTYPE(*FILE) MBR(*ALL)
Esempio: il salvataggio che fallisce alle due di notte
SAVLIB termina con un oggetto non salvato perché qualcuno lo teneva aperto. La mattina dopo
il lock non c'è più (chi lo teneva ha chiuso la sessione) e WRKOBJLCK non serve a niente:
mostra la situazione di adesso, non quella di stanotte.
La query invece si può lasciare nel CL del salvataggio, sotto il MONMSG, e scatta nel
momento esatto in cui il lock c'è ancora. Prima la tabella, creata dalla query stessa perché
nomi e tipi arrivino dalla vista:
CREATE TABLE MIALIB/DIAGLCK AS (
SELECT CURRENT TIMESTAMP AS RILEVATO, SYSTEM_OBJECT_NAME,
JOB_NAME, LOCK_STATE
FROM QSYS2.OBJECT_LOCK_INFO
) WITH NO DATA
Poi il salvataggio:
SAVLIB LIB(PRODLIB) DEV(TAP01)
MONMSG MSGID(CPF3712) EXEC(DO)
RUNSQL SQL('INSERT INTO MIALIB/DIAGLCK +
SELECT CURRENT TIMESTAMP, SYSTEM_OBJECT_NAME, +
JOB_NAME, LOCK_STATE +
FROM QSYS2.OBJECT_LOCK_INFO +
WHERE SYSTEM_OBJECT_SCHEMA = ''PRODLIB''') COMMIT(*NONE)
MONMSG MSGID(CPF0000)
ENDDO
Dopo tre notti la tabella dice se è sempre lo stesso job (allora è un programma da sistemare) o se sono utenti diversi ogni volta, e allora il problema è l'orario del salvataggio.
Nota
un lock tenuto da una sessione interattiva è quasi sempre una transazione aperta
e dimenticata, non un guasto. Prima di terminare il job conviene chiedere: chiuderlo con
ENDJOB mentre una transazione è aperta lascia il lavoro a metà e obbliga a un ripristino.
Rilasci. WRKOBJLCK c'è su qualunque rilascio. La vista QSYS2.OBJECT_LOCK_INFO è più
recente ed è arrivata con gli IBM i Services: se manca, la query risponde SQL0204 e resta
il comando, che dà la stessa informazione a schermo.
Commenti
Nessun commento ancora. Sii il primo a commentare!
Devi avere un account per commentare. Accedi · Registrati