Chinaunix首页 | 论坛 | 博客
  • 博客访问: 777985
  • 博文数量: 99
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1163
  • 用 户 组: 普通用户
  • 注册时间: 2016-09-22 09:50
个人简介

一个守望数据库的老菜鸟

文章分类

全部博文(99)

文章存档

2019年(21)

2018年(17)

2017年(37)

2016年(24)

我的朋友

分类: Oracle

2016-12-21 18:19:39

博客文章除注明转载外,均为原创。转载请注明出处。
本文链接地址:http://blog.chinaunix.net/uid-31396856-id-5757068.html


最近在进行分区表相关操作的时候,遇到以下错误
SQL> alter table TIM_CLIENT_LOG_HIS exchange partition P201507 with table TIM_CLIENT_LOG_TEMP_ALL  without validation;
alter table TIM_CLIENT_LOG_HIS exchange partition P201507 with table TIM_CLIENT_LOG_TEMP_ALL  without validation
*
ERROR at line 1:
ORA-14130: UNIQUE constraints mismatch in ALTER TABLE EXCHANGE PARTITION


处理方法有2种
1.在相关表创建所需要的约束
alter table TIM_CLIENT_LOG_HIS CONSTRAINT "PK_TIM_CLIENT_LOG_HIS" PRIMARY KEY ("ID");
但是缺点是约束校验,如果分区表数据很大,时间消耗会相对比较长。
2.将分区表的约束disable,分区交换结束后在enable,但是这种情况可能不能保证数据完整性。


至于选择方法1或者方法2,dba需要实际情况进行取舍。
这里选择方法1,在临时表上创建主键约束,然后在进行分区操作:
SQL> alter table TIM_CLIENT_LOG_HIS exchange partition P201507 with table TIM_CLIENT_LOG_TEMP_ALL  without validation;


Table altered.


Elapsed: 00:00:01.37

Okay,顺利完成...
--The end
阅读(4191) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~