In Oracle PL/SQL, you can create a scheduled job to execute a stored procedure at specified intervals using the DBMS_SCHEDULER package. This package provides a powerful way to manage and automate various database tasks. Here’s a step-by-step guide on how to create a job that runs a procedure:
Create or Identify Your Procedure
First, make sure you have a stored procedure that you want to schedule. This procedure should already be defined in your database.
CREATE OR REPLACE PROCEDURE my_procedure AS BEGIN -- Your procedure code here END;
Create a Job Definition
You’ll need to create a job definition using the DBMS_SCHEDULER.CREATE_JOB procedure. This job definition specifies the name of the job, the type of job (PL/SQL block in this case), and other attributes.
BEGIN DBMS_SCHEDULER.CREATE_JOB ( job_name => 'my_job', job_type => 'PLSQL_BLOCK', job_action => 'BEGIN my_procedure; END;', start_date => SYSTIMESTAMP, repeat_interval => 'FREQ=DAILY; BYHOUR=12; BYMINUTE=0; BYSECOND=0', enabled => TRUE ); END; /
job_name: Provide a unique name for your job.
job_type: Set it to ‘PLSQL_BLOCK’ as we are running a PL/SQL block.
job_action: Specify the PL/SQL block to run, which includes calling your procedure.
start_date: Set the initial date and time for the job to start.
repeat_interval: Define the frequency and schedule for the job. In this example, the job runs daily at 12:00 PM.
enabled: Set it to TRUE to enable the job immediately.
Manage and Monitor the Job
Once the job is created, you can manage and monitor it using various DBMS_SCHEDULER procedures and views. For example:
To disable a job: DBMS_SCHEDULER.DISABLE(‘my_job’);
To enable a job: DBMS_SCHEDULER.ENABLE(‘my_job’);
To drop a job: DBMS_SCHEDULER.DROP_JOB(‘my_job’);
View Job Details
You can query the DBA_SCHEDULER_JOBS view to see details about your scheduled job.
SELECT job_name, job_type, job_action, start_date, repeat_interval, enabled FROM DBA_SCHEDULER_JOBS WHERE job_name = 'my_job';
Monitor Job Execution
You can also view the job’s execution history in the DBA_SCHEDULER_JOB_LOG view to check if your procedure is running as expected.
SELECT job_name, log_date, status FROM DBA_SCHEDULER_JOB_LOG WHERE job_name = 'my_job';
That’s it! You’ve created a scheduled job to run a procedure in Oracle PL/SQL. This allows you to automate various database tasks and ensure that your procedures are executed at specific intervals.