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(CPF3771) 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
CPF3771 è il messaggio di SAVLIB per «oggetti salvati, altri non salvati». 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. Per gli oggetti in uso SAVLIB ha anche il parametro SAVACT, il salvataggio
mentre il sistema è attivo: senza, IBM avverte che un oggetto in uso non viene salvato.
Nota
un lock tenuto da una sessione interattiva può essere una schermata lasciata
aperta su un record. Prima di terminare il job conviene chiedere a chi lo usa: ENDJOB
interrompe quello che stava facendo.
Rilasci. WRKOBJLCK c'è su qualunque rilascio. La vista QSYS2.OBJECT_LOCK_INFO è più
recente: 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