Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Oracle PL/SQL:Exemplo de DBMS_SCHEDULER.CREATE_JOB


O requisito é criar um job no Oracle para ser executado diariamente às 3:00 AM e execute um procedimento armazenado para realizar uma determinada tarefa. Por exemplo, o nome do procedimento armazenado é PROC_DAILY_UPDATES .

Para conseguir isso, o exemplo a seguir usa o DBMS_SCHEDULER.CREATE_JOB da Oracle procedimento:

1. Crie um Job no Oracle usando DBMS_SCHEDULER.CREATE_JOB

BEGIN
  DBMS_SCHEDULER.CREATE_JOB (
   job_name           =>  'JOB_DAILY_UPDATES',
   job_type           =>  'STORED_PROCEDURE',
   job_action         =>  'YOURSCHEMA.PROC_DAILY_UPDATES',
   start_date         =>  '28-SEP-19 03.00.00 AM America/New_York',
   repeat_interval    =>  'FREQ=DAILY;INTERVAL=1', 
   end_date           =>  NULL,
   auto_drop          =>   FALSE,
   job_class          =>  'SYS.DEFAULT_JOB_CLASS',
   comments           =>  'extract data');
END;
/

Após criar o job acima, habilite-o:

2. Habilite o trabalho usando DBMS_SCHEDULER.ENABLE

BEGIN 
    DBMS_SCHEDULER.enable('JOB_DAILY_UPDATES'); 
END;
/

Para confirmar o trabalho criado com sucesso, use a seguinte consulta:
Select * from user_scheduler_jobs 
 where job_name = 'JOB_DAILY_UPDATES';

Da consulta acima, você obterá as informações como última data de início, próxima data de execução e status de ativação do trabalho , etc

Para obter o histórico de execução do job, use a seguinte consulta:
Select * from user_scheduler_job_run_details 
  where job_name = 'JOB_DAILY_UPDATES';

Você também pode notar que no DBMS_SCHEDULER.CREATE_JOB acima exemplo de procedimento, usei o fuso horário America/New_York . Você pode obter o fuso horário de um país específico usando a seguinte consulta:
SELECT DISTINCT tzname, TZ_OFFSET (tzname)
 FROM V$TIMEZONE_NAMES
ORDER BY tzname;

Saída

America/Mexico_City -05:00 
America/Miquelon -02:00 
America/Moncton -03:00 
America/Monterrey -05:00 
America/Montevideo -03:00 
America/Montreal -04:00 
America/Montserrat -04:00 
America/Nassau -04:00 
America/New_York -04:00
...

Veja também:

  • Como agendar um trabalho no Oracle SQL Developer?
  • Saiba como agendar tarefas/trabalhos com Cron (crontab) no Linux
  • Obtenha a hora local atual de qualquer país em PL/SQL