我在交换分区时遇到了 ORA-14097。谁能分享我一些光?
我有以下 source_tbl(非分区)表,并打算使用“VALID_PERIOD_END”列对其进行分区
CREATE TABLE source_tbl
( INVOICE_ID NUMBER(15,0) NOT NULL ENABLE,
LATEST_FLAG_NAME VARCHAR2(3000),
STD_HASH **RAW**(1000),
VALID_PERIOD_START TIMESTAMP (6),
VALID_PERIOD_END **TIMESTAMP** (6),
OVERSEAS NUMBER,
.. <another 20 number columns)
VIP_NO NUMBER
) partition by range(VALID_PERIOD_END)
nologging;
该表现在有 5M 行,我想按 VALID_PERIOD_END 对其进行分区,这样如果它是“9999-12-31 23:59:59”(当前)将在一个分区中,而其余的将在另一个分区中
我创建了第二个名为 TEMP_tbl 的表
CREATE TABLE TEMP_tbl
( INVOICE_ID NUMBER(15,0) NOT NULL ENABLE,
LATEST_FLAG_NAME VARCHAR2(3000),
STD_HASH **RAW**(1000),
VALID_PERIOD_START TIMESTAMP (6),
VALID_PERIOD_END **TIMESTAMP** (6),
OVERSEAS NUMBER,
.. <another 20 number columns)
VIP_NO NUMBER
)partition by range(VALID_PERIOD_END)
(partition p1 values less than(maxvalue)) nologging;
TEMP_tbl 具有与 source_tbl 完全相同的数据结构,因为脚本是使用 dbms_metadata.get_ddl驱动的
我已经执行了收集表状态,没有返回任何错误
EXEC DBMS_STATS.gather_table_stats(USER, upper('source_tbl'), cascade => TRUE);
但是,当我尝试执行以下交换分区语句时,出现上述错误
alter table TEMP_tbl
exchange partition p1
with table source_tbl
without validation
update global indexes
;
我检查了“user_tab_cols”,并确认 source_tbl 中没有隐藏列。会是因为我表中的原始列吗?
提前致谢!