Я пытаюсь создать задание в моей базе данных Oracle, чтобы обновлять материализованное представление каждые пять минут.Вот код, который я сделал:
BEGIN
SYS.DBMS_SCHEDULER.create_job(
job_name => 'refresh_cop_union',
job_type => 'PLSQL_BLOCK',
job_action => 'BEGIN DBMS_SNAPSHOT.REFRESH(''COP_UNION'',''C''); END;',
start_date => SYSTIMESTAMP,
repeat_interval => 'freq=minutely;interval=5',
end_date => NULL,
enabled => TRUE,
auto_drop => FALSE,
comments => 'Refresh COP_UNION matview'
);
END;
/
Когда я его выполнил, я получил следующую ошибку:
Отчет об ошибке -
ORA-27477: "MASTER_DB". "REFRESH_COP_UNION" уже существует
ORA-06512: в "SYS.DBMS_ISCHED", строка 175
ORA-06512: в "SYS.DBMS_SCHEDULER", строка 288
ORA-06512: в строке 2
27477. 00000 - "\"% s \ ". \"% S \ "уже существует"
* Причина: была предпринята попытка создать объект с именем, которое уже использовалось другим объектом в том жесхемы.
* Действие: Повторите команду, используя другое имя или схему.
Так что, похоже, в моей базе данных есть другой объект с тем же именем, возможно, другое задание.Поэтому я попытался выполнить следующий код, чтобы удалить его и заменить его новой версией:
BEGIN
sys.dbms_scheduler.drop_job(job_name => 'refresh_cop_union');
END;
/
Но произошла ошибка со следующей ошибкой:
Отчет об ошибке -
ORA-27475: неизвестное задание "MASTER_DB". "REFRESH_COP_UNION"
ORA-06512: в "SYS.DBMS_ISCHED", строка 274
ORA-06512: в "SYS.DBMS_SCHEDULER", строка 753
ORA-06512: в строке 2
27475. 00000 - "неизвестно% s \"% s \ ". \"% S \ ""
* Причина: указанный объект не существует, привилегии не предоставлены илиобъект был неправильного типа.
* Действие: укажите объект правильного типа, для которого у вас есть права.
Что в основном говорит о том, что объект, который я пытаюсь удалить, не существует.Как это возможно?Как я могу найти этот объект, увидеть, что это такое, и в конце концов удалить его?Я также просмотрел все объекты, которые могут иметь похожее имя в моей базе данных: другие таблицы, представления, триггеры, но ничего не нашел.
Я попытался перечислить все имеющиеся у меня вакансии, чтобы найти мою с:
SELECT * FROM USER_JOBS
WHERE WHAT LIKE '%COP_UNION%';
Но ничего не обнаружилось.Есть идеи?