Oracleでschedulerを使用する例
3345 ワード
サンプルソース:
--
create table T_TEST_JOB
(
ID LONG,
TEST_DATE TIMESTAMP(6)
)
tablespace GBIAPS
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 64
minextents 1
maxextents unlimited
);
--
create sequence SEQ_TEST_JOB
minvalue 1
maxvalue 9999999999999999999999999999
start with 1
increment by 1
cache 10;
--
create or replace procedure P_TEST_JOB as
begin
insert into t_test_job(id,test_date) values (SEQ_TEST_JOB.NEXTVAL,sysdate);
end;
/
/*
create_job create_schedule , NLS_DATE_LANGUAGE, NLS_DATE_FORMAT,
NLS_TIMESTAMP_FORMAT, NLS_TIMESTAMP_TZ_FORMAT , alter session
alter session set NLS_DATE_FORMAT='yyyy-MM-dd';
alter session set NLS_TIMESTAMP_FORMAT='yyyy-MM-dd hh24:mi:ss';
alter session set NLS_TIMESTAMP_TZ_FORMAT='yyyy-MM-dd HH:MI:SS.FF AM TZR';
*/
select * from nls_session_parameters where parameter like '%_DATE_%' or parameter like '%_TIMESTAMP_%';
-- job
-- FREQ , : YEARLY, MONTHLY, WEEKLY, DAILY, HOURLY, MINUTELY, SECONDLY
-- INTERVAL , 1-999
-- : BYMONTH,BYWEEKNO,BYYEARDAY,BYMONTHDAY,BYDAY,BYHOUR,BYMINUTE,BYSECOND
/*
1,3,5 job FREQ=WEEKLY; BYDAY=MON,WED,FRI
3,6,9,12 30 job FREQ=YEARLY; BYMONTH=MAR,JUN,SEP,DEC; BYMONTHDAY=30
1 1
Freq=Monthly;BYMONTHDAY=1;BYHOUR=1;BYMINUTE=0;BYSECOND=0;Interval=1
*/
begin
sys.dbms_scheduler.create_job(job_name => 'JOB_TESTJOB',
job_type => 'STORED_PROCEDURE',
job_action => 'P_TEST_JOB',
start_date => sysdate,
repeat_interval => 'Freq=MINUTELY;BYSECOND=0;Interval=1',
end_date => to_date(null),
job_class => 'DEFAULT_JOB_CLASS',
enabled => true,
auto_drop => false,
comments => 'Baiyun Airport Web Site');
end;
/
-- job
begin
dbms_scheduler.enable('JOB_TESTJOB');
end;
/
-- job
begin
dbms_scheduler.run_job('JOB_TESTJOB',TRUE); -- true
end;
/
-- job
begin
dbms_scheduler.stop_job(job_name => 'JOB_TESTJOB',force => TRUE);
end;
/
-- job
begin
dbms_scheduler.drop_job(job_name => 'JOB_TESTJOB',force => TRUE);
end;
/
-- job
select * from user_scheduler_jobs;
select * from dba_scheduler_jobs;
--
select * from t_test_job;
--
delete from t_test_job;