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 :

Suivre l'utilisation d'un index


Sujet :

Oracle

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 200
    Points : 67
    Points
    67
    Par défaut Suivre l'utilisation d'un index
    Bonjour,
    Je suis newbie en oracle (et j'espere que je suis au bon endroit). Voici mon probleme: J'ai un logiciel qui balance des ordres sql à la base de données et j'aimerais savoir comment on peut tracer et voir si les indexes de la base sont bien utilisés. Le but est de tout voir avant de se pencher sur l'optimisation de la requête.
    D'avance merci.

  2. #2
    Membre éprouvé Avatar de 13thFloor
    Homme Profil pro
    DBA Oracle freelance
    Inscrit en
    Janvier 2005
    Messages
    670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France

    Informations professionnelles :
    Activité : DBA Oracle freelance

    Informations forums :
    Inscription : Janvier 2005
    Messages : 670
    Points : 945
    Points
    945
    Par défaut
    Bonjour,
    tu peux visualiser les index utilisés dans les requêtes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    select n.SNAP_ID,SQL_ID,OBJECT_OWNER,OBJECT_NAME,OBJECT_TYPE,
    OPERATION,OPTIONS
    from dba_hist_sql_plan p,
         DBA_HIST_SNAPSHOT n,
         DBA_HIST_SQLSTAT s
    where n.SNAP_ID=s.SNAP_ID
    and s.sql_id=p.sql_id
    and OPERATION='INDEX'
    and OBJECT_OWNER!='SYS'  and BEGIN_INTERVAL_TIME>sysdate-1
    order by 1;
    Autre possibilité : monitorer les index, mais dans ce cas, dés qu'il est utilisé, tu ne sais pas combien de fois et par qui.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alter index owner.index_name monitoring usage;
    Puis, dans quelques heures :
    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
    SELECT   u.name owner ,io.name index_name,
                t.name table_name,
                DECODE (BITAND (i.flags, 65536), 0, 'NO', 'YES') monitoring,
                DECODE (BITAND (ou.flags, 1), 0, 'NO', 'YES')used,
                ou.start_monitoring,
                ou.end_monitoring
         FROM   sys.obj$ io,
                sys.obj$ t,
                sys.ind$ i,
                sys.object_usage ou,
    		sys.user$ u
        WHERE      i.obj# = ou.obj#
                AND io.obj# = ou.obj#
                AND t.obj# = i.bo#
    AND u.user#=io.owner#;
    Par contre, qu'appelles-tu "tout voir" ?
    Attention : l’utilisation d'un index n'est pas toujours un gage de performance.
    S'il n'y a pas de critères discriminants ou d'histogrammes, ils ne seront pas utiles.

  3. #3
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Mars 2010
    Messages
    536
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 536
    Points : 1 359
    Points
    1 359
    Par défaut
    Citation Envoyé par 13thFloor Voir le message
    Autre possibilité : monitorer les index, mais dans ce cas, dés qu'il est utilisé, tu ne sais pas combien de fois et par qui.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alter index owner.index_name monitoring usage;
    Je suis tout à fait d’accord avec vous mais en faisant une précision quand même
    Un index peut être signalé comme non utilisé alors qu’il est parfaitement utilisé par Oracle. Je veux parler tout particulièrement des indexes couvrant les ''Foreign Keys'' qu’Oracle utilise à chaque suppression de données de la table mère. Ils sont donc utilisés mais reportés comme non utilisés par l’outil de monitoring

    http://asktom.oracle.com/pls/asktom/...35400346157013

    http://richardfoote.wordpress.com/20...caution-kid-a/
    Bien Respectueusement
    www.hourim.wordpress.com

    "Ce qui se conçoit bien s'énonce clairement"

  4. #4
    Membre éprouvé Avatar de pinocchio
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2002
    Messages
    795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2002
    Messages : 795
    Points : 960
    Points
    960
    Par défaut
    Citation Envoyé par 13thFloor Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    select n.SNAP_ID,SQL_ID,OBJECT_OWNER,OBJECT_NAME,OBJECT_TYPE,
    OPERATION,OPTIONS
    from dba_hist_sql_plan p,
         DBA_HIST_SNAPSHOT n,
         DBA_HIST_SQLSTAT s
    where n.SNAP_ID=s.SNAP_ID
    and s.sql_id=p.sql_id
    and OPERATION='INDEX'
    and OBJECT_OWNER!='SYS'  and BEGIN_INTERVAL_TIME>sysdate-1
    order by 1;
    Merci beaucoup, je ne connaissais pas et cela peut toujours être un premier point d'approche pour optimiser un peu.
    Par contre, il manque juste le préfixe de la table pour SQL_ID (s ou p)
    Merci encore
    La SNCF est mon ami
    blog PARIS-GRANVILLE
    Inscription au panel IPSOS (possibilité d'avoir des bons d'achats)

Discussions similaires

  1. [ASE 12.5] Comment connaître l'utilisation de chaque index?
    Par syldup dans le forum Adaptive Server Enterprise
    Réponses: 1
    Dernier message: 31/08/2007, 15h50
  2. [DEBUTANT] Utilisation UNIQUE KEY, INDEX,
    Par nounetmasque dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 26/07/2007, 17h07
  3. [Oracle 8i] utilisation d'un index
    Par azziz2005 dans le forum Oracle
    Réponses: 9
    Dernier message: 18/05/2006, 17h42
  4. [TUNING] pb non utilisation de l'index
    Par ruthene dans le forum Oracle
    Réponses: 10
    Dernier message: 13/04/2006, 17h02
  5. Taux d'utilisation d'un index
    Par plochert dans le forum Oracle
    Réponses: 1
    Dernier message: 07/04/2006, 15h22

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