ora-00955 名称已由现有对象使用

 

今天在启用一个约束的(命令如下)时候报错: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;

 

 

 

 

 

你可能感兴趣的:(oracle)