2014-06-27 13 views
7

Sto provando ad inserire informazioni in una tabella delle partizioni, ma non so cosa sto facendo male! Mostrami questo errore: ORA-14400: inserted partition key does not map to any partition "Partizione Oracle - Errore ORA14400 - la chiave della partizione inserita non si associa ad alcuna partizione

La tabella dba_tab_partitions mostra queste informazioni qui sotto:

1 PDIA_98_20091023 0 
2 PDIA_98_20091022 0 
3 PDIA_98_20091021 0 
4 PDIA_98_20091020 0 
5 PDIA_98_20091019 0 

Please help me rs

+0

si sta tentando di inserire righe nella partizione che non esiste. Hai definito la partizione predefinita? creare una partizione predefinita e controllare le righe in quella partizione dopo l'istruzione di inserimento per determinare se sono necessarie nuove partizioni aggiunte –

+0

@ user3249825 Puoi riferirti alla mia risposta aggiornata? –

risposta

15
select partition_name,column_name,high_value,partition_position 
from ALL_TAB_PARTITIONS a , ALL_PART_KEY_COLUMNS b 
where table_name='YOUR_TABLE' and a.table_name = b.name; 

Questa interrogazione elenca il nome della colonna utilizzata come chiave e il permesso valori. Assicurati di aver inserito i valori consentiti (high_value). Altrimenti, se la partizione predefinita è definita, andrebbe lì.


EDIT:

presumo, il vostro DDL TABELLA sarebbe come questo.

CREATE TABLE HE0_DT_INF_INTERFAZ_MES 
    (
    COD_PAIS NUMBER, 
    FEC_DATA NUMBER, 
    INTERFAZ VARCHAR2(100) 
) 
    partition BY RANGE(COD_PAIS, FEC_DATA) 
    (
    PARTITION PDIA_98_20091023 VALUES LESS THAN (98,20091024) 
); 

Il che significa che avevo creato una partizione con più colonne, che ha un valore inferiore rispetto al range composito (98,20091024);

Questo è il primo COD_PAIS <= 98 ed anche FEC_DATA < 20091024

combinazioni e Risultato:

98, 20091024  FAIL 
98, 20091023  PASS 
99, ********  FAIL 
97, ********  PASS 
< 98, ********  PASS 

Così il seguito INSERT fallisce con ORA-14400; perché (98,20091024) in INSERT è uguale a a quello in DDL ma meno in meno.

SQL> INSERT INTO HE0_DT_INF_INTERFAZ_MES(COD_PAIS, FEC_DATA, INTERFAZ) 
            VALUES(98, 20091024, 'CTA'); 2 
INSERT INTO HE0_DT_INF_INTERFAZ_MES(COD_PAIS, FEC_DATA, INTERFAZ) 
      * 
ERROR at line 1: 
ORA-14400: inserted partition key does not map to any partition 

Ma, ci tento (, 20.091.024), passa attraverso

SQL> INSERT INTO HE0_DT_INF_INTERFAZ_MES(COD_PAIS, FEC_DATA, INTERFAZ) 
    2         VALUES(97, 20091024, 'CTA'); 

1 row created.