パーティションテーブルに情報を挿入しようとしていますが、何が間違っているのかわかりません。このエラーを表示: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
助けてください
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.