Dalam basis data produksi saya yang baru-baru ini ditingkatkan, saya melihat sejumlah pernyataan SQL yang sekarang mengalami penantian yang tinggi pada acara "perubahan ukuran deskriptor asinkron". Saya baru-baru ini memutakhirkan dari 11.1.0.7 ke 11.2.0.2 dan pernyataan SQL yang tidak pernah menunggu acara ini sekarang tertangkap.
Oracle 11.2 sedikit mengubah cara database dan kernel OS melakukan panggilan I/O Asynchronous. Apa yang terjadi adalah bahwa ada sejumlah deskriptor I/O asinkron untuk dapat menangani panggilan I/O asinkron. Ketika jumlah panggilan I/O asinkron meningkat, jumlah deskriptor juga meningkat. Ketika jumlah panggilan I/O asinkron berkurang, jumlah deskriptor berkurang dengan cara yang sama.
Sebelum Oracle dapat menambah jumlah deskriptor, Oracle harus menunggu semua proses yang sedang menjalankan I/O asinkron untuk menyelesaikan panggilan I/O mereka. Tindakan mengerikan ini benar-benar membunuh bagian "tidak sinkron" dari I/O! Setelah semua proses menyelesaikan panggilan I/O ansych mereka, Oracle kemudian dapat memodifikasi deskriptor naik atau turun tergantung pada beban kerja.
Jika proses Anda baru saja selesai menyelesaikan I/O asinkronnya, sebelum dapat melakukan panggilan I/O asinkron lainnya, ia harus menunggu Oracle untuk mengubah jumlah deskriptor. Dengan demikian, Anda sedang menunggu acara tunggu "perubahan ukuran deskriptor asinkron".
Ini tampaknya Bug 9829397 dan Anda dapat mengunduh tambalan untuk itu dari Metalink. Masalah ini diperbaiki di 11.2.0.3 sehingga hanya muncul di 11.2.0.1 dan 11.2.0.2. Salah satu solusinya adalah menonaktifkan Async I/O, tetapi bagi saya solusi itu sangat tidak diinginkan. Seseorang juga dapat mengurangi kemunculan acara tunggu ini dengan mengurangi I/O langsung dan menyetel pernyataan SQL mereka.