当前位置:首页 » 存储配置 » oracle存储过程定时器

oracle存储过程定时器

发布时间: 2024-01-29 13:59:54

Ⅰ oracle 添加一个计划任务 每天凌晨两点 定时执行一个存储过程 求详细步骤!!急!!

在你的存储过程里面定义一个变量:
v_HH24 CHAR(2) := '00';

begin后面给变量赋值:
v_HH24 := to_char(sysdate, 'HH24');

然后在你执行的代码外羡友核面加上:
IF v_HH24 = '02'兄掘 THEN

你的代码;
end if;
然告游后使用下面的脚本创建job:

begin
sys.dbms_job.submit(job => :job,
what => '你的存储过程名字;',
next_date => to_date('01-06-2013 00:00:00', 'dd-mm-yyyy hh24:mi:ss'),
interval => 'SYSDATE+60/1440');
commit;
end;
/

Ⅱ oracle 创建定时任务执行存储过程

可以用图形化界面来创建JOB,如图:在PL/sql的项目DBMS_JOBS中进行新建。

填写好上面标红的地方后,点击应用即可生成计划!

Ⅲ 想请教一下如何用oracle 中JOB实现定时存储过程。

如果是10g的话就用scheler来代替job吧,比job稳定多了。

先解释一下基础概念,scheler 包含了以下几个实体对象
Program -- 提供了scheler 将要运行什么,包含program name,program type(PLSQL块、存储过程、外部程序),program action(具体的程序实体,比如说一个PLSQL块、或者是存储过程的名称、或者是外部程序的路径加名称) 。

Scheles -- 指定何时何种频率来运行job,可以被不同的job重复的利用。比如说我有两个job都要求在每天的凌晨4点运行,那么两个job可以同时指定相同的schele。

Jobs -- 具体的作业的名称,依赖于那个program、schele。也可以不指定program、schele,而直接写入program、schele的相应参数。

Chains -- 把一组program像一个单独的实体连接在一起,作为一个对象。Job可以指向Chains代替单一的program 。这样就能完成类似如下功能:运行A,然后运行B,当A、B都运行成功则运行C,否则运行D。

下面参考文档边看边做。

1.创建一张表 create table scheler_test(id number,instime date);

2.创建一个存储过程,实现往表中插入资料。

create or replace procere p_insSysdate as
id number;
begin
select count(*) into id from scheler_test;
insert into scheler_test values(id,sysdate);
commit;
end;
/
3.创建一个schele,这个仅仅是一个时间上的安排,由DBMS_SCHEDULER.CREATE_JOB调用。这样就可以重用schele,并且schele在时间的安排上强大与原先的JOB 。语法如下:

BEGIN
SYS.DBMS_SCHEDULER.CREATE_SCHEDULE
(
schele_name => 'SCOTT.EVERY_MINUTE'
,start_date => NULL
,repeat_interval => 'FREQ=MINUTELY'
,end_date => NULL
,comments => NULL
);
END;
/

以下给出部分repeat_interval的写法实例,以供参考
EVERY DAY 'FREQ=DAILY;INTERVAL=1'
EVERY MINUTE 'FREQ=MINUTELY;INTERVAL=1'
EVERY 4 HOURS ON THE HOUR 'FREQ=HOURLY;INTERVAL=4;BYMINUTE=0;BYSECOND=0'
1st DAY OF EVERY MONTH 'FREQ=DAILY;BYMONTHDAY=1'
WEEKDAYS AT 7am and 3pm 'FREQ=DAILY; BYDAY=MON,TUE,WED,THU,FRI; BYHOUR=7,15; BYMINUTE=0;BYSECOND=0'

4.创建DBMS_SCHEDULER.CREATE_PROGRAM,指定运行什么样的程序。

BEGIN
SYS.DBMS_SCHEDULER.CREATE_PROGRAM
(
program_name => 'SCOTT.PRG_INSSYSDATE'
,program_type => 'STORED_PROCEDURE'
,program_action => 'p_insSysdate'
,number_of_arguments => 0
,enabled => TRUE
,comments => NULL
);
END;
/

Ⅳ 怎样实现每天自动执行oracle的存储过程一次

用job
oracle定时器调用存储过程
1.创建一个表,为了能清楚看到定时器的运行情况我们创建一个带有日期字段的表
Sql代码
create table job_table(run_time date);

create table job_table(run_time date);
2.创建存储过程
Sql代码
create or replace procere job_proc is
begin
insert into job_table (run_time) values (sysdate);
end;

create or replace procere job_proc is
begin
insert into job_table (run_time) values (sysdate);
end;
3.创建job,并且指定为一分钟执行一次
Sql代码
declare
job number;
begin
dbms_job.submit(job, 'job_proc;', sysdate, 'TRUNC(sysdate,''mi'') + 1 / (24*60)');
end/
commit;

declare
job number;
begin
dbms_job.submit(job, 'job_proc;', sysdate, 'TRUNC(sysdate,''mi'') + 1 / (24*60)');
end/
commit;
4.创建之后自动处于运行状态,我们查询job表,看看我们创建的job
Sql代码
select job,broken,what,interval,t.* from user_jobs t;

select job,broken,what,interval,t.* from user_jobs t;
job broken what interval ...
81 N job_proc; TRUNC(sysdate,'mi') + 1 / (24*60) ...

参数介绍
job job的唯一标识,自动生成的
broken 是否处于运行状态,N;运行;Y:停止
what 存储过程名称
interval 定义的执行时间

补充:
描述 INTERVAL参数值
每天午夜12点 ''TRUNC(SYSDATE + 1)''
每天早上8点30分 ''TRUNC(SYSDATE + 1) + (8*60+30)/(24*60)''
每星期二中午12点 ''NEXT_DAY(TRUNC(SYSDATE ), ''''TUESDAY'''' ) + 12/24''
每个月第一天的午夜12点 ''TRUNC(LAST_DAY(SYSDATE ) + 1)''
每个季度最后一天的晚上11点 ''TRUNC(ADD_MONTHS(SYSDATE + 2/24, 3 ), ''Q'' ) -1/24''
每星期六和日早上6点10分 ''TRUNC(LEAST(NEXT_DAY(SYSDATE, ''''SATURDAY"), NEXT_DAY(SYSDATE, "SUNDAY"))) + (6×60+10)/(24×60)''

Ⅳ oracle中通过存储过程对表数据进行定时清理

使用pl/sql developer 可以很容易添加定时执行的Oracle存储过程
一个例子:
Sql代码
begin
sys.dbms_job.submit(job => :job,
what => 'RATING.JOB_PRESS;',
next_date => to_date('01-01-4000', 'dd-mm-yyyy'),
interval => 'TRUNC(SYSDATE+1)');
sys.dbms_job.broken(job => :job,
broken => true,
next_date => to_date('01-01-4000', 'dd-mm-yyyy'));
commit;
end;

Ⅵ oracle定时执行怎么执行多个存储过程

定时执行存储过程,需要在job里定义;而执行多个存储过程,则在job中定义多次即可。

运行环境:oracle 10g

1、定义其中一个job

declare
jobnonumber;
begin
dbms_job.submit(11,
what=>'pro_bdc_bh(
to_char(add_months(trunc(sysdate),-1),''yyyy''),
to_char(add_months(trunc(sysdate),-1),''MM''),
''true''
);',
next_date=>sysdate,
Interval=>'TRUNC(sysdate)+1+2/(24)');
commit;
end;

注意:其中pro_bdc_bh为存储过程名称,TRUNC(sysdate) + 1 +2 / (24)为定义的运行时间为每日凌晨2点。

2、然后定义另外一个job

declare
jobnonumber;
begin
dbms_job.submit(11,
what=>'p_test(
to_char(add_months(trunc(sysdate),-1),''yyyy''),
to_char(add_months(trunc(sysdate),-1),''MM''),
''true''
);',
next_date=>sysdate,
Interval=>'TRUNC(sysdate)+1+2/(24)');
commit;
end;

注意:这次运行的存储过程名为p_test,运行时间同样为每日凌晨2点。

3、创建job完成后,可通过具有创建job的账号查询创建是否成功,语句如下:

select*fromuser_jobs;

Ⅶ oracle中怎么让带有输入参数的存储过程定时执行

两种方法
1。oracle中有 [作业] 功能,创建一个作业,然后,设置定时执行。
2。用系统的[定时任务],定一个时间,然后调用bat文件,从bat中调用oracle的存储过程。

热点内容
服务器怎么做对外ip 发布:2024-11-28 09:41:07 浏览:798
编译java的程序需要使用什么命令 发布:2024-11-28 09:28:03 浏览:656
python二进制utf8 发布:2024-11-28 08:56:41 浏览:253
三方网站源码 发布:2024-11-28 08:30:51 浏览:108
windows版ftp软件免费下载 发布:2024-11-28 08:25:28 浏览:857
淘宝帐号怎么改密码 发布:2024-11-28 07:46:05 浏览:14
监控未配置怎么办视频 发布:2024-11-28 07:44:41 浏览:504
android获取手机的ip 发布:2024-11-28 07:42:13 浏览:173
python打开文件窗口 发布:2024-11-28 07:36:13 浏览:557
cpu二级缓存的作用 发布:2024-11-28 07:36:12 浏览:1001