1、禁止约束
04:55:47 SQL> alter table t1 disable novalidate constraint u_name;
Table altered.
04:55:48 SQL> select constraint_name,constraint_type,status,table_name from user_constraints
04:56:03 2 where table_name='T1';
CONSTRAINT_NAME C STATUS TABLE_NAME
------------------------------ - -------- ------------------------------
U_NAME U DISABLED T1
04:56:09 SQL>
2、激活约束
(1)使用ENABLE NOVALIDATE 选项激活约束
ENABLE NOVALIDATE 选项用于快速激活约束,但该选项只能确保新数据符合约束规则,而不会最已存在数据进行任何检查。使用ENABLE NOVALIDATE 选项激活约束时,不会再表上加锁,也不会影响其他用户在相应表上的DML操作。当数据处于运行高峰时,为了使约束快速生效 ,应使用该方法激活约束。实例如下:
04:55:47 SQL> alter table t1
04:59:47 2 enable novalidate constraint u_name;
Table altered.
05:00:09 SQL> select constraint_name,constraint_type,status,table_name from user_constraints
05:00:12 2 where table_name='T1';
CONSTRAINT_NAME C STATUS TABLE_NAME
------------------------------ - -------- ------------------------------
U_NAME U ENABLED T1
(2)使用 ENABLE VALIDATE 选项激活约束
使用 ENABLE VALIDATE 选项激活约束时,会在表上加锁,此时不允许其他用户在相应表上执行DML操作。为了确保已装载数据满足约束规则 ,在数据库运行的空闲时间使用该选项激活约束。使用 ENABLE NOVALIDATE 可以快速激活约束,但不会对已存在数据进行任何检查;使用 ENABLE VALIDATE 选项不仅会检查新键入的数据,同时要求已存在数据必须满足约束规则。示例如下:
05:00:14 SQL> alter table t1
05:02:38 2 enable validate constraint u_name;
Table altered.
查看本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/database/Oracle/