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