Не знам дали това е вашият проблем, но Oracle надниква в стойностите на променливите за обвързване, когато анализира заявка и след това запазва плана на заявката за бъдещи изпълнения, така че не се налага да продължава да анализира заявката всеки път, когато се изпълнява с нова набор от свързващи променливи. Но от време на време заявката се анализира отново. Ако някои необичайни стойности на свързваща променлива се предават по време на анализ, тогава се съхранява и използва лош план. Това е нещо като проклятието на свързващите променливи. Те намаляват анализирането, но могат да обърнат плана на нетипични стойности на променливи за свързване, когато заявките се анализират отново. Съветите могат да помогнат. Ние използваме SQL профили, за да заключим планове на заявки със свързващи променливи, които са склонни да променят плановете. Понякога можете да персонализирате кога и как се събират статистическите данни на оптимизатора, така че да се създаде добър план, независимо какви стойности се предават в променливите за свързване.
Както и да е, това е нещо, което виждам през цялото време и може или не може да е вашият проблем.
Боби