Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 4 sur 4
  1. #1
    Futur Membre du Club
    Inscrit en
    avril 2008
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : avril 2008
    Messages : 62
    Points : 17
    Points
    17

    Par défaut Partitionnement des tables

    Bonjour à tous,

    j'aimerais savoir si le partitionnement d'une tables réserve forcement de l'espace sur les tablespaces utilisés?
    Si oui, comment faire pour que l'espace réservé soit le plus petit possible pour les partitions encore vide?
    Si non, comment partitionner sa table pour garder ses tablespaces le plus disponible possible lorsque les partitions sont vides?

    Ces questions viennent parce que j'ai été mainte fois confronté à des situations ou j'ai des tables partitionnées vides, mais qui occupaient un très important pourcentage de mes tablespaces.

    D'autre part, très souvent pendant le partitionnement d'une table, on a l'erreur
    Code :
    ORA-01658: impossible de créer l'ensemble de blocs contigus INITIAL pour le segment dans le tablespace MON_TABLE_SPACE
    .

    Ci-dessous un bout de code utilisé pour partitionner mais tables. Je fais remarqué que ces tables sont exclusivement utilisé pour des loads par SQL Loader, des INSERT et des SELECT, presque jamais d'UPDATE.
    Code :
    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
     
    TABLESPACE TAB_SPACE_01_A
    PCTUSED    0
    PCTFREE    10
    INITRANS   1
    MAXTRANS   255
    PARTITION BY RANGE (TRANSACTION_DATE)
    (  
      PARTITION TAB_PARTITION_201112 VALUES LESS THAN (TO_DATE(' 2012-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
        NOLOGGING
        NOCOMPRESS
        TABLESPACE TAB_MONOCF_01_A
        PCTFREE    10
        INITRANS   1
        MAXTRANS   255
        STORAGE    (
                    INITIAL          64K
                    NEXT             16M
                    MINEXTENTS       1
                    MAXEXTENTS       UNLIMITED
                    PCTINCREASE      0
                    BUFFER_POOL      DEFAULT
                   )
    )			   
    LOGGING 
    NOCOMPRESS 
    NOCACHE
    NOPARALLEL
    MONITORING;
    Mon code est-il optimal pour les usages de ma tables?
    Si non, quel sont les possibles améliorations à y apporter?

    Merci d'avance de vos contributions.

  2. #2
    Rédacteur

    Profil pro
    Inscrit en
    décembre 2002
    Messages
    2 817
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : décembre 2002
    Messages : 2 817
    Points : 4 309
    Points
    4 309

    Par défaut

    La réponse dépend de votre version, que vous n'avez pas précisée.
    Consultant / formateur Oracle indépendant
    Certifié OCP 12c, 11g, 10g ; sécurité 11g

  3. #3
    Modérateur
    Avatar de pachot
    Homme Profil pro Franck Pachot
    Consultant DBA en Suisse (dbi services) OCM 11g
    Inscrit en
    novembre 2007
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Nom : Homme Franck Pachot
    Âge : 43
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant DBA en Suisse (dbi services) OCM 11g
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : novembre 2007
    Messages : 1 355
    Points : 4 034
    Points
    4 034

    Par défaut

    Bonjour,

    Chaque partition alloue au moins un extent pour son INITIAL. Si on est sur un tablespace en UNIFORM on a probablement des extent assez larges. En AUTOALLOCATE, le premier extent sera probablement plus petit.

    Sinon, en 11g DEFERRED SEGMENT CREATION permet de n'allouer l'espace que lors du premier insert dans la partition.

    Donc dépends le la version, et de la définition du tablespace

    Cordialement,
    Franck.
    Franck Pachot - Consultant en Suisse Romande (dbi services) - Oracle Certified Master (OCP 12c et OCM 11g) - twitter: @FranckPachot


  4. #4
    Membre habitué
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    décembre 2011
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : décembre 2011
    Messages : 52
    Points : 107
    Points
    107

    Par défaut

    Bonjour, juste un conseil :
    s'il est prévu de créer et/ou supprimer les partitions dynamiquement (chaque fin de mois, année ou jour) je te conseille de reprendre la date complète dans le nom crée :
    Code :
    1
    2
     
    ... TAB_PARTITION_<ladateexacte> ...
    Pour une meilleure lisibilité ensuite pour l'administration.
    Parceque TAB_PARTITION_201112 cela peut être 2 dates :
    Décembre 2011 ou le 20/11/2012, voir le 12/11/2020 ?

    Par ailleurs dans ce que l'on voit du code il ne sera pas possible d'insérer des enregistrements dont la date est supérieur au 01/01/2012 (... LESS THAN ...). Il faudra créer la partition adhoc pour pouvoir faire ces inserts.

    Franck.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •