Kravet är att skapa ett jobb i Oracle som ska köras dagligen kl. 03:00 och exekvera en lagrad procedur för att utföra en viss uppgift. Till exempel är det lagrade procedurens namn PROC_DAILY_UPDATES
.
För att uppnå detta använder följande exempel Oracles DBMS_SCHEDULER.CREATE_JOB
procedur:
1. Skapa ett jobb i Oracle med 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; /
När du har skapat jobbet ovan, aktivera det:
2. Aktivera jobbet med DBMS_SCHEDULER.ENABLE
BEGIN DBMS_SCHEDULER.enable('JOB_DAILY_UPDATES'); END; /
Använd följande fråga för att bekräfta att jobbet skapats framgångsrikt:
Select * from user_scheduler_jobs where job_name = 'JOB_DAILY_UPDATES';
Från ovanstående fråga får du information som senaste startdatum, nästa körningsdatum och status för jobbaktiveringar , etc.
För att få jobbexekveringshistoriken använd följande fråga:
Select * from user_scheduler_job_run_details where job_name = 'JOB_DAILY_UPDATES';
Du kan också märka att i ovanstående DBMS_SCHEDULER.CREATE_JOB
procedurexempel, jag använde tidszonen America/New_York
. Du kan få tidszonen för ett specifikt land genom att använda följande fråga:
SELECT DISTINCT tzname, TZ_OFFSET (tzname) FROM V$TIMEZONE_NAMES ORDER BY tzname;
Utdata
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 ...
Se även:
- Hur schemalägger man ett jobb i Oracle SQL Developer?
- Lär dig hur du schemalägger uppgifter/jobb med Cron (crontab) i Linux
- Få aktuell lokal tid i vilket land som helst i PL/SQL