Как остановить Oracle dbms_job

Мой dbms_job работает уже почти тридцать дней.

Количество общего времени продолжает расти, но я не могу найти информацию о выполняющейся работе.

Когда я выполняю sql, который является "select * from dba_jobs;", результат показывает, что задание не выполняется.

Я установил это сломанным, но это не работает.

Как я могу безопасно остановить этот dbms_job?

информация о работе

2 ответа

DBA_JOBS перечисляет все задания, созданные в базе данных. Вы могли бы использовать DBA_JOBS_RUNNING просмотреть список всех заданий, которые в данный момент выполняются в экземпляре.

Когда я выполняю sql, который является "select * from dba_jobs;", результат показывает, что задание не выполняется.

Это показывает все рабочие места, созданные с использованием DBMS_JOBS пакет. Задание могло быть создано с использованием DBMS_SCHEDULER пакет.

SQL> select job from user_jobs;

       JOB
----------
        99

Я создал только одну работу, используя DBMS_JOBпакет, который называется 99, Другие созданы с использованием DBMS_SCHEDULERпакет, который можно увидеть, используя:

SQL> select job_name from user_scheduler_jobs;

Согласно документации

Остановка работы

Обратите внимание, что после запуска и запуска задания не существует простого способа остановить задание.

Нелегко остановить работу.

Не знаю, какую версию базы данных Oracle вы используете. Но, начиная с Oracle 10g, вы используете следующий запрос для перечисления запланированных заданий.

SQL>select * from all_scheduler_jobs;

ALL_SCHEDULER_JOBS

ALL_SCHEDULER_JOBS отображает информацию о заданиях планировщика, доступных текущему пользователю. Больше...


Используйте следующий запрос, чтобы найти текущее задание.

SQL>select job_name, session_id, running_instance, elapsed_time, cpu_used
from user_scheduler_running_jobs;

И остановиться

SQL>EXEC DBMS_SCHEDULER.STOP_JOB (job_name => 'JOB_NAME');

Если не считать убийство сессии, вам не повезло.

Из документации:

Обратите внимание, что после запуска и запуска задания не существует простого способа остановить задание.

Это одна из многих причин, почему вы не должны использовать dbms_job больше. использование dbms_scheduler вместо.

Checkout SID в "select * from DBA_JOBS_RUNNNG" - это идентификатор сеанса, который убивает этот сеанс, и его изменения будут отменены, поэтому для прерывания может потребоваться "больше" времени, чем для завершения, если это массовое обновление было выполнено на 90%....

Другие вопросы по тегам