Saya tidak tahu apakah ini masalah Anda, tetapi Oracle mengintip nilai variabel bind saat mem-parsing kueri dan kemudian menyimpan rencana kueri untuk eksekusi di masa mendatang sehingga tidak harus terus mengurai kueri setiap kali dijalankan dengan yang baru set variabel mengikat. Tetapi sesekali kueri diurai ulang. Jika beberapa nilai variabel pengikatan yang tidak biasa dilewatkan selama penguraian, maka rencana yang buruk disimpan dan digunakan. Ini adalah semacam kutukan dari variabel bind. Mereka mengurangi penguraian tetapi dapat membalikkan rencana pada nilai variabel pengikatan yang tidak biasa ketika kueri diuraikan lagi. Petunjuk dapat membantu. Kami menggunakan Profil SQL untuk mengunci paket kueri dengan variabel ikat yang cenderung mengubah paket. Terkadang Anda dapat menyesuaikan kapan dan bagaimana statistik pengoptimal dikumpulkan sehingga rencana yang baik dibuat terlepas dari nilai apa yang diteruskan ke variabel pengikat.
Bagaimanapun, itu adalah sesuatu yang saya lihat sepanjang waktu dan mungkin atau mungkin bukan masalah Anda.
Bobby