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

Administration Oracle Discussion :

Trace 10046 brute et bind variables : pb avec les exécutions, nb différent, type incompatible etc


Sujet :

Administration Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    2 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 2 005
    Par défaut Trace 10046 brute et bind variables : pb avec les exécutions, nb différent, type incompatible etc
    Bonjour,

    J'ai généré une trace 10046 sur une Oracle 12 avec le niveau 4 pour voir les bind variables.
    Avec tkprof je me rends compte que les bind values sautent... mais bon, ce n'est pas le plus grave, je vais lire le fichier brut.

    Le problème que je rencontre est le suivant : une même requête peut s'exécuter plusieurs fois, avec des valeurs de bind différentes MAIS, parfois, leur nombre change, leur type est parfois incompatible...

    Exemple 1 OK : 3 exécutions, bind variables OK en nombre et en type.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    SQL ID: 1p5grz1gs7fjq Plan Hash: 813480514
    select obj#,type#,ctime,mtime,stime, status, dataobj#, flags, oid$, spare1, spare2, spare3, signature, spare7, spare8, spare9
    from obj$ 
    where owner#=:1 and name=:2 and namespace=:3 and remoteowner is null and linkname is null and subname is null
     
     
    Bind#0 value=96 	
    Bind#1 value="ZZ01"
    Bind#2 value=1  	
     
     
    Bind#0 value=1
    Bind#1 value="ZZ01"
    Bind#2 value=1
     
     
    Bind#0 value=0
    Bind#1 value="_NEXT_OBJECT"
    Bind#2 value=1

    Exemple 2 KO : le type des bind ne correspond pas au type des colonnes du SELECT. Bind 0 et 1 OK mais les bind 2 et 3 sont des dates qui vont soit dans les colonnes namespace et obj# soit dans les colonnes name et namespace...
    Au fait, pourquoi les bind commencent à 0 dans la trace et à 1 dans la requête? On est d'accord, ci-desous Bind#0 est associé au champ owner?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SQL ID: 8zc85a8249x81 Plan Hash: 2683643009
    update obj$ set obj#=:4, type#=:5,ctime=:6,mtime=:7,stime=:8,status=:9, dataobj#=:10,flags=:11,oid$=:12,spare1=:13,spare2=:14,spare3=:15,signature=:16,spare7=:17,spare8=:18,spare9=:19
    where owner#=:1 and name=:2 and namespace=:3 and remoteowner is null and linkname is null and subname is null
    Bind#0 value=1
    Bind#1 value=0
    Bind#2 value="5/31/2017 9:6:7"
    Bind#3 value="2/5/2018 13:39:1"
    Exemple 3 KO : nombre de bind différent différent selon les exécutions : pour quelle raison?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    SQL ID: 9tgj4g8y4rwy8 Plan Hash: 3755742892
    select type#,blocks,extents,minexts,maxexts,extsize,extpct,user#,iniexts,
      NVL(lists,65535),NVL(groups,65535),cachehint,hwmincr, NVL(spare1,0),
      NVL(scanhint,0),NVL(bitmapranges,0)
    from seg$ 
    where ts#=:1 and file#=:2 and block#=:3
     
     
    Bind#0 value=0
    Bind#1 value=1024
    Bind#2 value=1112 
     
     
    Bind#0 value=104
     
     
    Bind#0 value=0
    Bind#1 value="I_SYN2"
    Bind#2 value=4
     
     
    Bind#0 value=103 
     
     
    Bind#0 value=0
    Bind#1 value="I_SYN1"
    Bind#2 value=4

  2. #2
    Expert confirmé
    Avatar de pachot
    Homme Profil pro
    Developer Advocate YugabyteDB
    Inscrit en
    Novembre 2007
    Messages
    1 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Developer Advocate YugabyteDB
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 822
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Est-tu sûr de faire correctement le lien entre les bind variables et les curseurs?
    Dans la trace brute, le texte SQL est après PARSING IN CURSOR #140511204450784
    puis les PARSE BIND EXEC FETCH référencent le curseur avec le même nombre, par exemple BINDS #140511204450784
    se trouvera entre PARSE #140511204450784 et EXEC #140511204450784, suivi des datatype et valeurs, mais d'autres curseurs peuvent être exécutés entre temps (requêtes récursives)

    Cordialement,
    Franck.

  3. #3
    Membre Expert
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    2 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 2 005
    Par défaut
    Je te remercie, je regarde ça dès que j'ai un moment de libre chez mon client

Discussions similaires

  1. Réponses: 2
    Dernier message: 23/12/2014, 09h19
  2. [AC-2010] Alimenter une variable tableaux avec les valeurs d'un champs
    Par curt dans le forum VBA Access
    Réponses: 5
    Dernier message: 10/11/2011, 19h26
  3. Réponses: 10
    Dernier message: 03/08/2011, 16h15
  4. Réponses: 4
    Dernier message: 30/11/2010, 08h27
  5. [9i] Bind variable dans fichier trace
    Par learn dans le forum Oracle
    Réponses: 6
    Dernier message: 27/01/2006, 15h24

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