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 :

Action post create index


Sujet :

Administration Oracle

  1. #1
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 348
    Points : 604
    Points
    604
    Par défaut Action post create index
    Bonjour,

    Je me demande s il faut reclaculer les stats sur une table après la création d'un nouveau index sur grosse table ? Puisq'il y a eu déjà parsing sans index.

    La création d'index dure plus de 2h, pendant ce temps: la table est accessible ? accès perturbé ?

    MERCI.
    SDR.
    "ceux qui vivent, ce sont ceux qui luttent."

  2. #2
    Membre émérite
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    1 993
    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 : 1 993
    Points : 2 499
    Points
    2 499
    Par défaut
    Salut,

    Quand tu fais un CREATE INDEX, Oracle calcule déjà les stats sur ton index, donc de ce côté là, tu n'as rien à faire.
    Pour la table, je ne vois pas pourquoi tu vas recalculer les stats de ta table vu que la création d'un index n'a aps d'impact sur le contenu de ta table.

    Si la création de ton index dure 2 heures, alors oui, cela risque de ralentir les opérations sur toute ta base et pas que sur ta table. La création d'un index réclame des ressources qui, forcément penda nt ce moment là, ne seront pas disponibles pour les autres opérations.
    DBA Oracle
    Rédacteur du blog : dbaoraclesql.canalblog.com

  3. #3
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 348
    Points : 604
    Points
    604
    Par défaut
    Merci de réponse rapide

    Maintenant si j'ai déjà un index sur la colonne (A) par exemple puis je créé un nouveau index composé sur les colonnes (A,B): est ce que ce 2ème index composé risque de perturber les requêtes qui utilisent déjà le 1er index sur la colonne (A) ?

    MERCI.

    A+
    SDR.
    "ceux qui vivent, ce sont ceux qui luttent."

  4. #4
    Membre confirmé
    Homme Profil pro
    xxxxxxxxx
    Inscrit en
    Avril 2015
    Messages
    392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : xxxxxxxxx

    Informations forums :
    Inscription : Avril 2015
    Messages : 392
    Points : 552
    Points
    552
    Par défaut
    Il faudra que tu fasse ça sur une base de test :
    en mettant l'ancien index en mode invisible et tu regarde si les nouvelles requêtes utiliseront le nouvel index que
    tu viens de créer est-ce que ceci est bénéfiques ou on ?????
    A propos du calcul de la table volumineuse tu peux utiliser ce lien pour le calcul des statistiques en mode parallèle ??
    voici un exemple de calcul des statistiques sur un schéma entier qui utilise le mode concurrent sur une base de version 12c :
    http://ahmedaangour.blogspot.com/201...s-et-mode.html

    bonne chance !

  5. #5
    Membre émérite
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    1 993
    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 : 1 993
    Points : 2 499
    Points
    2 499
    Par défaut
    Citation Envoyé par agdid04 Voir le message
    Maintenant si j'ai déjà un index sur la colonne (A) par exemple puis je créé un nouveau index composé sur les colonnes (A,B): est ce que ce 2ème index composé risque de perturber les requêtes qui utilisent déjà le 1er index sur la colonne (A) ?
    Si tu as un index sur la colonne A, celui sur les colonnes A et B fera doublon... tu peux donc supprimer celui sur la colonne A seule;
    DBA Oracle
    Rédacteur du blog : dbaoraclesql.canalblog.com

  6. #6
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 348
    Points : 604
    Points
    604
    Par défaut
    Bonjour,

    MERCI des retours.

    Et pour les requêtes qui utilisent index sur la colonne (B): vont pas utiliser l'index composite sur les 2 colonnes (A,B) ? continueront à utiliser index sur (B)?

    MERCI.
    SDR.
    "ceux qui vivent, ce sont ceux qui luttent."

  7. #7
    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
    Bonjour

    Je me demande s il faut reclaculer les stats sur une table après la création d'un nouveau index sur grosse table ? Puisq'il y a eu déjà parsing sans index.
    Vous n'avez pas besoin de recalculer les stats pour invalider le cursor qui est dans le cache. L'invalidation est automatique à la fin de la création d'un index

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    SQL> select * from t1 where n3=10;
     
            N1         N2         N3 F DAT1
    ---------- ---------- ---------- - --------
            11          1         10 Y 11/01/22
     
    SQL> @xpsimp
     
     
    SQL_ID  bxawy4mb85hss, child number 0
    -------------------------------------
    select * from t1 where n3=10
     
    Plan hash value: 3617692013
    --------------------------------------------------------------------------
    | Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |
    --------------------------------------------------------------------------
    |   0 | SELECT STATEMENT  |      |       |       |  1086 (100)|          |
    |*  1 |  TABLE ACCESS FULL| T1   |     1 |    23 |  1086   (2)| 00:00:01 |
    --------------------------------------------------------------------------
     
    Predicate Information (identified by operation id):
    ---------------------------------------------------
       1 - filter("N3"=10)
     
     
    SQL> create index t1_idx_n3 on t1(n3);
     
    Index created.
     
    SQL> @gvsql
    Enter value for sql_id: bxawy4mb85hss
     
    SQL_ID        CHILD_NUMBER B B EXECUTIONS  END_FETCH INVALIDATIONS OBJECT_STA
    ------------- ------------ - - ---------- ---------- ------------- ----------
    bxawy4mb85hss            0 N N          1          1             2 INVALID_UNAUTH
     
     
    SQL> select * from t1 where n3=10;
     
            N1         N2         N3 F DAT1
    ---------- ---------- ---------- - --------
            11          1         10 Y 11/01/22
     
    SQL> @xpsimp
     
    SQL_ID  bxawy4mb85hss, child number 0
    -------------------------------------
    select * from t1 where n3=10
     
    Plan hash value: 3886713857
     
    -------------------------------------------------------------------------------------------------
    | Id  | Operation                           | Name      | Rows  | Bytes | Cost (%CPU)| Time     |
    -------------------------------------------------------------------------------------------------
    |   0 | SELECT STATEMENT                    |           |       |       |     4 (100)|          |
    |   1 |  TABLE ACCESS BY INDEX ROWID BATCHED| T1        |     1 |    23 |     4   (0)| 00:00:01 |
    |*  2 |   INDEX RANGE SCAN                  | T1_IDX_N3 |     1 |       |     3   (0)| 00:00:01 |
    -------------------------------------------------------------------------------------------------
     
    Predicate Information (identified by operation id):
    ---------------------------------------------------
       2 - access("N3"=10)
     
     
    SQL> @gvsql
    Enter value for sql_id: bxawy4mb85hss
     
    SQL_ID        CHILD_NUMBER B B EXECUTIONS  END_FETCH INVALIDATIONS OBJECT_STA
    ------------- ------------ - - ---------- ---------- ------------- ----------
    bxawy4mb85hss            0 N N          1          1             2 VALID
    Et pour les requêtes qui utilisent index sur la colonne (B): vont pas utiliser l'index composite sur les 2 colonnes (A,B) ? continueront à utiliser index sur (B)?
    Pour qu'un index soit considéré par Oracle lors de l'optimisation d'un plan d'execution pour une requête, Il est très important pour cet index qu'il commence par au une (ou plusieurs) colonne figurant dans la partie prédicat de cette requête. Et de préférence sur un prédicat d'égalité.

    Pour répondre à votre question, un index (A,B) ne sera pas utilisé pour couvrir des requêtes ayant ce genre de pédicats

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     where
          b = xx
    and c = zz
    Bien à vous
    Bien Respectueusement
    www.hourim.wordpress.com

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

  8. #8
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 348
    Points : 604
    Points
    604
    Par défaut
    Merci bien pour toutes réponses.

    Une dernière question: pendant la création de nouveau index => l'accès à la table par les autres requêtes utilisant d'autres index reste ouvert ?

    L'impact de a création de ce nouveau index c'est plus sur la charge serveur ?

    MERCI.

    A+
    SDR.
    "ceux qui vivent, ce sont ceux qui luttent."

  9. #9
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 727
    Points : 261
    Points
    261
    Par défaut
    Bonjour,

    Si vous êtes en EE y a l'option CREATE INDEX ONLINE.

    A+

Discussions similaires

  1. Problème avec boucle for() et action POST
    Par Oli_Ifre dans le forum Langage
    Réponses: 4
    Dernier message: 26/04/2007, 09h52
  2. dbms_job : drop & create index impossible
    Par okilele dans le forum SQL
    Réponses: 1
    Dernier message: 18/04/2007, 08h34
  3. [Debutant] Form (Action,Post), lien vers ma servlet
    Par tck-lt dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 13/12/2006, 12h41
  4. Réponses: 3
    Dernier message: 30/06/2006, 22h56
  5. ORA-00054 resource busy on create index
    Par ducho dans le forum Administration
    Réponses: 2
    Dernier message: 01/10/2004, 14h35

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