|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() Inscription : août 2006 Messages : 31 ![]() |
Bonjour,
Apres avoir parcouru, en vain, le forum et l'Aide sur ce qui est du "partitioning" des tables de données, je me décide à poser ma question, en espérant qu'elle n'ait pas été déjà posé en ces termes. J'ai actuellement un certain nombre de table ayant un historique de données si lourd que les traitements s'en ressentent chaque jour un peu plus. Je possède Oracle 9.2.0.1, et d'après la documentation il est possible de monter des partitions sur les tables en question. Mes question sont :
|
|
|
00
|
|
|
#2 | |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
Citation:
* Oui, RANGE ou LIST si une colonne de type TAAAA (trimestre année) existe * Non, il faut les créer à l'avance * éventuellement tu peux créer un job qui créer une partition tous les trimestres * à la connexion ? Ca parait pas être le plus pertinent |
|
|
|
00
|
|
|
#3 | |
|
Invité régulier
![]() Inscription : août 2006 Messages : 31 ![]() |
Citation:
Merci de tes réponses Sur l'exemple que tu as mis quelques part sur le forum (http://download.oracle.com/docs/cd/B...i.htm#i1006532 J'ai la totalité du code pour ce qui est de créer une partition sur CREATE, mais mon problème c'est que les tables existe déjà. Je cherche de quelle façon je pourrais le faire sur un ALTER mais je ne trouve pas. Tu n'aurais pas un petit bout de code a me donner ? Pour ce qui est du JOB... j'avais oublié cette option ![]() Merci de ta patience Edit : Je viens de relire le "si une colonne de type TAAAA (trimestre année) existe" un champ date normal devrait l'affaire non ? |
|
|
|
00
|
|
|
#4 | ||
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
Citation:
Citation:
|
||
|
|
00
|
|
|
#5 |
|
Invité régulier
![]() Inscription : août 2006 Messages : 31 ![]() |
|
|
|
00
|
|
|
#6 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
Ha oui... ha bah là j'ai une mauvaise nouvelle : tu ne peux pas partitionner une table non partitionner. Tu peux créer une table partitionnée, y ajouter des partitionnes mais "migrer" la table de non partitionnée à partitionnée. Donc tu fais un CREATE TABLE, tu copies les données, tu supprimes l'ancienne table et tu renommes la nouvelle avec l'ancien nom
bah oui, tu vas quand même pas spécifié la liste de toutes les dates incluses dans chacun des trimestres... si c'est techniquement faisable c'est pas super pertinent |
|
|
00
|
|
|
#7 | ||
|
Invité régulier
![]() Inscription : août 2006 Messages : 31 ![]() |
Citation:
Citation:
To_char(SYSDATE,'Q')||'/'||To_char(SYSDATE,'YYYY') Tu ferais comment toi ? |
||
|
|
00
|
|
|
#8 | ||
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
comme ça : http://oracle.developpez.com/guide/a...age=Chap4#L4.2
Code :
|
||
|
|
00
|
|
|
#9 | |||
|
Invité régulier
![]() Inscription : août 2006 Messages : 31 ![]() |
Citation:
![]() J'ai lu quelques parts que si on mettait MAXVALUE il ne serait plus possible de créer par la suite une nouvelle partition ! Me fourvoierais-je ? Suis-je obligé de le mettre si je connais parfaitement les dates ou si je prévois a l'avance mes partitions prochaines ? |
|||
|
|
00
|
|
|
#10 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
Oui
En réalité tu ne peux plus ajouter de partition mais tu peux splitter (couper en 2) la dernière Non, maxvalue est une partition de débordement qui évite qu'une commande tombe en erreur à cause de l'absence d'une partition. |
|
|
00
|
|
|
#11 | ||
|
Membre du Club
![]() Inscription : décembre 2006 Messages : 119 ![]() |
Bonjour,
j'ai eu le même problème il y a peu mais nous faisions en même temps une migration. Sinon pour éviter des transferts de table qui nécessiteront de les doubler un moment ou a un autre dans le tablespace tu peux faire de la manière suivante :
Sinon je te conseille de mettre la partition "MAXVALUE" au cas où la partition soit créée en retard ou la donnée en avance. Je te conseille aussi de faire la création des nouvelles partitions par script. Tu crées donc au départ la table avec uniquement la partition "MAXVALUE" et le script créera les partitions avec comme borne la date passée en paramètre (avec l'instruction split) Ex : Code :
|
||
|
|
00
|
|
|
#12 | ||
|
Invité régulier
![]() Inscription : août 2006 Messages : 31 ![]() |
Ce qui est le cas
Merci pour tous ! Merci ! Je me demandais justement comment on faisait pour ajouter une nouvelle partition ! Ton scipt arrive a point nommé Code :
La table originale aura été initialement renommé, toutes les dépendances fonctionnelles désactivées ... enfin bref tout comme tu le dis ! Un job tournera sur la machine afin de créer automatiquement la nouvelle partition quelques jours avant la fin du trimestre (merci pour le bout de code). Je vais tester en grandeur nature sur mon serveur de test. Je vais voir |
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com