Précédent   Forum du club des développeurs et IT Pro > Bases de données > Oracle > SQL
SQL Forum d'entraide sur le SQL pour Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 05/12/2012, 10h30   #1
raz2008
Futur Membre du Club
 
Inscription : avril 2008
Messages : 55
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 55
Points : 16
Points : 16
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.
raz2008 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2012, 15h13   #2
Pomalaix
Rédacteur
 
Inscription : décembre 2002
Messages : 2 653
Détails du profil
Informations personnelles :
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : décembre 2002
Messages : 2 653
Points : 4 125
Points : 4 125
La réponse dépend de votre version, que vous n'avez pas précisée.
__________________
Consultant / formateur Oracle indépendant
Certifié OCP 10g et 11g, sécurité 11g
Pomalaix est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 05/12/2012, 16h53   #3
pachot
Expert Confirmé
 
Avatar de pachot
 
Homme Franck Pachot
Consultant DBA en Suisse (Trivadis SA)
Inscription : novembre 2007
Messages : 987
Détails du profil
Informations personnelles :
Nom : Homme Franck Pachot
Âge : 42
Localisation : Suisse

Informations professionnelles :
Activité : Consultant DBA en Suisse (Trivadis SA)
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : novembre 2007
Messages : 987
Points : 2 755
Points : 2 755
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.
__________________
A lire sur mon blog Oracle - Articles d'Experts des articles traduits en français de Jonathan Lewis, Tom Kyte, Doug Burns, Cary Millsap, Greg Rahn ...
pachot est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 06/12/2012, 12h31   #4
funoracle
Membre habitué
 
Homme
Administrateur de base de données
Inscription : décembre 2011
Messages : 46
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 : 46
Points : 110
Points : 110
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.
funoracle est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 19h11.


 
 
 
 
Partenaires

Hébergement Web