首页 > 代码库 > Oracle并行添加主键的方法
Oracle并行添加主键的方法
环境:Oracle 11.2.0.3
需求:生产一张表由于前期设计不当,没有主键。现需要添加主键,数据量很大,想并行建立。
1.直接添加,提示ora-3001:未实施的功能;只能单线程建立主键
SQL> alter table t add constraint pk_t primary key (object_id) using index online parallel 2;alter table t add constraint pk_t primary key (object_id) using index online parallel 2ORA-03001: 未实施的功能SQL> alter table t add constraint pk_t primary key (object_id) using index online;Table alteredSQL> alter table t drop primary key;Table altered
2.考虑先并行添加惟一性索引,再添加主键
SQL> create unique index pk_t on t(object_id) parallel 2 online;Index createdSQL> alter table t add constraint pk_t primary key (object_id);Table alteredSQL> alter index pk_t noparallel;Index altered
3.对比主键和惟一性索引的区别
SQL> desc tName Type Nullable Default Comments-------------- ------------- -------- ------- --------OWNER VARCHAR2(30) Y OBJECT_NAME VARCHAR2(128) Y SUBOBJECT_NAME VARCHAR2(30) Y OBJECT_ID NUMBER DATA_OBJECT_ID NUMBER Y OBJECT_TYPE VARCHAR2(19) Y CREATED DATE Y LAST_DDL_TIME DATE Y TIMESTAMP VARCHAR2(19) Y STATUS VARCHAR2(7) Y TEMPORARY VARCHAR2(1) Y GENERATED VARCHAR2(1) Y SECONDARY VARCHAR2(1) Y NAMESPACE NUMBER Y EDITION_NAME VARCHAR2(30) Y SQL> alter table t drop primary key;Table alteredSQL> desc tName Type Nullable Default Comments-------------- ------------- -------- ------- --------OWNER VARCHAR2(30) Y OBJECT_NAME VARCHAR2(128) Y SUBOBJECT_NAME VARCHAR2(30) Y OBJECT_ID NUMBER Y DATA_OBJECT_ID NUMBER Y OBJECT_TYPE VARCHAR2(19) Y CREATED DATE Y LAST_DDL_TIME DATE Y TIMESTAMP VARCHAR2(19) Y STATUS VARCHAR2(7) Y TEMPORARY VARCHAR2(1) Y GENERATED VARCHAR2(1) Y SECONDARY VARCHAR2(1) Y NAMESPACE NUMBER Y EDITION_NAME VARCHAR2(30) Y
总结:
对于已有大量数据的表无法并行建立主键,可以先并行建立惟一性索引然后再加上主键。
主键不能为空,惟一性索引可以为空。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。