设为首页 加入收藏

TOP

Oracle启动和禁用约束及删除违反约束的记录
2017-01-20 08:15:00 】 浏览:7442
Tags:Oracle 启动 禁用 约束 删除 违反 记录

背景:在数据仓库中批量的导入数据的情况下,如果较多的约束存在那么会增加数据库的负担降低系统导入数据的效率,在这个情况下一般会采取牺牲约束的校验换取系统执行的效率。即禁用约束待数据全部导入成功以后再检查数据库中违反约束的数据,修改违规记录,最后重启约束。


一、禁用约束


  alter table table_name disable novalidate constraint constraint_name


二、批量导入数据


三、在开启约束之前一定要检查违反约束的记录


    sql>@oracle_home\rdbms\admin\utlexpt1.sql


  2、执行带有exception是选项的alter语句,将违反约束条件的记录添加到exceptions表中保存


    alter table table_name enable validate constraint constraint_name exceptions into sys.exceptions;


  3、在exceptions表中使用子查询来锁定无效的数据行


    select column1,column2,column3 from table_name where rowid in(


        select row_id from sys.exceptions


    ) for update


  4、根据查询结果修改违反约束的记录行(可以通过rowid来直接update)


  5、重新执行带有alter 的开启约束的语句


    alter table table_name enable validate constraint constraint_name


  6、查询约束的状态是否为enable 、validate


    select constraint_name,constraint_type,status,validated from dba_constraints where owner='OWNER' and table_name='TABLE_NAME';


四、确认exceptions表无用后删除或者truncate表   


  drop table sys.exceptions; 


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Oracle recyclebin详解(闪回删除.. 下一篇Oracle临时表空间的恢复

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目