今天在启用一个约束的(命令如下)时候报错:ora-00955 名称已由现有对象使用
alter table US_AOI_TOKEN_0113 enable constraint PK_US_AOI_TOKEN_2 ;
发现原来该表上有一个同名 索引,将该索引删掉之后,就能正常enable 该约束了
当时的场景是这样的 ,使用sqlldr 将6千多万行的数据导入到表(US_AOI_TOKEN_0113),建表的语句如下,由于表上有一个主键约束,导入数据的时候
很慢,就使用direct =y 这个特性(这种情况下约束会失效),但还是会在主键上创建索引。为了不在导数据的过程中创建索引,就禁用了约束
alter table US_AOI_TOKEN_011 idsable constraint PK_US_AOI_TOKEN_2 ;
数据导入后创建索引:
create index PK_US_AOI_TOKEN_2 on US_AOI_TOKEN_0113 (TOKEN) tablespace TBS_MREAD_IDX parallel 16
然后再启动约束,就报了上面那个错误
alter table US_AOI_TOKEN_011 idsable constraint PK_US_AOI_TOKEN_2 ;
注意:禁用主键约束,对应的索引会变得不可用
-- Create table
create table US_AOI_TOKEN_0113
(
msisdn VARCHAR2(11) not null,
token VARCHAR2(1024) not null,
status VARCHAR2(5),
clientversion VARCHAR2(255),
channelcode VARCHAR2(16),
terminaluniqueid VARCHAR2(128),
updatetime DATE
)
partition by hash (MSISDN)
(
partition PARTITION_1
tablespace TBS_HASH_DAT,
partition PARTITION_2
tablespace TBS_HASH_DAT,
partition PARTITION_3
tablespace TBS_HASH_DAT,
partition PARTITION_4
tablespace TBS_HASH_DAT,
partition PARTITION_5
tablespace TBS_HASH_DAT,
partition PARTITION_6
tablespace TBS_HASH_DAT,
partition PARTITION_7
tablespace TBS_HASH_DAT,
partition PARTITION_8
tablespace TBS_HASH_DAT,
partition PARTITION_9
tablespace TBS_HASH_DAT,
partition PARTITION_10
tablespace TBS_HASH_DAT,
partition PARTITION_11
tablespace TBS_HASH_DAT,
partition PARTITION_12
tablespace TBS_HASH_DAT,
partition PARTITION_13
tablespace TBS_HASH_DAT,
partition PARTITION_14
tablespace TBS_HASH_DAT,
partition PARTITION_15
tablespace TBS_HASH_DAT,
partition PARTITION_16
tablespace TBS_HASH_DAT,
partition PARTITION_17
tablespace TBS_HASH_DAT,
partition PARTITION_18
tablespace TBS_HASH_DAT,
partition PARTITION_19
tablespace TBS_HASH_DAT,
partition PARTITION_20
tablespace TBS_HASH_DAT,
partition PARTITION_21
tablespace TBS_HASH_DAT,
partition PARTITION_22
tablespace TBS_HASH_DAT,
partition PARTITION_23
tablespace TBS_HASH_DAT,
partition PARTITION_24
tablespace TBS_HASH_DAT,
partition PARTITION_25
tablespace TBS_HASH_DAT,
partition PARTITION_26
tablespace TBS_HASH_DAT,
partition PARTITION_27
tablespace TBS_HASH_DAT,
partition PARTITION_28
tablespace TBS_HASH_DAT,
partition PARTITION_29
tablespace TBS_HASH_DAT,
partition PARTITION_30
tablespace TBS_HASH_DAT,
partition PARTITION_31
tablespace TBS_HASH_DAT,
partition PARTITION_32
tablespace TBS_HASH_DAT
);
-- Create/Recreate primary, unique and foreign key constraints
alter table US_AOI_TOKEN_0113
add constraint PK_US_AOI_TOKEN_2 primary key (TOKEN)
novalidate
disable;
-- Grant/Revoke object privileges
grant select on US_AOI_TOKEN_0113 to BI_QUERY;