ITPub博客

首页 > 数据库 > Oracle > DBMS_JOB 自动作业调度

DBMS_JOB 自动作业调度

原创 Oracle 作者:RockJack 时间:2007-11-02 15:26:04 0 删除 编辑

能不能写一个存储过程 每隔一定时间自动运行(定时器)
dbms_job.submit() 提交作业到系统 指定它什么时候运行

--DBMS_JOB 作业调度包(指定PL/SQL过程定时自动执行)
--初始化参数init.ora
job_queue_processes = 1 --作业队列进程的个数(最大36个)
job_queue_interval = 60 --进程每隔多少时间扫描作业队列(60s)

processes=150 --并发用户的数量
open_cursors =300 --存储过程中使用游标的数量


--DBMS_JOB包中的方法
procedure submit(job out binary_integer,
what in varchar2,
next_date in date default sysdate,
interval in varchar2 default null,
no_parse in boolean default false);

procedure change(job in binary_integer,
what in varchar2,
next_date in date,
interval in varchar2);

procedure what(job in binary_integer,
what in varchar2);

procedure next_date(job in binary_integer,
next_date in date);

procedure interval(job in binary_integer,
interval in varchar2);

--实际例子
create sequence temp_seq
start with 1;

create table temp_table(
num_col number,
char_col varchar2(50));


create or replace procedure tempinsert is
begin
insert into temp_table(num_col,char_col)
values (temp_seq.nextval,to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'));

commit;
end;

--注册每10秒运行一次
declare
v_job number;
begin
dbms_job.submit(v_job,'tempinsert();',sysdate,'sysdate + (10 / (24 * 60 * 60))');
commit;
end;


--删除作业
dbms_job.remove(job in binary_integer);

--查看作业信息
select * from user_jobs;
select * from dba_jobs;

内置程序包 大约有25个 都是sys拥有

[@more@]

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7724693/viewspace-980507/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2010-08-14

  • 博文量
    30
  • 访问量
    61264