Kravet er at oprette et job i Oracle til at køre dagligt kl. 3:00 AM og udføre en lagret procedure for at udføre en bestemt opgave. For eksempel er navnet på den lagrede procedure PROC_DAILY_UPDATES
.
For at opnå dette bruger følgende eksempel Oracles DBMS_SCHEDULER.CREATE_JOB
procedure:
1. Opret et job i Oracle ved hjælp af 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 oprettet ovenstående job, skal du aktivere det:
2. Aktiver jobbet ved hjælp af DBMS_SCHEDULER.ENABLE
BEGIN DBMS_SCHEDULER.enable('JOB_DAILY_UPDATES'); END; /
Brug følgende forespørgsel for at bekræfte det oprettede job:
Select * from user_scheduler_jobs where job_name = 'JOB_DAILY_UPDATES';
Fra ovenstående forespørgsel får du oplysninger som sidste startdato, næste køredato og jobaktiveringsstatus osv.
Brug følgende forespørgsel for at få jobudførelseshistorikken:
Select * from user_scheduler_job_run_details where job_name = 'JOB_DAILY_UPDATES';
Du kan også bemærke, at i ovenstående DBMS_SCHEDULER.CREATE_JOB
Eksempel på procedure, jeg brugte tidszonen America/New_York
. Du kan få tidszonen for et bestemt land ved at bruge følgende forespørgsel:
SELECT DISTINCT tzname, TZ_OFFSET (tzname) FROM V$TIMEZONE_NAMES ORDER BY tzname;
Output
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 også:
- Hvordan planlægger man et job i Oracle SQL Developer?
- Lær, hvordan du planlægger opgaver/job med Cron (crontab) i Linux
- Få aktuel lokaltid for ethvert land i PL/SQL