您的位置:首页 > 其它

oralce定时任务 最详细

2016-08-18 17:10 323 查看
主要使用场景:定时在后台执行相关操作(如每天晚上0点将一张表的数据保存到另一                         张表中 等 类似linux crontab)

实验内容:定时插入数据到一张表中

个人经验:oracle job最好少用,尽量使用linux crontab 执行定时任务


方法/步骤

创建一个简单的临时测试表

create table test_job

(

id number(12),

c_date date

);

创建一个简单的临时序列

create sequence seq_test_job_id

minvalue 1

maxvalue 9999999999999999

start with 141

increment by 1

cache 20;

minvalue  表示最小值

maxvalue 自增长最大值

start with 141 表示从141开始

increment by 1 每次加1

seq_test_job_id.nextval  大小为142

创建一个存储过程 

将数据插入到test_job 表中

create or replace procedure pro_test_job

is

begin

  insert into test_job values(seq_test_job_id.nextval,sysdate);

end pro_test_job;

创建一个job,创建完之后,会自动运行

declare

job number;

begin

  --每天1440分钟,即一分钟运行test过程一次

  sys.dbms_job.submit(job,'pro_test_job;',sysdate,'sysdate+1/1440');

end;

submit()函数,有五个参数:job,what,next_date,interval与no_parse

PROCEDURE Submit ( job       OUT binary_ineger, 

What      IN  varchar2, 

next_date IN  date, 

interval  IN  varchar2, 

no_parse  IN  booean:=FALSE) 

job 指一个job的唯一标识。 

what 指 这个job需要执行的plsql语句。 

next_date 指下一次何时将运行这个job。 

interval  指这个job执行的频率 

no_parse

检查oracle job是否正常运行

select * from job_test;



查看job

select job,what,next_date,interval from dba_jobs;



手动运行job

begin

  dbms_job.run(3);   --3 表示 是dba_jobs中job列

end;

删除job

begin

  dbms_job.remove(3);

end;

注意:删除只能本用户删除,否则报错 ora-23421
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: