Bonjour à tous ,
Je rencontre un problème avec une base décisionnelle que j'ai passé de la 8.1.7 a la 10.2.0.1 le 15/01/2008 : certaines requêtes qui duraient une poignée de secondes durent aujourd'hui 40 minutes. J'ajoute que ce sont des requêtes générées par BO, je n'ai pas le pouvoir de les optimiser .... (malheureusement ...
)
Aprés de multiples recherches, il semblerait que le problème arrive lorsque je calcule les stats avec le code suivant (bêtement repris dans un script d'une base de notre erp) 
1 2 3
| connect / as sysdba
ALTER SESSION SET NLS_NUMERIC_CHARACTERS = '. ';
EXECUTE dbms_stats.gather_schema_stats(ownname => '&var', method_opt => 'FOR ALL INDEXED COLUMNS SIZE AUTO', cascade=>TRUE,estimate_percent=>60); |
Avec les 2 tests suivants, je pense avoir déterminé que c'est le "ALTER SESSION SET NLS_NUMERIC_CHARACTERS = '. '; " avant le calcul des stats qui me pose problème :
TEST 1
1/ Import des données de la base en 8i vers la base en 10g
2/ J'execute la requête en question, elle dure 25 secondes 
3/ Je balance le script ci-dessus de calcul des stats en supprimant la ligne "ALTER SESSION ....."
4/ J'execute la requête en question, 25 secondes 
TEST 2
1/ Import des données de la base en 8i vers la base en 10g
2/ J'execute la requête en question, elle dure 25 secondes 
3/ Je balance le script ci-dessus de calcul des stats en gardant la ligne "ALTER SESSION ....."
4/ J'execute la requête en question, 40 minutes !!! 
5/ J'éxecute le code suivant pour supprimer les stats
sys.dbms_stats.delete_schema_stats(ownname => 'SPI');
6/ J'execute la requête en question, 40 minutes !!! 
7/ Je balance le script de calcul des stats en supprimant la ligne "ALTER SESSION ....."
8/ J'execute la requête en question, 40 minutes !!! 
CONCLUSION
Dans le test 2 (cas dans lequel est ma base de production), les problèmes surviennent a partir de l'étape 3. Comment me débarasser facilement de qui a été calculé a cette étape ? Sachant que le delete_schema_stats ne fonctionne guère dans mon cas. Pour info, lorsque j'ai éxécuté le delete_schema_stats, j'ai vérifié dans le all_tables >>> plus aucune stat .... 
J'ai délibérement omis de vous envoyer la requête ainsi que les plans de chaque étape, pour garde du recul sur la situation. Si vraiment il y en a besoin, je peux les poster.
[10:00] J'ajoute en pieces jointes requete et plan (ex : plan_T2E2 = test 2 , etape 2)
Partager