web-dev-qa-db-ja.com

Oracleパーティション-エラーORA14400-挿入されたパーティションキーはどのパーティションにもマップされません

パーティションテーブルに情報を挿入しようとしていますが、何が間違っているのかわかりません。このエラーを表示:ORA-14400: inserted partition key does not map to any partition "

テーブル dba_tab_partitionsは、以下の情報を示しています。

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

助けてください

9
Alan
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;

このクエリは、キーとして使用される列名と許可される値をリストします。必ず、許可された値を挿入してください(high_value)。そうでない場合、デフォルトのパーティションが定義されていれば、そこに行きます。


編集:

TABLE DDLは次のようになります。

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)
  );

つまり、複合範囲(98,20091024)未満の値を保持する複数の列を持つパーティションを作成しました。

それが最初のCOD_PAIS <= 98およびFEC_DATA < 20091024

組み合わせと結果:

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

したがって、以下のINSERTはORA-14400で失敗します。なぜなら(98,20091024) in INSERT[〜#〜] equal [〜#〜]DDLのものと同じですが、 [〜#〜] not [〜#〜]それより小さい。

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

しかし、私たちは試みます(97、20091024)、それは通過します

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

1 row created.
16