6f429244e498457b8400e72e4af683b0 Alberto Blog: ORA-25254: time-out in LISTEN while waiting for a message

martedì 4 settembre 2012

ORA-25254: time-out in LISTEN while waiting for a message


Tramite un trigger LOG_ERRORS con caratteristica di "AFTER EVENT" presente nel DB insieme con altri packages, scrivo tutti gli errori in una tabella in modo tale che posso verificare ogni giorno lo stato del DB.
Nel mio caso si verificava ripetutamente ORA-25254.

Verificando attraverso il metalink, ho scoperto che si tratta del Bug 3498760.
Questo errore è relativo all'applicazione AQ che è configurata con un timeout di DEQUEUE che specifica il tempo effettivo di attesa per l'arrivo dei messaggi, se non ci sono messaggi in questo timeout il sistema genera questo errore.
Questo errore non è classificato come crittical e si potrebbe tranquillamente tralasciare, ma nel mio caso visto che scrivo tutti gli errori nella mia tabella di controllo è un problema, perchè la fa crescere a dismisura.

Ci sono un paio di risoluzione proposte in merito la prima è quella di interrompere il job che esegue EMD_MAINTENANCE.EXECUTE_EM_DBMS_JOB_PROCS() ma questo potrebbe avere delle ripercussioni nel EM.
La seconda è quella meno drastica e preferibile, si cambia semplicemente il valore di timeout di DBMS_AQ.LISTEN.

Andiamo in $ORACLE_HOME/sysman/admin/emdrep/sql/core/latest/notification e modifichiamo il file notification_pkgbodys.sql nella sezione:

DBMS_AQ.LISTEN (agents, qtimeout_in, agent)

cambiandola in: 

DBMS_AQ.LISTEN (agents, 1200, agent);

entrare come utente SYSMAN con SQLPlus ed eseguire lo script notification_pkgbodys.sql.
Eventualmente per sicurezza è possibile fare una copia del file notification_pkgbodys.sql originale prima di modificarlo.

Nessun commento:

Posta un commento