DataStage получает эту ошибку «ORA-02429: Невозможно удалить индекс, используемый для принудительного применения уникального / первичного ключа, но раньше он работал нормально» - PullRequest
0 голосов
/ 05 ноября 2019

У меня большая проблема. Я выполнял свои задания DataStage, как всегда, что работало нормально, но неожиданно я получил ошибку во всех моих заданиях, имеющих назначение Oracle Stage.

Ошибка выглядит так:

 ORA-02429: Cannot drop index used for enforcement of unique/primary key    

Независимо от того, в какой таблице или в какой базе данных эта ошибка возникает на каждой работе. Мы попытались перезапустить DataStage Engine / Уровень обслуживания, Oracle db, но ничего не работает.

Есть идеи?

1 Ответ

0 голосов
/ 05 ноября 2019

Вещи обычно не случаются только потому, что . Вот что могло бы произойти.

Во-первых, ситуация, которая была у вас до недавнего времени: есть индекс, который вы можете удалить:

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>

Поскольку у вас есть работа, она делаетчто все может быть не так просто. Вы можете создать процедуру , которая будет запрашивать метаданные, а динамически делать это, но ... сначала исследовать, что произошло между "это работало" и "это больше не работает".

...