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 正在运行的