Oracle:理解和复制 ALTER TABLE EXCHANGE PARTITION 中的 ORA-14130 UNIQUE 约束不匹配
Oracle: Understanding and replicating ORA-14130 UNIQUE constraints mismatch in ALTER TABLE EXCHANGE PARTITION
大家好!
我在我的共享开发环境中遇到这个错误(ORA-14130 UNIQUE constraints mismatch in ALTER TABLE EXCHANGE PARTITION),我无法修复它只是因为我不完全理解它。
让我们创建这三个 table:
对于 ALTER TABLE EXCHANGE PARTITION 因 ORA-14130 而失败的 table,我应该创建什么 index/constraint?
CREATE TABLE TMP_DEBUG_BORRAR_DATOS_1 AS
SELECT level id, timestamp'2000-11-02 09:00:00' fecha
FROM dual
CONNECT BY level <= 100000 ;
CREATE TABLE TMP_DEBUG_BORRAR_DATOS_2 AS
SELECT level id, timestamp'2001-09-10 13:00:00' fecha
FROM dual
CONNECT BY level <= 100000 ;
CREATE TABLE TMP_DEBUG_BORRAR_TEST
(
id,
fecha
)
PARTITION BY RANGE ( fecha )
(
PARTITION year_2000 VALUES LESS THAN ( timestamp'2000-12-02 00:00:00' ),
PARTITION year_2001 VALUES LESS THAN ( timestamp'2001-10-10 00:00:00' )
)
AS
SELECT 1, timestamp'2000-11-02 09:00:00'
FROM dual
WHERE 1=0;
--What should I add here for the ALTER TABLE EXCHANGE PARTITION to throw an ORA-14130?
ALTER TABLE TMP_DEBUG_BORRAR_TEST EXCHANGE PARTITION year_2000 WITH table TMP_DEBUG_BORRAR_DATOS_1;
非常感谢!
您需要对分区 table 设置唯一约束才能得到错误。所以,在交换之前这样做:
alter table TMP_DEBUG_BORRAR_TEST add constraint ukk unique (id, fecha);
然后你需要像这样进行交换:
ALTER TABLE TMP_DEBUG_BORRAR_TEST EXCHANGE PARTITION year_2000 WITH table TMP_DEBUG_BORRAR_DATOS_1 including indexes;
大家好! 我在我的共享开发环境中遇到这个错误(ORA-14130 UNIQUE constraints mismatch in ALTER TABLE EXCHANGE PARTITION),我无法修复它只是因为我不完全理解它。
让我们创建这三个 table:
对于 ALTER TABLE EXCHANGE PARTITION 因 ORA-14130 而失败的 table,我应该创建什么 index/constraint?
CREATE TABLE TMP_DEBUG_BORRAR_DATOS_1 AS
SELECT level id, timestamp'2000-11-02 09:00:00' fecha
FROM dual
CONNECT BY level <= 100000 ;
CREATE TABLE TMP_DEBUG_BORRAR_DATOS_2 AS
SELECT level id, timestamp'2001-09-10 13:00:00' fecha
FROM dual
CONNECT BY level <= 100000 ;
CREATE TABLE TMP_DEBUG_BORRAR_TEST
(
id,
fecha
)
PARTITION BY RANGE ( fecha )
(
PARTITION year_2000 VALUES LESS THAN ( timestamp'2000-12-02 00:00:00' ),
PARTITION year_2001 VALUES LESS THAN ( timestamp'2001-10-10 00:00:00' )
)
AS
SELECT 1, timestamp'2000-11-02 09:00:00'
FROM dual
WHERE 1=0;
--What should I add here for the ALTER TABLE EXCHANGE PARTITION to throw an ORA-14130?
ALTER TABLE TMP_DEBUG_BORRAR_TEST EXCHANGE PARTITION year_2000 WITH table TMP_DEBUG_BORRAR_DATOS_1;
非常感谢!
您需要对分区 table 设置唯一约束才能得到错误。所以,在交换之前这样做:
alter table TMP_DEBUG_BORRAR_TEST add constraint ukk unique (id, fecha);
然后你需要像这样进行交换:
ALTER TABLE TMP_DEBUG_BORRAR_TEST EXCHANGE PARTITION year_2000 WITH table TMP_DEBUG_BORRAR_DATOS_1 including indexes;