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