2009-12-01 10 views
1

Tout le monde peut me dire comment nous pouvons insérer des données dans une table partitionnée qui ne remplit pas les conditions de partitionnement.Comment insérer des données dans une table de partition qui n'est pas définie dans la partition?

+0

par définition, cela semblerait impossible! –

+0

Vous pourriez le faire avec la partition d'échange sans validation. Cependant, l'algorithme d'élimination de partition ne pourra pas trouver les données plus tard. Pouvez-vous être plus précis sur votre situation? – Pop

Répondre

5

vous obtiendrez une erreur ORA-14400:

SQL> CREATE TABLE t (ID NUMBER) 
    2 PARTITION BY RANGE (ID) 
    3 ( PARTITION t1 VALUES LESS THAN (100), 
    4  PARTITION t2 VALUES LESS THAN (200) 
    5 ); 

Table created 

SQL> insert into t values (1); 

1 row inserted 

SQL> insert into t values (201); 

insert into t values (201) 
      ~ 
ORA-14400: inserted partition key does not map to any partition 

Pour éviter cela, vous pouvez utiliser une partition par défaut avec LESS THAN (MAXVALUE):

SQL> CREATE TABLE t (ID NUMBER) 
    2 PARTITION BY RANGE (ID) 
    3 ( PARTITION t1 VALUES LESS THAN (100), 
    4  PARTITION t2 VALUES LESS THAN (200), 
    5  PARTITION tmax VALUES LESS THAN (MAXVALUE) 
    6 ); 

Table created 
+0

Merci .. Grande Explication –

0

Si vous faites référence aux tables gamme partitionnées et utilisent 11g, regardez dans la définition des tables avec le partitionnement d'intervalle. Ceci est similaire au partitionnement des plages, sauf qu'Oracle créera de nouvelles partitions ou divisera automatiquement les partitions existantes pour vous. Si vous êtes sur une version antérieure, la suggestion de Vincent de créer une partition MAXVALUE est la réponse pour le partitionnement de gamme.