欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

在oracle中使用scheduler的范例

程序员文章站 2022-06-14 17:46:39
...

欢迎进入Oracle社区论坛,与200万技术人员互动交流 >>进入 在oracle中使用scheduler的范例 Sql代码 -- 创建新表 create table T_TEST_JOB ( ID LONG, TEST_DATE TIMESTAMP(6) ) tablespace GBIAPS pctfree 10 initrans 1 maxtrans 255 storage ( initia

欢迎进入Oracle社区论坛,与200万技术人员互动交流 >>进入

在oracle中使用scheduler的范例

Sql代码

-- 创建新表

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;

在oracle中使用scheduler的范例