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 2

ORA-03001: 未实施的功能

SQL> alter table t add constraint pk_t primary key (object_id) using index online;

Table altered

SQL> alter table t drop primary key;

Table altered

2.考虑先并行添加惟一性索引,再添加主键

SQL> create unique index pk_t on t(object_id) parallel 2 online;

Index created

SQL> alter table t add constraint pk_t primary key (object_id);

Table altered

SQL> alter index pk_t noparallel;

Index altered

3.对比主键和惟一性索引的区别

SQL> desc t
Name           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 altered

SQL> desc t
Name           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

总结:

对于已有大量数据的表无法并行建立主键,可以先并行建立惟一性索引然后再加上主键。

主键不能为空,惟一性索引可以为空。

Oracle并行添加主键的方法

时间: 2024-10-11 20:08:37

Oracle并行添加主键的方法的相关文章

视图中添加主键的方法

CREATE OR REPLACE VIEW T_GDXM(GD_GUID,ZD_GUID,XZQ_DM,XM_GUID,XM_ZT,XM_XH,BH,DZ_BA_BH,XM_MC,TZZT_XZ,HY_FL,TD_JB,ZD_BH,TD_ZL,GD_ZMJ,GY_FS,GY_MJ,XZ_MJ,TD_YT,CR_NX,YT_SM,JD_SJ,JE,GDZC_TZE,TZ_QD,ZT_JZ_XZ,FS_JZ_XZ,JZ_MJ,MIN_JZ_MD,MAX_JZ_MD,MIN_RJL,MAX_RJL,

Oracle使用游标为所有用户表添加主键语句

应用场合:数据表新增自增一主键能加快数据表的访问速度,而且是整形的索引速度最快.本程序适合在导入Oracle数据库时删除不存在主键的情况下运行. 代码说明:所有的表主键字段名都设置为ID,如果已存在ID字段,则判断是否是整形,如果不是就重命名字段为[表名ID],然后新增ID,如果不存在则直接添加自增一ID的主键 操作说明:打开PQSQL连接数据库后直接执行下面的详细脚本代码运行即可,脚本有风险(会删除原来的索引跟主键约束),请不要轻易在正式运行的数据库上直接执行 --Oracle使用游标为所有用

Oracle数据库作业-2 添加主键 外键

一.在表student中添加主键sno 二.在表course中添加主键cno和外键tno 三.在表teacher中添加主键tno 四.在表score中添加外键sno和cno

Oracle如何删除主键约束的同时也删除索引

一.现象 在oracle10g中删除主键约束后,在插入重复数据时候仍然报“ORA-00001”错误. 二.原因 Oracle在的10g版本中对内部函数"atbdui"进行了调整,导致在删除约束的时候无法删除用户创建的索引.这个现象被Oracle分类到了“PROBLEM”. 三.方法 在删除约束的时候需要显示的指定“drop index”选项来完成索引的级链删除. 例:alter table table_name drop constraint constraint_name casca

oracle 触发器实现主键自增

drop table book; --创建表 create table book( bookId varchar2(4) primary key, name varchar2(20) ); --创建序列 create sequence book_seq start with 1 increment by 1; --创建触发器 create or replace trigger book_trigger before insert on book for each row begin select

MySQL添加主键和外键

查看表的字段信息:desc 表名; 查看表的所有信息:show create table 表名; 添加主键约束:alter table 表名 add constraint 主键 (形如:PK_表名) primary key 表名(主键字段); 添加外键约束:alter table 从表 add constraint 外键(形如:FK_从表_主表) foreign key 从表(外键字段) references 主表(主键字段); (alter table 主表名 add foreign key

创建表 添加主键 添加列常用SQL语句

--删除主键 alter table 表名 drop constraint 主键名--添加主键alter table 表名 add constraint 主键名 primary key(字段名1,字段名2……)--添加非聚集索引的主键alter table 表名 add constraint 主键名 primary key NONCLUSTERED(字段名1,字段名2……) 新建表: create table [表名] ( [自动编号字段] int IDENTITY (1,1) PRIMARY

Oracle与Mysql主键、索引及分页的区别小结

Oracle与Mysql主键.索引及分页的区别,学习oracle的朋友可以参考下 区别: 1.主键,Oracle不可以实现自增,mysql可以实现自增. oracle新建序列,SEQ_USER_Id.nextval 2.索引: mysql索引从0开始,Oracle从1开始. 3.分页, mysql: select * from user order by desc limit n ,m. 表示,从第n条数据开始查找,一共查找m条数据. Oracle:select * from user sele

添加主键跟外键

表(一)Student (学生表) 添加主键约束学号SNO 表(二)Course(课程表) 添加主键约束课程号CON,添加外键约束教工编号TON 表(三)Score(成绩表) 添加两个外键约束学号SNO和课程号CNO,主键约束是Sno+ Cno. 表(四)Teacher(教师表) 添加主键约束教工编号TNO 主键约束: 1.主键约束包含非空约束跟唯一约束,只能有一个: 2.通过主键列能够确定唯一的一行数据: 3.自动按照主键列生成索引,提高数据检索效率: 4.确保数据的唯一性也规范性. 检查约束