Précédent   Forum des professionnels en informatique > Bases de données > Oracle > Interfaces de programmation
Interfaces de programmation Forum d'entraide sur l'utilisation des API Oracle : Pré-compilateurs, OCI, OCCI, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/04/2006, 11h37   #1
Membre chevronné
 
Avatar de Herode
 
Développeur Web
Inscription : mars 2005
Messages : 771
Détails du profil
Informations personnelles :
Localisation : France, Savoie (Rhône Alpes)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : mars 2005
Messages : 771
Points : 790
Points : 790
Par défaut [9i][OCI]Requête bloquante / fetch

Bonjour à tous,

Sur une interface OCI / C++ que j'ai développée récemment, un utilisateur me signale qu'une requête bloque son client. Après avoir tracé le code, il apparaît que c'est l'appel ::OCIStmtFetch2(...) qui bloque : Oracle ne répond plus.

La requête en question lit et renvoie la structure d'une table. Ce qui me trouble, c'est que cette même requête, lancée depuis un environnement de test avec la même connexion ( ds, user, pwd ) ne bloque pas. Je ne vois pas bien ce qui motive cette différence de comportement. Si l'un d'entre vous a des pistes de réflexion à me suggérer, je suis preneur...
Herode est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/04/2006, 13h51   #2
Expert Confirmé
 
Inscription : février 2006
Messages : 3 433
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 3 433
Points : 3 462
Points : 3 462
Le problème est-il systématique ou non ?

Cela pourrait être un problème d'attente sur un verrou si votre code fait un SELECT FOR UPDATE par exemple: Essayez d'exécuter:

Code :
1
2
 
SELECT * FROM DBA_BLOCKERS;
Cette vue retourne l'identifiant d'une session qui détient un verrou sur lequel une autre session est en attente.

Vous pouvez aussi essayer d'activer la trace SQL dans votre session pour voir l'ordre SQL qui bloque; voir http://leoanderson.developpez.com/tr...ssions-oracle/
pifor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/04/2006, 14h51   #3
Membre chevronné
 
Avatar de Herode
 
Développeur Web
Inscription : mars 2005
Messages : 771
Détails du profil
Informations personnelles :
Localisation : France, Savoie (Rhône Alpes)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : mars 2005
Messages : 771
Points : 790
Points : 790
Le blocage est systématique dans cette application là. Avec une autre appli, utilisant les mêmes infos de connexion et la même requête exactement, pas de problème. Il y a des chances que le blocage ne vient pas directement du code du driver, mais je ne vois toujours pas comment débloquer la situation

Code :
SELECT * FROM DBA_BLOCKERS;
n'indique aucun verrou en cours.

Je vais voir comment mettre en place les traces SQL dont tu parles. Merci pour l'info
Herode est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/04/2006, 11h17   #4
Membre chevronné
 
Avatar de Herode
 
Développeur Web
Inscription : mars 2005
Messages : 771
Détails du profil
Informations personnelles :
Localisation : France, Savoie (Rhône Alpes)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : mars 2005
Messages : 771
Points : 790
Points : 790
Rien de probant dans les traces semble-t-il. Un seul utilisateur connecté (moi-même), pas de requêtes en concurrence. En outre, l'appel à OCIStmtFetch2 bloque sur un simple select, même pas un select for update.

Je n'arrive toujours pas à trouver ce qui coince. Par rapport aux environnements où "ça marche", la seule différence ici est que :
- OCI est utilisé en multithread (mais je ne vois pas de threads en concurrence dans ce cas précis)
- le driver est intégré dans un exécutable qui tourne sous la forme d'un service XP.

Je suis tenté de penser que c'est de ce dernier aspect que vient le blocage, mais je n'en sais pas plus pour le moment.
Herode est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h49.


 
 
 
 
Partenaires

Hébergement Web