|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Nouveau Membre du Club
![]() Inscription : novembre 2006 Messages : 179 ![]() |
Bonjour,
J'aurais une petite question à vous poser car la solution que j'ai trouvée ne me convient pas. J'ai une base de données avec une table partitionnée by range (au mois). Chaque partition contient l'ensemble des données d'un mois précis. J'ai une table PARTITION_MANAGEMENT qui contient l'ensemble des informations sur les partitions que j'ai installées avec notamment un champ "STATE" qui renseigne l'état de la partition : PREVIOUS (partition antérieure au mois courant), ACTIVE (partition du mois courant) et FUTURE. Cette table va être utilisée pour pouvoir gérer les partitions (notamment les droper) et j'ai donc besoin de mettre à jour cette table. Clairement ce qu'il m'intéresse le plus c'est de savoir quelle est la partition active (du mois en court) et de mettre alors à jour la table. Ma 1ère idée c'était de créer un job Oracle lancé chaque début de mois pour mettre à jour cette table. C'est une solution qui peut marcher mais je me demande s'il n'y a pas plus "propre". En gros est ce qu'il y a une information qui nous permette de savoir la partition courante utilisée par Oracle ? Ou sinon si vous avez une idée de solution je suis preneur Merci. |
|
|
00
|
|
|
#2 | ||
|
Membre chevronné
![]() O. JolySupport Inscription : décembre 2010 Messages : 287 ![]() |
Bonjour,
Oracle ne connais pas vos règles de gestion applicatives, il ne sait donc absolument pas que la partition P_Avril_2011 (je la nomme aléatoirement comme ça, ça me semble parlant), il ne sait donc pas que cette partition est en cours actuellement, qu'elle ne le sera plus dans deux semaines et qu'une autre le deviendra. Par contre vous le savez. Vous pouvez donc , au choix, comme vous l'avez fait stocker ces informations dans une table ou créer une fonction (ou un package) PL/SQL qui vous donnera l'information. Imaginons que vous nommez la partitions P_YYYYMM Code :
|
||
|
00
|
|
|
#3 |
|
Nouveau Membre du Club
![]() Inscription : novembre 2006 Messages : 179 ![]() |
Merci pour ces précisions, c'est très clair.
Je vais donc partir sur l'idée du job qui me permettra de mettre à jour tous les mois la partition active dans la table de management des partitions. Julien. |
|
|
00
|
|
|
#4 | ||
![]() ![]() |
Ne parlez-vous pas simplement de la colonne HIGH_VALUE de la vue DBA_TAB_PARTITIONS ?
Code :
__________________
Email : http://scr.im/waldar |
||
|
00
|
|
|
#5 | ||
|
Membre confirmé
![]() Ahmed AANGOURDBA Etudes Oracle Inscription : janvier 2010 Messages : 123 ![]() |
pour connaitre la dernière partition:
Code :
__________________
Mon blog Oracle: http://ahmedaangour.blogspot.com/ |
||
|
00
|
|
|
#6 |
|
Nouveau Membre du Club
![]() Inscription : novembre 2006 Messages : 179 ![]() |
Merci pour vos réponses ;-)
Je suis en Oracle 10gR2. J'étais parti au début sur les high_value mais ça me faisait un code pas super propre (je suis loin d'être un expert dans ce domaine, voire je débute ^^). Sélectionner la dernière partition aurait pu être utile (merci pour le code d'ailleurs, je note ça dans mes petits papiers), mais le problème c'est qu'on peut très bien avoir 50 partitions d'installées jusqu'en 2015 par exemple, donc sélectionner la dernière partition ne me donnerait pas beaucoup d'avantages. Finalement, je suis parti sur un nommage de partitions de la forme PARTITION_P_yyyy_mm et ça me permet de manipuler facilement les partitions. La table est mise à jour mensuellement via un job oracle en mettant la partition précédente à 'OLD' et la partition actuelle à 'active'. Je retrouve ma partition précédente via un to_char(add_months(sysdate,-1), 'yyyy_mm'). Y'avait peut-être plus propre et plus "pro" mais vu que je débute j'ai pas trouvé mieux Merci à vous en tout cas. |
|
|
00
|
|
|
#7 |
|
Membre Expert
![]() ![]() Franck PachotDBA Oracle Inscription : novembre 2007 Messages : 703 ![]() |
Bonjour,
Personnellement je n'ai jamais eu besoin d'avoir une table qui référence les partitions. J'utilise plutôt un nom de partition significatif (genre YYYYMMDD). HIGH_VALUE n'est pas facile à manipuler car c'est une LONG. 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 ...
|
|
00
|
|
|
#8 |
|
Nouveau Membre du Club
![]() Inscription : novembre 2006 Messages : 179 ![]() |
Effectivement pachot, la manipulation est difficile des high value. Je les stockais dans un varchar2 mais c'est un peu crade comme façon de faire.
Les modifs que je fais sont sur un système existant, c'est un besoin d'avoir une table qui référence les partitions, je m'en serais passé aussi |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com