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 :

Tester les index utiles


Sujet :

Administration Oracle

  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 69
    Par défaut Tester les index utiles
    Bonjour,

    Je travaille sur une BDD 9i et je voulais savoir si il était possible de détecter d'un seul coup les index utiles ou non! car il y pas plein d'indexd partout et je pense qu'ils ne sont pas tous justifié!
    Existe t-il aussi un outils qui me permet de savoir quelle type d'index est le plus rapide par exemple sur tel clé étrangère un index bitmap est préférable ou non

    Merci

  2. #2
    Membre Expert Avatar de fatsora
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 103
    Par défaut
    Bonjour,

    Comme tahiti.oracle.com est planté !!

    voir ici un exemple : MONITORING INDEX USAGE

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

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    139
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2006
    Messages : 139
    Par défaut
    Pour dépanner si le dba est occupé...on peut jeter un oeil dans v$sql_plan ou/et dba_hist_sqlplan.

    Pour la pertinence des index, l'experimentation reste le seul outil fiable

  4. #4
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 69
    Par défaut
    J'ai adapté un script trouvé sur le net:

    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
    DECLARE
       s_IndexName      VARCHAR2(255);
     
       Cursor c_Indexes Is
          SELECT IDX.INDEX_NAME
          FROM USER_INDEXES IDX
          WHERE INDEX_TYPE = 'NORMAL' OR INDEX_TYPE = 'BITMAP';
     
    BEGIN
     
       Open   c_Indexes;
       Loop
     
          FETCH  c_Indexes INTO s_IndexName;
          EXIT WHEN c_Indexes%NOTFOUND;
     
    	  EXECUTE IMMEDIATE 'ALTER INDEX' || s_IndexName || 'monitoring usage';
     
       End Loop;
       Close  c_Indexes;
     
       COMMIT;
     
    END;
    /
    Si ça peut aider certains

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    750
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 750
    Par défaut
    N'oublie pas le script qui fera le NO MONITORING quand t'auras plus besoin de monitorer tes indexes.

  6. #6
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 69
    Par défaut
    je devrais réussir à faire le changement dans le script . En revanche Oracle ne veut pas monitorer les index dont le nom excede 30 caractères (sous 9i) il faudrait que j'adapte le script à moins que ce soit une erreur de ma part.

    j'ai tenté:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    IF (LENGTH(s_IndexName) < 30) THEN
    	EXECUTE IMMEDIATE 'ALTER INDEX' || s_IndexName || 'MONITORING USAGE';
              END IF;
    Mais j'ai toujours la même erreur:

    ORA-00972: l'identificateur est trop long
    ORA-06512: à ligne 17

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    750
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 750
    Par défaut
    comment arrives tu à créer des indexex avec un nom > 30 caractères.
    Ce n'est pas possible

  8. #8
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 69
    Par défaut
    alors pourquoi il sort cette erreur? Effectivement j'ai vérifié aucun index n'excede 30 caractères !

  9. #9
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 69
    Par défaut
    Citation Envoyé par adetag Voir le message
    alors pourquoi il sort cette erreur? Effectivement j'ai vérifié aucun index n'excede 30 caractères !
    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
    SET SERVEROUTPUT ON
    DECLARE
       s_IndexName      VARCHAR2(30);
     
       Cursor c_Indexes Is
          SELECT IDX.INDEX_NAME
          FROM USER_INDEXES IDX
          WHERE INDEX_TYPE = 'NORMAL' OR INDEX_TYPE = 'BITMAP';
     
    BEGIN
     
       Open   c_Indexes;
       Loop
     
          FETCH  c_Indexes INTO s_IndexName;
          EXIT WHEN c_Indexes%NOTFOUND;
          DBMS_OUTPUT.PUT_LINE('Nom index: ' || s_IndexName);
          DBMS_OUTPUT.NEW_LINE ;
    			EXECUTE IMMEDIATE 'ALTER INDEX ' || s_IndexName || ' MONITORING USAGE';
     
       End Loop;
       Close  c_Indexes;
     
       COMMIT;
     
    END;
    Ce code fonctionne parfaitement je l'ai testé moi même
    J'avais zappé les espaces après ALTER INDEX et avant MONITORING USAGE
    Pour désactiver le monitoring remplacer
    MONITORING USAGE
    par :
    NOMONITORING USAGE
    Attention ici j'utilise la vue: USER_INDEXES IDX cela prendra donc en compte les index que l'utilisateur a créé

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

Discussions similaires

  1. Paradox:Probleme avec les index
    Par byte dans le forum Bases de données
    Réponses: 2
    Dernier message: 06/01/2005, 16h08
  2. Les utilitaires utile et leur utilités
    Par netah25 dans le forum Autres Logiciels
    Réponses: 5
    Dernier message: 27/10/2004, 12h26
  3. Questions sur les indexations
    Par freud dans le forum Bases de données
    Réponses: 2
    Dernier message: 11/05/2004, 11h38
  4. [JUnit] Pour tester les methodes d'acces à une sgdb
    Par yanis97 dans le forum Tests et Performance
    Réponses: 2
    Dernier message: 15/04/2004, 15h55
  5. Les index sous Sybase
    Par Emdis dans le forum Autres SGBD
    Réponses: 2
    Dernier message: 02/06/2003, 15h21

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