De vereiste is om een taak in Oracle te creëren die dagelijks om 03:00 uur wordt uitgevoerd en voer een opgeslagen procedure uit om een bepaalde taak uit te voeren. De naam van de opgeslagen procedure is bijvoorbeeld PROC_DAILY_UPDATES
.
Om dit te bereiken, gebruikt het volgende voorbeeld Oracle's DBMS_SCHEDULER.CREATE_JOB
procedure:
1. Maak een taak in Oracle met behulp van 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; /
Nadat u de bovenstaande taak hebt gemaakt, schakelt u deze in:
2. Schakel de taak in met DBMS_SCHEDULER.ENABLE
BEGIN DBMS_SCHEDULER.enable('JOB_DAILY_UPDATES'); END; /
Gebruik de volgende vraag om de gecreëerde taak te bevestigen:
Select * from user_scheduler_jobs where job_name = 'JOB_DAILY_UPDATES';
Uit de bovenstaande zoekopdracht krijgt u de informatie zoals laatste startdatum, volgende uitvoeringsdatum en status van taak ingeschakeld , enz.
Gebruik de volgende query om de taakuitvoeringsgeschiedenis te krijgen:
Select * from user_scheduler_job_run_details where job_name = 'JOB_DAILY_UPDATES';
Dat zie je ook in de bovenstaande DBMS_SCHEDULER.CREATE_JOB
procedure voorbeeld, ik gebruikte de tijdzone America/New_York
. U kunt de tijdzone van een specifiek land opvragen met de volgende zoekopdracht:
SELECT DISTINCT tzname, TZ_OFFSET (tzname) FROM V$TIMEZONE_NAMES ORDER BY tzname;
Uitvoer
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 ...
Zie ook:
- Hoe een taak plannen in Oracle SQL Developer?
- Meer informatie over het plannen van taken/taken met Cron (crontab) in Linux
- Ontvang de huidige lokale tijd van elk land in PL/SQL