Вещи обычно не случаются только потому, что . Вот что могло бы произойти.
Во-первых, ситуация, которая была у вас до недавнего времени: есть индекс, который вы можете удалить:
SQL> create table test (id number);
Table created.
SQL> create index i1 on test (id);
Index created.
SQL> drop index i1;
Index dropped.
Давайте создадим его снова:
SQL> create index i1 on test (id);
Index created.
Тем временем кто-то решил создать первичный ключ в индексированном столбце (индекс уже существует, поэтому первичный ключ будет его использовать; если его не существует, alter table
создаст его):
SQL> alter table test add constraint pk_test primary key (id);
Table altered.
Вот что происходит сейчас, когда вы пытаетесь удалить этот индекс:
SQL> drop index i1;
drop index i1
*
ERROR at line 1:
ORA-02429: cannot drop index used for enforcement of unique/primary key
SQL>
Что означает: сначала сбросьте первичный ключ:
SQL> alter table test drop constraint pk_test;
Table altered.
SQL> drop index i1;
Index dropped.
SQL>
Поскольку у вас есть работа, она делаетчто все может быть не так просто. Вы можете создать процедуру , которая будет запрашивать метаданные, а динамически делать это, но ... сначала исследовать, что произошло между "это работало" и "это больше не работает".