Как изменить статус сотен заданий планировщика Oracle - PullRequest
0 голосов
/ 12 июня 2018

Привет всем! Я новичок в БД или Oracle.У меня возникла проблема, которая, надеюсь, вы мне поможете:

У меня более 400 заданий планировщика, которые выполняются ежечасно, теперь я хочу, чтобы все они были приостановлены, пока они мне не понадобятся.Как я могу сделать это легко?Теперь я могу просто изменить его на веб-странице, не могли бы вы помочь?Очень ценю это.

Ответы [ 2 ]

0 голосов
/ 12 июня 2018

Вы можете просмотреть свой дизайн.Наличие сотен рабочих мест в одной базе данных кажется довольно странным.Я хотел бы предположить, что вы можете объединить большинство из них в хранимой процедуре, а затем задания планировщика выполнят такую ​​процедуру.

В любом случае, будет выглядеть так:

declare
   cursor SchedJobs is
   select  JOB_NAME, ENABLED, OWNER 
   FROM DBA_SCHEDULER_JOBS
   WHERE OWNER='<DESIRED_SCHEMA_NAME>' 
      AND ENABLED='TRUE'
      AND JOB_NAME LIKE 'F_KH_%';
BEGIN
  FOR aJob in SchedJobs  LOOP
     DBMS_SCHEDULER.DISABLE(aJob.OWNER||'.'||aJob.JOB_NAME);
  END LOOP;    
END;
0 голосов
/ 12 июня 2018

Список текущих выполняемых заданий для определенного пользователя БД:

SELECT JOB_NAME, ENABLED, OWNER FROM DBA_SCHEDULER_JOBS
WHERE OWNER='<DESIRED_SCHEMA_NAME>' AND ENABLED='TRUE';

Отключение запущенного задания с помощью:

BEGIN
  FOR X IN (SELECT JOB_NAME, OWNER FROM DBA_SCHEDULER_JOBS WHERE OWNER='<DESIRED_SCHEMA_NAME>' AND ENABLED='TRUE')
  LOOP
     DBMS_SCHEDULER.DISABLE(CONCAT(CONCAT(X.OWNER,'.'), X.JOB_NAME));
  END LOOP;
END;
...