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 :

Shrink de table : Options ?


Sujet :

Administration 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 Shrink de table : Options ?
    Bonjour ,

    En 11g le shrink de table est une technique permettant de gagner de l'espace gaspillé dans une table et éviter un move (coûteux).

    mais j'entendes souvent parler de shrink en appliquant systématiquement et respectivement le shrink comme suit :

    alter table mytable shrink space; -- pour la ré-init du HWM
    puis
    alter table mytable shrink space compact [CASCADE] ; -- pour la ré-init du HWM

    Pourquoi ne pas appliquer directement la 2ème première commande ?
    merci.

  2. #2
    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
    Il y a peut-être une erreur (je dois encore le tester en 11gR2) dans ce que vous avancez ici à savoir

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    alter table t shrink space compact;
    prend les données de la fin de la table et les place au début de la table sans toucher au HWM alors que

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    alter table t shrink space;
    supprime le HWM tout en déplaçant les données de la fin au début de la table.

    Attention aussi à l'effet que peut avoir cette commande sur le clustering factor des indexes de cette table. Tout ordre pré-établi peut être rompu après le shrink; augmentant ainsi la valeur du clustering factor et réduisant donc la désirabilité de cet index.
    Bien Respectueusement
    www.hourim.wordpress.com

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

  3. #3
    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
    ...
    alter table mytable shrink space compact [CASCADE] ; -- pour la ré-init du HWM
    ...
    •The COMPACT clause lets you divide the shrink segment operation into two phases. When you specify COMPACT, Oracle Database defragments the segment space and compacts the table rows but postpones the resetting of the high water mark and the deallocation of the space until a future time. This option is useful if you have long-running queries that might span the operation and attempt to read from blocks that have been reclaimed. The defragmentation and compaction results are saved to disk, so the data movement does not have to be redone during the second phase. You can reissue the SHRINK SPACE clause without the COMPACT clause during off-peak hours to complete the second phase.

  4. #4
    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
    C'était une erreur ,j'ai corrigé dans le post
    Sinon à quoi ça sert d'enchaîner les 2 commandes ?
    ALTER TABLE t shrink space; serait suffisant ?

  5. #5
    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
    This option is useful if you have long-running queries that might span the operation and attempt to read from blocks that have been reclaimed. The defragmentation and compaction results are saved to disk, so the data movement does not have to be redone during the second phase. You can reissue the SHRINK SPACE clause without the COMPACT clause during off-peak hours to complete the second phase.

  6. #6
    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,

    En clair:
    1. une requête commence à lire la table: elle lit le HWM et commence à lire les lignes
    2. une autre session fait un SHRINK SPACE en abaissant le HWM
    3. la première requête continue jusqu'au HWM qu'elle a lu avant car elle n'est pas au courant du shrink
    4. une autre session alloue de l'espace en réutilisant l'espace libéré par le shrink
    5. la première requête continue et se retrouve à lire des blocs qui n'appartiennent plus à la table. elle s'en aperçoit (cat data_object_id différent) et sort en erreur

    Donc l'idée est de faire l'opération longue SHRINK SPACE COMPACT en online, sans déranger personne, pour tasser les lignes au début de la table.
    Puis plus tard le SHRINK SPACE en offline (qui sera alors rapide puisque tout le boulot a été fait par le premier)

    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

  7. #7
    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
    Une très belle explication !
    Merci Franck.

  8. #8
    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
    Merci,

    En fait en premier j'avais la fausse idée que c'était un problème de verrou pour baisser le HWM. C'est en faisant un test vite fait avant de répondre que je me suis aperçu de l'erreur.

    Le test complet est ici: http://ora-demo.pachot.net/shrink_table.html#3 on voit le cas où une session concurrent peut se retrouver avec un ORA-10632: Invalid rowid

    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. [11gR2] shrink de table
    Par devkais dans le forum Oracle
    Réponses: 0
    Dernier message: 12/07/2013, 08h50
  2. [WD17] Entete d'une Table, options colonne Triable et Loupe
    Par Unkof dans le forum WinDev
    Réponses: 2
    Dernier message: 27/11/2012, 10h05
  3. Utiliser les options qui sont dans ma table
    Par valery17 dans le forum Access
    Réponses: 1
    Dernier message: 21/04/2006, 22h45
  4. l'option de tables innodb pas actif sur mysql5.0.18 xampp
    Par Gothrunk dans le forum Installation
    Réponses: 4
    Dernier message: 11/04/2006, 22h15
  5. Syntaxe CREATE Table et option "Chaine vide au
    Par leteltel dans le forum Access
    Réponses: 2
    Dernier message: 10/02/2006, 17h31

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