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
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.
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.
Partager