oracle中的scheduler,在oracle中运用scheduler的范例

范例源码:

-- 创建新表

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;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值