Oracle ora-00600 librarycachenotemptyonclose, el famoso error Oracle Database 10g

Este error es producido por un bug reconocido por Oracle que se puede encontrar en el Metalink fácilmente [ID 4483084.8], el error indica que se ha intentado parar la BD sin que el Library Cache estuviese vacío.

La solución propuesta de forma oficial es migrar a 11.1.0.6 y además indica que no produce ningún tipo de corrupción en los datafiles, sugiriendo que nos podemos acostumbrar a verlo en el alert sin preocuparnos.

Lo que no dicen es que este error puede hacer que una parada de BD con un típico shutdown immediate, puede fallar y quedarse la BD en estado nomount, esto me ha pasado en sistemas HP-UX. Si ocurre durante una copia fría de fin de semana, la BD no arrancará porque ya lo está, pero claro en nomunt.

Para soluciona este problema y tener un alert limpio se puede añadir un trigger de sistema:

Source   
CREATE OR REPLACE TRIGGER flush_shared_pool
BEFORE SHUTDOWN ON DATABASE
BEGIN
execute immediate 'ALTER SYSTEM FLUSH SHARED_POOL';
EXCEPTION
WHEN OTHERS THEN
RAISE_APPLICATION_ERROR (num => -20000, msg => 'Error flushing pool');
END;

A mi me ha funcionado en sobre BD montadas en HP-UX, Linux y Windows.

Deja un comentario