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 正在运行的;
下一篇 我的第一个JAVA小程序