sql >> Base de Datos >  >> RDS >> Oracle

Evento de espera:cambio de tamaño del descriptor asíncrono

En mi base de datos de producción actualizada recientemente, veo una serie de declaraciones SQL que ahora están experimentando largas esperas en el evento de "cambio de tamaño del descriptor asíncrono". Recientemente actualicé de 11.1.0.7 a 11.2.0.2 y las declaraciones SQL que nunca esperaron en este evento ahora están siendo capturadas.

Oracle 11.2 cambió ligeramente la forma en que la base de datos y el kernel del sistema operativo realizaban llamadas de E/S asíncronas. Lo que sucede es que hay varios descriptores de E/S asíncronos para poder manejar las llamadas de E/S asíncronas. Cuando aumenta el número de llamadas de E/S asíncronas, también aumenta el número de descriptores. Cuando disminuye la cantidad de llamadas de E/S asíncronas, la cantidad de descriptores disminuye de manera similar.

Antes de que Oracle pueda aumentar la cantidad de descriptores, debe esperar a que todos los procesos que actualmente realizan E/S asíncrona completen sus llamadas de E/S. ¡Esta terrible acción realmente mata la parte "asincrónica" de la E/S! Una vez que todos los procesos han completado sus llamadas de E/S ansych, Oracle puede modificar los descriptores hacia arriba o hacia abajo según la carga de trabajo.

Si su proceso acaba de completar su E/S asíncrona, antes de que pueda realizar otra llamada de E/S asíncrona, debe esperar a que Oracle modifique la cantidad de descriptores. Como tal, está esperando el evento de espera "cambio de tamaño del descriptor asíncrono".

Parece ser el error 9829397 y puede descargar un parche de Metalink. Este problema se solucionó en 11.2.0.3, por lo que solo aparece en 11.2.0.1 y 11.2.0.2. Una solución es deshabilitar la E/S asíncrona, pero para mí esa solución es muy indeseable. También se pueden reducir las ocurrencias de este evento de espera al reducir su E/S directa y ajustar sus declaraciones SQL.