IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Interfaces de programmation Oracle Discussion :

[OCILIB] Plantage OCI_Execute


Sujet :

Interfaces de programmation Oracle

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2009
    Messages : 41
    Par défaut [OCILIB] Plantage OCI_Execute
    Bonjour,

    J'ai un plantage d'ocilib sur l'instruction OCI_Execute.
    la particularité est que la requête SQL est longue, environ 700 binds...
    Merci de m'indiquer une piste à suivre... (tests à réaliser avant l'execute)

    Fly.

    Version OCILIB
    3.4.0 Itanium
    v$version
    Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
    PL/SQL Release 11.2.0.1.0 - Production
    CORE 11.2.0.1.0 Production
    TNS for HPUX: Version 11.2.0.1.0 - Production
    NLSRTL Version 11.2.0.1.0 - Production

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2009
    Messages : 41
    Par défaut
    Quelques infos supplémentaires.
    Après une préparation d'un source simple qui tente de reproduire le problème, j'ai une erreur du type ORA-24550.

    A l'exécution, cela donne quelque chose comme cela:
    ORA-24550: signal received: [si_signo=11] [si_errno=0] [si_code=1] [si_addr=3a4c
    4f4e47554555]
    kpedbg_dmp_stack()+368<-kpeDbgCrash()+160<-kpeDbgSignalHandler()+928<-skgesig_si
    gactionHandler()+528<-<kernel><-ocistrcasecmp()+192<-OCI_HashLookup()+320<-OCI_H
    ashAdd()+336<-OCI_HashAddInt()+160<-OCI_BindData()+5632<-OCI_BindInt()+336<-do_i
    nsert()+1744<-main()+1168<-main_opd_entry()+80
    Killed
    J'ai trouvé la note 780553.1 sur metalink...

    Mais elle ne semble pas s'appliquer à cette version d'ORACLE.

    ...

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2009
    Messages : 41
    Par défaut
    Bonjour,

    Après quelques tests, le même programme C fonctionne correctement sur la version OCILIB 3.9.2...

    Confirmez-vous ce problème sur la version 3.4.0 ?

    D'avance merci.
    Fly.

  4. #4
    Rédacteur
    Avatar de Vincent Rogier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 373
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 373
    Par défaut
    Salut,

    En version 3.4, OCILIB supportait au maximum 512 binds par requête.

    Depuis la 3.5.0, le max est 1024

    Vincent.
    Vincent Rogier.

    Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog

    Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique !

    OCILIB (C Driver for Oracle)

    Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2009
    Messages : 41
    Par défaut
    Bonjour,

    La réponse est claire... (pourquoi suis-je resté sur la version 3.4.0, moiiiii )

    C'est parti pour une version OCILIB 3.9.2 sur HP Itanium!

    Dois-je ajouter un contrôle sur le dépassement du nombre de binds ou est-ce que la version 3.9.2 réalise ce test ?

    Pas de conseil particulier pour un passage de la 3.4.0 à la 3.9.2 ?

    D'avance merci.
    FRanck.

  6. #6
    Rédacteur
    Avatar de Vincent Rogier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 373
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 373
    Par défaut
    pour le contrôle du nombre de bind, oui !
    Si tu dépasses le max, OCILIB lève une erreur de type OCI_ERR_MAX_BIND.

    Pour la migration, rien de particuliers, mais regardes le changelog au cas ou.

    Pour info une 3.9.3 va sortir en début de semaine (quelques fix mineurs)
    Vincent Rogier.

    Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog

    Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique !

    OCILIB (C Driver for Oracle)

    Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2009
    Messages : 41
    Par défaut
    Re,

    J'utilise dans mon programme OCI_BindString et OCI_BindInt.
    Ces deux fonctions ne semblent pas me renvoyer la valeur false en 3.4.0...
    le plantage vu précédemment se produit sur un OCI_BindInt et j'ai le plantage suivant sur le 528 binds... ?

    Donc je rectifie, le plantage est sur OCI_Bind.... et non sur OCI_Execute dans l'exemple...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    OCI Bind #528 Longueur :LONGUEUR_21_1
    ORA-24550: signal received: [si_signo=11] [si_errno=0] [si_code=1] [si_addr=3a4c
    4f4e47554555]
    kpedbg_dmp_stack()+368<-kpeDbgCrash()+160<-kpeDbgSignalHandler()+928<-skgesig_si
    gactionHandler()+528<-<kernel><-ocistrcasecmp()+192<-OCI_HashLookup()+320<-OCI_H
    ashAdd()+336<-OCI_HashAddInt()+160<-OCI_BindData()+5632<-OCI_BindInt()+336<-do_i
    nsert()+2032<-main()+1344<-main_opd_entry()+80
    Killed
    Mes tests sont du type

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    			sprintf(w,":LONGUEUR_%d_%d",i+1,j+1);
    			fprintf(stdout,"OCI Bind #%d Longueur %s\n",nbinds,w);
    			if (!OCI_BindInt(st_insert,w,&longueur[i][j]))
    			{
    				sprintf(mess,"Error OCI Bind LONGUEUR #%d",nbinds);
    				do_error(mess);
    			}

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [OCILIB] - plantage appli. sur OCI_ExecuteStmt
    Par GoodNewsFromStars dans le forum Interfaces de programmation
    Réponses: 2
    Dernier message: 26/01/2009, 21h25
  2. Plantage de Delphi 7
    Par Andry dans le forum EDI
    Réponses: 3
    Dernier message: 04/09/2003, 16h36
  3. Réponses: 7
    Dernier message: 20/08/2003, 10h33
  4. plantage a la deconnexion du client
    Par travail dans le forum 4D
    Réponses: 3
    Dernier message: 05/06/2003, 13h39
  5. [Kylix] Plantage IDE Kylix3/Mandrake 9.0
    Par OmicroN dans le forum EDI
    Réponses: 3
    Dernier message: 28/01/2003, 23h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo