电脑技术学习

Oracle计划任务

dn001
Oracle 计划任务――每天零晨1 : 30 执行一个存储过程




对涉及到 oracle 数据库,需要定时执行的工作,可以考虑三个方法:;;;
1 、用 oracle 的 job 来完成;;;
2 、写个批处理文件,用 windows 的计划任务实现;;;
3 、 oracle 中建表,写过程,外部写监控程序调用(线程不断检查有没有要执行的任务)




存储过程:



create or replace PRocedure CDRFEE_CREATE is
begin
insert into CRM_CALL_MONEY
select callingusername,sum (CHARGEAMOUNT),to_char(sysdate -interval '1' day , 'yyyy-MM-dd' ) from cdrinfo
where logtime>to_date(to_char(sysdate -interval '1' day , 'yyyy-MM-dd' ), 'yyyy-MM-dd' ) and logtime<to_date(to_char(sysdate , 'yyyy-MM-dd' ), 'yyyy-MM-dd' )
group by callingusername ;
end CDRFEE_CREATE;





Job :

variable jobno number;

begin
sys .dbms_job.submit(job => :job,
what => 'CDRFEE_CREATE;' ,
next_date => to_date( '26-11-2009 1:30:00' , 'dd-mm-yyyy hh24:mi:ss' ),
interval => 'sysdate+1' );
commit ;
end ;
/




注意点:

1、;;;放足权限,如存储过程需要创建表,那么需要给当前连接用户这种系统权限: create any table 。




查看 Job 执行情况:

select * from dba_jobs 所有的 JOB

select * from dba_jobs_running 正在运行的;