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

Oracle Discussion :

sql_id introuvable dans la shared pool


Sujet :

Oracle

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 149
    Points : 52
    Points
    52
    Par défaut sql_id introuvable dans la shared pool
    Bonjour
    j ai executé hier une grosse requete (3 pages de code ...).
    Pendant l execution de la requete j ai noté le sql_id.
    Apres une 45min d execution j ai essayé de faire :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select * from v$sql where sql_id=....
    rien
    de même pour dba_hist_sqltext !!
    pourquoi je ne trouve ma requete en memoire juste apres son execution ?
    Pourtant elle apparait bien dans le rapport AWR ...
    Merci.

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

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

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 821
    Points : 6 443
    Points
    6 443
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Si elle apparaît dans le rapport AWR, alors c'est sûr qu'elle est dans dba_hist_sqltext.

    Pendant l execution de la requete j ai noté le sql_id.
    Comment ? d'où venait ce sql_id ? est-ce vraiment le bon ?

    Cordialement,
    Franck.
    Franck Pachot - Developer Advocate Yugabyte 🚀 Base de Données distribuée, open source, compatible PostgreSQL
    🗣 twitter: @FranckPachot - 📝 blog: blog.pachot.net - 🎧 podcast en français : https://anchor.fm/franckpachot

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 149
    Points : 52
    Points
    52
    Par défaut
    Bonjour Franck
    Ce sql id provient d un copier/coller du sql id dans v$session au moment de l execution.
    j ai l habitude avec cette manip.
    Merci.

  4. #4
    Expert éminent
    Avatar de pachot
    Homme Profil pro
    Developer Advocate YugabyteDB
    Inscrit en
    Novembre 2007
    Messages
    1 821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

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

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 821
    Points : 6 443
    Points
    6 443
    Billets dans le blog
    1
    Par défaut
    alors je n'ai pas d'idée.
    On peut forcer un sql_id à être pris en compte par AWR avec : DBMS_WORKLOAD_REPOSITORY.ADD_COLORED_SQL
    Franck Pachot - Developer Advocate Yugabyte 🚀 Base de Données distribuée, open source, compatible PostgreSQL
    🗣 twitter: @FranckPachot - 📝 blog: blog.pachot.net - 🎧 podcast en français : https://anchor.fm/franckpachot

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 149
    Points : 52
    Points
    52
    Par défaut
    Citation Envoyé par pachot Voir le message
    alors je n'ai pas d'idée.
    On peut forcer un sql_id à être pris en compte par AWR avec : DBMS_WORKLOAD_REPOSITORY.ADD_COLORED_SQL
    Même quand vous n'avez pas d'idée vous m'impressionnez :
    Merci pour l'astuce(ADD_COLORED_SQL) , je reviendrais sur cette discussion si j'aurais une réponse ou plus d'infos.
    Merci Franck

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 149
    Points : 52
    Points
    52
    Par défaut
    Bonjour ,

    Est-il possible d'avoir un sql_id en mémoire pour une requête non exécutée ?
    Une requête uniquement parsée par exemple ...

  7. #7
    Expert éminent
    Avatar de pachot
    Homme Profil pro
    Developer Advocate YugabyteDB
    Inscrit en
    Novembre 2007
    Messages
    1 821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

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

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 821
    Points : 6 443
    Points
    6 443
    Billets dans le blog
    1
    Par défaut
    Oui. Par exemple, on peut voir les requêtes parsées, non exécutées, et non en cours d'exécution:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from v$sql where executions=0 and users_executing=0 and parse_calls>0;
    Franck Pachot - Developer Advocate Yugabyte 🚀 Base de Données distribuée, open source, compatible PostgreSQL
    🗣 twitter: @FranckPachot - 📝 blog: blog.pachot.net - 🎧 podcast en français : https://anchor.fm/franckpachot

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 149
    Points : 52
    Points
    52
    Par défaut
    Bonjour Franck ,

    Puis-je comprendre qu'un sql_id est inscrit en mémoire dès la phase de parse ?

    Admettons que je j'essaye d'exécuter une requête avec une erreur syntaxique...
    Dans ce cas un sql_id est-il généré ...un curseur en mémoire est-il créé ?
    merci.

  9. #9
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Citation Envoyé par tropiko Voir le message
    ...
    Puis-je comprendre qu'un sql_id est inscrit en mémoire dès la phase de parse ?
    ...
    Oui. Faite un test avec DBMS_SQL par exemple.
    During the parse, the database performs a shared pool check to determine whether it can skip resource-intensive steps of statement processing. To this end, the database uses a hashing algorithm to generate a hash value for every SQL statement. The statement hash value is the SQL ID shown in V$SQL.SQL_ID
    Citation Envoyé par tropiko Voir le message
    Admettons que je j'essaye d'exécuter une requête avec une erreur syntaxique...
    Dans ce cas un sql_id est-il généré ...un curseur en mémoire est-il créé ?
    ...
    Non, les vérifications de syntaxe et sémantique se passent avant l’étape de génération du sql_id.

  10. #10
    Expert éminent
    Avatar de pachot
    Homme Profil pro
    Developer Advocate YugabyteDB
    Inscrit en
    Novembre 2007
    Messages
    1 821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

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

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 821
    Points : 6 443
    Points
    6 443
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Le sql_id est just un identifiant qui sert à rechercher un SQL identique.
    Puis-je comprendre qu'un sql_id est inscrit en mémoire dès la phase de parse ?
    Oui, si l'on considère que la 'phase de parse' commence après vérification syntaxique et sémantique. A partir du soft parse.

    Mais on ne verra rien dans v$sql sur une erreur syntaxique.

    Cordialement,
    Franck.
    Franck Pachot - Developer Advocate Yugabyte 🚀 Base de Données distribuée, open source, compatible PostgreSQL
    🗣 twitter: @FranckPachot - 📝 blog: blog.pachot.net - 🎧 podcast en français : https://anchor.fm/franckpachot

Discussions similaires

  1. Réponses: 5
    Dernier message: 04/11/2010, 19h10
  2. Requete dans shared pool
    Par guyrnaf dans le forum Administration
    Réponses: 1
    Dernier message: 01/11/2007, 16h19
  3. [ORA-00371] Not enough shared pool memory !!!
    Par max44410 dans le forum Installation
    Réponses: 6
    Dernier message: 30/11/2005, 19h47
  4. [Oracle 8i][Internet] Shared Pool Size
    Par dupin40 dans le forum Administration
    Réponses: 39
    Dernier message: 04/11/2004, 12h39

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