Bonjour,
J'ai un traitement « T » qui prend 8 heures en temps normal en 10g.
Ce traitement exécute plusieurs procédures PL/SQL.
En migrant la production de 10g vers 11g le risque de voir partir quelques requêtes en vrille n'est pas écarté malgré les tests de perfs 11g déjà effectués dans une base de test.
Si après 3h/8h de traitement une requête part en vrille (un plan d’exécution non optimal en 11g) , je serais obligé d’arrêter le traitement "T" (kill session) et tout relancer après avoir apporté l’optimisation de la requête en question.
Est-il possible au moment où la requête part en vrille de l’optimiser « en live » comme si je force l’optimiseur 11g à abandonner le plan d’exécution courant(non optimal) et opter pour un autre plan (hint ?) sans arrêter la requête(le traitement T poursuit donc son exécution) ?
L’objectif est de ne pas bloquer la production car si par exemple je rencontre 5 requêtes / 3000 qui partent en vrille, je serais contraint de relancer le traitement lourd au moins 5 fois en espérant que l’optimisation fonctionne du premier coup !!!
Désolé d’avoir utilisé le mot « partir en vrille » plusieurs fois…
Merci pour vos idées.
Partager