Example:
-- submits a job, this one runs a stored procedure to analyze the schema,
different owners on different days, running the job 7 days a week.
--
-- stored procedure
CREATE OR REPLACE Procedure SYS.RUN_DAILY_ANALYZE (placeholder in varchar2
) As
v_instdate varchar2(9);
cursor c1 is
SELECT rtrim(TO_CHAR(sysdate,'DAY')) FROM dual;
Begin
open c1;
fetch c1 into v_instdate;
close c1;
if v_instdate = 'MONDAY' then
DBMS_UTILITY.ANALYZE_SCHEMA ('OE','ESTIMATE','',20);
DBMS_UTILITY.ANALYZE_SCHEMA ('QA','ESTIMATE','',20);
elsif v_instdate = 'TUESDAY' then
DBMS_UTILITY.ANALYZE_SCHEMA ('AP','ESTIMATE','',20);
DBMS_UTILITY.ANALYZE_SCHEMA ('AR','ESTIMATE','',20);
elsif v_instdate = 'WEDNESDAY' then
DBMS_UTILITY.ANALYZE_SCHEMA ('FA','ESTIMATE','',20);
DBMS_UTILITY.ANALYZE_SCHEMA ('GL','ESTIMATE','',20);
elsif v_instdate = 'THURSDAY' then
DBMS_UTILITY.ANALYZE_SCHEMA ('APPLSYS','ESTIMATE','',20);
elsif v_instdate = 'FRIDAY' then
DBMS_UTILITY.ANALYZE_SCHEMA ('INV','ESTIMATE','',20);
DBMS_UTILITY.ANALYZE_SCHEMA ('FA','ESTIMATE','',20);
elsif v_instdate = 'SATURDAY' then
DBMS_UTILITY.ANALYZE_SCHEMA ('PO','ESTIMATE','',20);
else DBMS_UTILITY.ANALYZE_SCHEMA ('PA','ESTIMATE','',20);
end if;
End;
--
-- submit the job
DECLARE jobno number;
placeholder varchar2(1);
BEGIN
DBMS_JOB.SUBMIT(jobno,
'SYS.RUN_DAILY_ANALYZE(''placeholder'');',
TO_DATE('Friday, July 25, 2003 12 00 00 AM', 'DAY, MONTH DD, YYYY HH:MI:SS AM'),
'SYSDATE+1');
COMMIT;
END;
--
-- change the job to broken before you can get rid of the job from the queue, if it is executing.
-- It will not interrupt the job running, must set job to broken then kill the job.
-- jobno is the job number assigned by oracle
begin
dbms_job.broken(jobno,TRUE);
commit;
end;
--
-- removes the job from the queue.
begin
dbms_job.remove(jobno);
commit;
end;