oracle中怎么写定时,oracle定时执行语句

怎么在oracle中做定时器呢?

创建scheduler,PL/SQL Developer里可以直接创建,也可以写SQL创建,类似以下语法:

创新互联公司坚持“要么做到,要么别承诺”的工作理念,服务领域包括:网站设计、成都做网站、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的平舆网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!

begin

sys.dbms_scheduler.create_schedule(schedule_name = 'FRQ_CATALOG.TT',

start_date = to_date('18-10-2011 00:00:00', 'dd-mm-yyyy hh24:mi:ss'),

repeat_interval = 'Freq=Daily;Interval=0',

end_date = to_date('31-10-2011 00:00:00', 'dd-mm-yyyy hh24:mi:ss'),

comments = '');

end;

如果懂了希望点一下采纳

ORACLE数据库怎么做定时执行操作

1.create table test(id int,starttime date,state int);

2.create or replace procedure sp_update is

cursor cur is select * from test where state=0;

v_id int;

v_starttime date;

v_state int;

begin

open cur;

loop

fetch cur into v_id,v_starttime,v_state;

exit when cur%notfound;

update test set state=1 where starttime=sysdate;

commit;

end loop;

close cur;

end;

/

3.创建JOB

SQL variable job1 number;

SQL

SQL begin

2 dbms_job.submit(:job1,sp_update;',sysdate,'sysdate+1/1440'); --每天1440分钟,即一分钟运行sp_update过程一次

3 end;

4 /

PL/SQL 过程已成功完成。

运行JOB

SQL begin

2 dbms_job.run(:job1);

3 end;

4 /

oracle job 时间每五分钟执行怎么写

oracle job 时间每五分钟执行:

begin

sys.dbms_job.submit(job = :job,

what = '一个存储过程;',

Interval =TRUNC(sysdate,'mi') + 5/ (24*60));

commit;

end;

其中:如果改成TRUNC(sysdate,'mi')+ 10/ (24*60) 就是每10分钟执行次。每秒钟执行次:Interval = sysdate+ 1/(24 * 60 * 60)。如果改成sysdate + 10/(24 *60 * 60)就是10秒钟执行次。

使用dbms_job.submit方法过程,这个过程有五个参数:job、what、next_date、interval与no_parse:

1、job参数是输出参数,由submit()过程返回的binary_ineger,这个值用来唯一标识一个工作。一般定义一个变量接收,可以去user_jobs视图查询job值。

2、what参数是将被执行的PL/SQL代码块,存储过程名称等。

3、next_date参数指识何时将运行这个工作。

4、interval参数何时这个工作将被重执行。

5、no_parse参数指示此工作在提交时或执行时是否应进行语法分析——true,默认值false。指示此PL/SQL代码在它第一次执行时应进行语法分析,而FALSE指示本PL/SQL代码应立即进行语法分析。

扩展资料:

1、每天定时执行

例如:每天的凌晨1点执行

Interval =TRUNC(sysdate) + 1 +1/ (24)

2、每周定时执行

例如:每周一凌晨1点执行:

Interval =TRUNC(next_day(sysdate,'星期一'))+1/24

3、每月定时执行

例如:每月1日凌晨1点执行:

Interval=TRUNC(LAST_DAY(SYSDATE))+1+1/24

4、每季度定时执行

例如每季度的第一天凌晨1点执行:

Interval =TRUNC(ADD_MONTHS(SYSDATE,3),'Q') + 1/24

参考资料来源:百度百科-Oracle系统

参考资料来源:百度百科-Oracle PL/SQL从入门到精通

oracle定时任务时间怎么写?

我感觉你应该是不知道怎么写每月和每年吧。其实很简单,把你下次时间的字符串拿出来看下就行。下面是代码。

DECLARE

I4 INTEGER;I5 INTEGER;

BEGIN

--每月5号中午12点

DBMS_JOB.SUBMIT(I4,'YOUR PROC;',SYSDATE,'TRUNC(SYSDATE, ''MM'') + 4 + 12 / 24');

--每年1月10号中午12点

DBMS_JOB.SUBMIT(I5,'YOUR PROC;',SYSDATE,'TRUNC(SYSDATE, 'Y') + 9 + 12 / 24');

COMMIT;

END;

oracle 如何编写定时脚本

用job,具体用法:

declare

n_job binary_integer;

begin

dbms_job.submit(n_job, '你要执行的东西', sysdate, TRUNC(LAST_DAY(SYSDATE))+4+2/24);

end;

-- 每月4号执行

dbms_job.submit(n_job_01,'你调的东西',sysdate,'TRUNC(LAST_DAY(SYSDATE))+4+2/24');

-- 每分钟执行一次

dbms_job.submit(n_job_01,'你调的东西',sysdate,'TRUNC(sysdate,’mi’) + 1 / (24*60)');

-- 凌晨两点执行

dbms_job.submit(n_job_01,'你调的东西',sysdate,'TRUNC(sysdate) + 1 + 2/24');

-- 每周一凌晨2点执行 周一是每周的第二天next_day(sysdate,2)同理周二是第三天,next_day(sysdate,3)

dbms_job.submit(n_job_01,'你调的东西',sysdate,'TRUNC(next_day(sysdate,2))+2/24');

-- 每月1日凌晨两点执行

dbms_job.submit(n_job_01,'你调的东西',sysdate,'TRUNC(LAST_DAY(SYSDATE))+1+2/24');

-- 每季第一天凌晨两点执行

dbms_job.submit(n_job_01,'你调的东西',sysdate,'TRUNC(ADD_MONTHS(SYSDATE,3),'Q') + 2/24');

-- 每年7月1日和1月1日凌晨2点

dbms_job.submit(n_job_01,'你调的东西',sysdate,'ADD_MONTHS(trunc(sysdate,'yyyy'),6)+2/24');

-- 每年1月1日凌晨2点执行

dbms_job.submit(n_job_01,'你调的东西',sysdate, 'Add_months(trunc(sysdate,'yyyy'), 12) +2/24');

Oracle中如何定时执行一条SQL语句

通过网上查询,找到一种方案,就是先在oracle里面对要定时的sql写成存储过程,再用DBMS_scheduler对存储过程进行定时执行。

在数据库中新建了一个表MY_JOB_TEST

在数据库中新建了一个表MY_JOB_TEST

在数据库中新建了一个表MY_JOB_TEST

在PLSQL中,执行下面语句模拟存储过程的调用,执行后要点提交才有反应

[sql] view plain copy

BEGIN

INSERT INTO MY_JOB_TEST (NUM) VALUES (1);

END;

然后下面建立一个存储过程JOB_TEST

(注意,这里用户需要CREATE JOB权限,可以用超级管理员用户执行下面语句给指定用户赋予该权限)

[sql] view plain copy

Grant Create Job To 指定用户名

[sql] view plain copy

SQLCREATE OR REPLACE PROCEDURE

JOB_TEST

BEGIN

INSERT INTO MY_JOB_TEST (NUM) VALUES (1);

END;

(此处要执行存储过程不能用exec JB_TEST,这种执行方式只能在命令行中使用)

使用DBMS_SCHEDULER进行定时,这里为每分钟执行一次

[sql] view plain copy

SQL BEGIN

DBMS_SCHEDULER.CREATE_JOB (

job_name           =  'SCHEDULER_TEST',

job_type           =  'STORED_PROCEDURE',

job_action         =  'JOB_TEST',

start_date         =  sysdate,

repeat_interval    =  'FREQ=MINUTELY;INTERVAL=1');

END;

但是这样子定时任务并不会执行。

我们可以用下面的命令查看一下scheduler的状态

[plain] view plain copy

SQLSELECT * FROM USER_SCHEDULER_JOBS;

此时我们可以看到enable的状态是false的,因此我们需要去启动定时任务

[plain] view plain copy

SQLBEGIN

DBMS_SCHEDULER.ENABLE('SCHEDULER_TEST');

END

dbms_scheduler.enable('j_test');  --启用jobs   

dbms_scheduler.disable('j_test');  --禁用jobs    

dbms_scheduler.run_job('j_test');  --执行jobs    

dbms_scheduler.stop_job('j_test');  --停止jobs   

dbms_scheduler.drop_job('j_test');  --删除jobs  

然后再查询job的enable装态,发现为true了。

然后查看MY_JOB_TEST表,发现每分钟会往里面添加记录。

当需要修改定时任务或者调度的其他属性时,可以用下面的

dbms_scheduler.set_attribute('调度名','调度属性','调度值');

至此,定时任务完成。


文章题目:oracle中怎么写定时,oracle定时执行语句
URL分享:http://azwzsj.com/article/hdpchi.html