Aller au contenu
  • Nos offres
  • Blog
  • Contact
  • Carrières
Menu
  • Nos offres
  • Blog
  • Contact
  • Carrières
Inscrivez-vous à la newsletter

Inscrivez-vous à la newsletter

Abonnez-vous maintenant et nous vous tiendrons au courant.
Nous respectons votre vie privée. Vous pouvez vous désabonner à tout moment.

Blog

  • Accueil
  • Actualités
  • Cloud
  • Infrastructure
  • Données / Sécurité
  • Intégration
  • Dev / DevOps
  • SAM / FinOps
Menu
  • Accueil
  • Actualités
  • Cloud
  • Infrastructure
  • Données / Sécurité
  • Intégration
  • Dev / DevOps
  • SAM / FinOps
  • le 05/03/2010
  • Administrateur
  • Infrastructures

Eviter ORA-14400 avec Interval Partitions

Partager sur linkedin
Partager sur twitter
Partager sur facebook

Depuis l’introduction de la version 11gR1, il est possible de convertir une « range partition table » en une « interval partition table » pour éviter des exceptions ORA-14400 quand une valeur insérée ne correspond à aucune partition.
Voyons comment :
Par exemple :

SQL> CREATE TABLE DEMO_DATA_RANGE (
EMPID  number(4) not null,
start_date        DATE,
Job              varchar2(30)
)
PARTITION BY RANGE (start_date)
(
PARTITION DEMO_DATA_P0 VALUES LESS THAN (TO_DATE('1-1-2009', 'DD-MM-YYYY')),
PARTITION DEMO_DATA_P1 VALUES LESS THAN (TO_DATE('1-1-2010', 'DD-MM-YYYY'))
);
SQL> INSERT INTO "NRTDB"."DEMO_DATA_RANGE" (EMPID, START_DATE, JOB)
VALUES ('100', TO_DATE('1-1-2010', 'DD-MM-YYYY'), 'DBA')
INSERT INTO "NRTDB"."DEMO_DATA_RANGE" (EMPID, START_DATE, JOB)
VALUES ('100', TO_DATE('1-1-2010', 'DD-MM-YYYY'), 'DBA')
ERREUR à la ligne 1 :
ORA-14400 : la clé de partition insérée ne correspond à aucune partition


Une solution pour éviter le problème ci-dessous est de convertir la range partition table en un interval partition utilisant la nouvelle commande  SET INTERVAL ().
Par exemple pour convertir la table DEMO_DATA_RANGE un interval partition par mois :

Alter Table DEMO_DATA_RANGE set INTERVAL(NUMTOYMINTERVAL(1, 'MONTH'));


Maintenant si nous essayons d’insérer la même ligne, ça passe.

SQL> INSERT INTO "NRTDB"."DEMO_DATA_RANGE" (EMPID, START_DATE, JOB)
VALUES ('100', TO_DATE('1-1-2010', 'DD-MM-YYYY'), 'DBA')
1 lignes inséré
Commit;


Avec interval partition Oracle crée automatiquement les nouvelles partitions quand il y a une valeur insérée qui ne correspond à aucune partition. Le nom de cette partition est automatiquement généré par Oracle.

SELECT TABLE_NAME, PARTITION_NAME, HIGH_VALUE FROM USER_TAB_PARTITIONS
WHERE TABLE_NAME = 'DEMO_DATA_RANGE';
  
TABLE_NAME                     PARTITION_NAME    HIGH_VALUE
DEMO_DATA_RANGE                DEMO_DATA_P0      TO_DATE('2009-01-01 00:00:00','SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA')
DEMO_DATA_RANGE                DEMO_DATA_P1      TO_DATE(' 2010-01-01 00:00:00','SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA')
DEMO_DATA_RANGE                SYS_P259406       TO_DATE('2010-02-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA')
Administrateur
Administrateur
Voir tous ses articles

Laisser un commentaire Annuler la réponse

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Articles récents
  • Azure Database pour PostgreSQL [PaaS]
  • Azure Logic Apps : l’outil d’intégration Cloud de Microsoft
  • Purge automatique des archivelogs en PL/SQL
  • ASM et l’importance du usable_file_mb
  • Préparer un Windows Server 2003 pour une migration sur Azure

Mentions légales & Politique de confidentialité

En poursuivant votre navigation, vous acceptez l'utilisation de cookies tiers destinés à réaliser des statistiques de visites et de suivi. Accepter Refuser Personnaliser En savoir plus
Politique de confidentialité et cookies

Politique de confidentialité

Les informations collectées au travers de nos cookies sont exploitées à des fins statistiques (Google Analytics).
Google Analytics
Enregistrer & appliquer

8 JUIN 2022 A PARIS | 8H30 - 18H30

TECH FOR CLIMATE ?

Opportunités et limites de la technologie pour faire face au défi climatique

Programme & Inscriptions

Un évènement imaginé avec 🖤 par Constellation