« Scripts para creación de bases Oracle 12c en forma manualOracle 12c New Features : Deshabilitar el logging al momento de importar una tabla »

Active Session History (ASH) performed an emergency flush



Viendo un Oracle RAC versión 11.2.0.3 me percaté de este error en el archivo de alertas, pues bien lo que hice fue analizarlo un poco, he acá las conclusiones.


Foto de Quito , lugar que conoceré en Noviembre ;)

Este mensaje de warning se produce en versiones desde la 11.2.0.2 de Oracle Enterprise Edition y significa única y exclusivamente que Active Session History para su porción de memoria ASH tiene un tamaño muy pequeño para la cantidad de sesiones activas que se están produciendo, por ende tiene que vaciarla y dejarla en blanco para todos los nuevos registros, con esto se puede información histórica relacionada con el ASH (estadísticas de performance relacionadas a los usuarios)

Este error se puede pasar por alto, ya que indica que hubo un aumento significativo de las sesiones..si el error persiste, se puede realizar algo para evitar que aparezca en el archivo de alertas y gatille todos nuestros procesos de monitoreo.

Error textual desde el archivo de alertas

Tue Jul 23 10:14:38 2013
Active Session History (ASH) performed an emergency flush. This may mean that ASH is undersized. If emergency flushes are a recurring iss
ue, you may consider increasing ASH size by setting the value of _ASH_SIZE to a sufficiently large value. Currently, ASH size is 13421772
8 bytes. Both ASH size and the total number of emergency flushes since instance startup can be monitored by running the following query: select total_size,awr_flush_emergency_count from v$ash_info;



Imagen de cantidad de sesiones en una instancia Oracle

Un síntoma relacionado al error, es por ejemplo una alta cantidad de usuarios activos , que va aumentando de forma exponencial.

Si queremos saber cuanto es el tamaño destinado al buffer ASH en memoria, pues podemos ejecutar la siguiente consulta

select total_size/1024/1024 Mb ,
awr_flush_emergency_count
from v$ash_info;

Nos muestra el tamaño del ASH y nos nuestra cuanta veces ha realizado un flush desde esta porción de memoria desde el último Startup

¿Cómo se soluciona este problema?
Para darle una solución al tema, se debe modificar el parámetro oculto _ash_size , pero como recomendación siempre háganlo a través de Soporte de Oracle, ya que como saben , la modificación de parámetros ocultos no está soportada.

El valor que se le debe asignar al parámetro es un 50% del valor actual y el comando sería algo así

alter system set "_ash_size"=valor 50% superior al existente scope=spfile;

Nota1 : Este cambio debe ser realizado con el usuario SYS
Nota2 : El ASH Buffer reside dentro de la Shared Pool


Espero les sirva


by Ligarius
23.07.13. 12:19:33. 442 words, 9415 views. Categories: Tuning / Performance, Oracle11gR2 ,