Nel mio database di produzione aggiornato di recente, vedo una serie di istruzioni SQL che ora stanno riscontrando attese elevate sull'evento "ridimensionamento del descrittore asincrono". Di recente ho aggiornato da 11.1.0.7 a 11.2.0.2 e le istruzioni SQL che non hanno mai aspettato questo evento ora vengono catturate.
Oracle 11.2 ha leggermente modificato il modo in cui il database e il kernel del sistema operativo eseguivano le chiamate I/O asincrone. Quello che sta succedendo è che esiste un certo numero di descrittori di I/O asincroni per essere in grado di gestire le chiamate di I/O asincrone. Quando il numero di chiamate I/O asincrone aumenta, aumenta anche il numero di descrittori. Quando il numero di chiamate I/O asincrone diminuisce, il numero di descrittori viene ridotto in modo simile.
Prima che Oracle possa aumentare il numero di descrittori, deve attendere che tutti i processi che stanno attualmente eseguendo I/O asincrono completino le loro chiamate I/O. Questa terribile azione uccide davvero la parte "asincrona" dell'I/O! Una volta che tutti i processi hanno completato le loro chiamate I/O ansych, Oracle può quindi modificare i descrittori verso l'alto o verso il basso a seconda del carico di lavoro.
Se il processo ha appena completato il suo I/O asincrono, prima di poter effettuare un'altra chiamata I/O asincrono, deve attendere che Oracle modifichi il numero di descrittori. Pertanto, stai aspettando l'evento di attesa "ridimensionamento del descrittore asincrono".
Questo sembra essere il bug 9829397 e puoi scaricare una patch da Metalink. Questo problema è stato risolto in 11.2.0.3, quindi appare solo in 11.2.0.1 e 11.2.0.2. Una soluzione alternativa è disabilitare l'I/O Asynch, ma per me questa soluzione è altamente indesiderabile. È anche possibile ridurre le occorrenze di questo evento di attesa riducendo l'I/O diretto e ottimizzando le istruzioni SQL.