Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1293 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Oracle : requête qui ne termine plus (Résolu )

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Oracle : requête qui ne termine plus (Résolu )

n°211611
tomlameche
Et pourquoi pas ?
Posté le 10-09-2002 à 14:44:21  profilanswer
 

ésolu )Voilà mon pb :
J'ai une requête pour un curseur qui au départ fonctionne très bien. Même si elle est assez longue ( jusqu'à une demi-heure avant le résultat ), elle fonctionne.
Sauf que lorsque je la fait executer plusieurs fois de suite ( en fait, en changeant un paramètres à chaque fois, mais ça ne change rien au volume à récupérer ), elle finit par rester bloquer ad vitam eternam et je n'ai jamais mon résultat !
Obligé de killer la session au bout 20heures au dernier essai ...  
y aurai t'il un vieux DBA de la première guerre qui aurai déjà eu ce type de pb, ou qqun qui aurai des pistes ?


Message édité par tomlameche le 10-09-2002 à 15:17:37
mood
Publicité
Posté le 10-09-2002 à 14:44:21  profilanswer
 

n°211618
_Mac_
Posté le 10-09-2002 à 14:52:52  profilanswer
 

Tu pourrais balancer ton code, steuplé

n°211619
tomlameche
Et pourquoi pas ?
Posté le 10-09-2002 à 14:58:25  profilanswer
 

[#0ef000]

_Mac_ a écrit a écrit :

Tu pourrais balancer ton code, steuplé




Ben j'ai rien contre, mais ça m'etonnerai que ça aide bcp, etant donné que la requete ne peut être faite autrement ( pour multiple raison, dont la principale est qu'elle est créé par un ETL ( Genio si tu connais )). Mais, bon, la voici !
[SELECT TO_NUMBER(TO_CHAR(G_T2.DATE_ACTION,'YYYY';)) , DECODE (TO_NUMBER( TO_CHAR(G_T2.DATE_ACTION, 'MM';))  , 1  , 1   , 2  , 1   , 3  , 1   , 4  , 2   , 5  , 2   , 6  , 2   , 7  , 3   , 8  , 3   , 9  , 3   , 4  ) ,  
G_T4.COD_RESEAU_THEORIQUE, G_T4.COD_RESEAU_REEL, G_T3.CIBLE_POSITIONNE, G_T2.COD_REGION, G_T2.COD_CAT_SECTEUR,  
G_T2.COD_SECTEUR, G_T4.FLG_HOP_VILLE, G_T6.COD_SPE_DSA, G_T2.COD_ZONE, G_T1.IND_LIEU_EXO,  
COUNT(DISTINCT G_T1.CODE_MÉDECIN_COMPLET)  FROM INFOCLI.TBACM_DW_PROSPECTS G_T1 ,  
INFOCLI.TBACM_ACTIONS G_T2 , INFOCLI.TBSMV_CIBLES G_T3 , INFOCLI.TBSMV_RESEAU G_T4 , INFOCLI.TBACM_CIBLES G_T5 ,  
INFOCLI.TBSMV_SPECIALITE G_T6 WHERE G_T3.NUM_CIBLE = G_T5.NUM_CIBLE  AND G_T3.MAT_SOCIETE = G_T5.MAT_SOCIETE  
AND G_T3.VAL_CIBLE = G_T5.VAL_CIBLE  AND G_T2.TYPNUMIN = G_T5.TYPNUMIN  AND G_T4.COD_CAT_SECTEUR = G_T2.COD_CAT_SECTEUR  
AND G_T4.NUM_SECTO = G_T2.NUM_SECTO  AND G_T4.COD_RESEAU_REEL = G_T3.COD_RESEAU_REEL  AND G_T6.COD_SPECIALITE = G_T1.COD_SPECIALITE  
AND G_T1.CODE_MÉDECIN_COMPLET = G_T2.TYPNUMIN  AND G_T4.FLG_TRAITER = 1   AND G_T2.TYP_ID = 10440    AND G_T1.FLG_ADR_PRINC = 'O'  
AND G_T4.COD_RESEAU_REEL = :1  
GROUP BY TO_NUMBER(TO_CHAR(G_T2.DATE_ACTION,'YYYY';))  ,  
DECODE (TO_NUMBER( TO_CHAR(G_T2.DATE_ACTION, 'MM';))  , 1  , 1, 2  , 1   , 3  , 1   , 4  , 2   , 5  , 2   , 6  , 2   , 7  , 3   , 8  , 3   , 9  , 3   , 4  )  , G_T4.COD_RESEAU_THEORIQUE , G_T4.COD_RESEAU_REEL , G_T3.CIBLE_POSITIONNE , G_T2.COD_REGION , G_T2.COD_CAT_SECTEUR , G_T2.COD_SECTEUR , G_T4.FLG_HOP_VILLE  
, G_T6.COD_SPE_DSA , G_T2.COD_ZONE , G_T1.IND_LIEU_EXO]
 
Evidement, c'est carement illisible, surtout quand on connait pas le contexte ...
Mais je peux t'assurer que tous les index sont bons, bien présent et utilisés ( je peux te fournir l'explain plan ).

n°211625
thegti
La constipation se soigne ...
Posté le 10-09-2002 à 15:06:11  profilanswer
 

Déjà faudrait voir si le process s'arrête ou s'il tourne dans le vide.
Sur Oracle, je sais pas si y'a un outil de suivi comme le générateur de profils de SQL Server.
En tout cas, avec ce genre d'outil tu peut débugguer l'éxécution du SGBD et voir ou est précisément le problème.

n°211635
tomlameche
Et pourquoi pas ?
Posté le 10-09-2002 à 15:16:20  profilanswer
 

thegti a écrit a écrit :

Déjà faudrait voir si le process s'arrête ou s'il tourne dans le vide.
Sur Oracle, je sais pas si y'a un outil de suivi comme le générateur de profils de SQL Server.
En tout cas, avec ce genre d'outil tu peut débugguer l'éxécution du SGBD et voir ou est précisément le problème.




Ouais, j'ai vérifié, et la requête tourne toujours ...
J'ai l'impression qu'il s'agit d'un pb avec le passage de variable ou qq chose dans le genre.

n°211642
tomlameche
Et pourquoi pas ?
Posté le 10-09-2002 à 15:19:36  profilanswer
 

Bon ben finalement, suite à un ajout de rollback segment et augmentation du Temp segment, c'est passé.
Dingue.
Manifestement, ca arrive quand le temp segment est trop petit ( mais il m'a toujours semblé que dans ce cas tu reçois une erreur Oracle ).
 :ouch:

n°211845
MagicBuzz
Posté le 10-09-2002 à 20:26:15  profilanswer
 

Truc qui n'a rien à voir : J'adore les "TO_NUMBER(TO_CHAR())" obligatoires après des merdes dans la base faites avec des ALTER sans vérification :)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Oracle : requête qui ne termine plus (Résolu )

 

Sujets relatifs
Caractères phonétiques en HTML [résolu]Chaîne de requête et W3C Validator
Bug des sessions sur le long terme [résolu] ?Prob avec la bibliotheque BGI ( graphics.h ) [prob résolu]
[SQL][Oracle]Besoin d'aide pour une requête![VC++] Où peut on trouver un tableau avec les valeurs RGB ? RESOLU
[Delphi + sql] Requete sql sous delphi[HTML / JS / Mozilla 1.x] désactiver JS >> RESOLU
Un itérateur sur un tableau [RESOLU] 
Plus de sujets relatifs à : Oracle : requête qui ne termine plus (Résolu )


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR