Ala*_*lan 10 oracle database-partitioning
我正在尝试在分区表中插入信息,但我不知道我做错了什么!告诉我这个错误: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
Run Code Online (Sandbox Code Playgroud)
请帮帮我
Mah*_*kar 17
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;
Run Code Online (Sandbox Code Playgroud)
此查询列出用作键的列名称和允许的值.确保插入允许的值(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)
);
Run Code Online (Sandbox Code Playgroud)
这意味着我创建了一个包含多个列的分区,其值小于复合范围(98,20091024);
这是第一次COD_PAIS <= 98也是FEC_DATA < 20091024
组合和结果:
98, 20091024 FAIL
98, 20091023 PASS
99, ******** FAIL
97, ******** PASS
< 98, ******** PASS
Run Code Online (Sandbox Code Playgroud)
所以下面的INSERTORA-14400失败了; 因为(98,20091024)在INSERT是平等的一个中DDL,但不是比它少.
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
Run Code Online (Sandbox Code Playgroud)
但是,我们尝试我(97,20091024),它通过
SQL> INSERT INTO HE0_DT_INF_INTERFAZ_MES(COD_PAIS, FEC_DATA, INTERFAZ)
2 VALUES(97, 20091024, 'CTA');
1 row created.
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
101002 次 |
| 最近记录: |