今天在啓用一個約束的(命令如下)時候報錯: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;