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;

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章