oracle怎么实现每天定时执行一个计划任务 我是新手,刚刚开始接触oracle,现在是什么都头脑.领导让我实现一个在晚上去执行一个存储过程或什么的处理白天大量数据业务的程序.由于对oracle一点都不熟,根据不知道从哪下手,请各位大侠帮忙. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 可以考虑三个方法:1、用oracle的job来完成2、写个批处理文件,用windows的计划任务实现3、oracle中建表,写过程,外部写程序调用(线程不断检查有没有要执行的任务) 补充楼上的:其实就是2种,一种是ORACLE内部的JOB,一种是通过外部检测来判断是否要执行这个过程。用JOB也是比较方便的,其实比在外部检测要简单点,例如:begin sys.dbms_job.submit(job => :job, what => DoSomething;', next_date => to_date('20-10-2005 01:00:00', 'dd-mm-yyyy hh24:mi:ss'), interval => 'trunc(SYSDATE + 1,''mi'')'); commit;end;就是让在2005-10-20 01:00:00开始执行DoSomething过程,以后每隔1天做一次 先把处理白天大量数据业务的存储过程写好,然后建job。btw:qiaozhiwei(乔)升级了,祝贺祝贺。快发帖散分啊 :) 一个简单例子: 创建测试表SQL> create table a(a date);表已创建。创建一个自定义过程SQL> create or replace procedure test as 2 begin 3 insert into a values(sysdate); 4 end; 5 /过程已创建。创建JOBSQL> variable job1 number;SQL> SQL> begin 2 dbms_job.submit(:job1,'test;',sysdate,'sysdate+1/1440'); --每天1440分钟,即一分钟运行test过程一次 3 end; 4 /PL/SQL 过程已成功完成。运行JOBSQL> begin 2 dbms_job.run(:job1); 3 end; 4 /PL/SQL 过程已成功完成。SQL> select to_char(a,'yyyy/mm/dd hh24:mi:ss') 时间 from a;时间-------------------2001/01/07 23:51:212001/01/07 23:52:222001/01/07 23:53:24删除JOBSQL> begin 2 dbms_job.remove(:job1); 3 end; 4 /PL/SQL 过程已成功完成。select job,to_char(next_date,'yyyy-mm-dd hh24:mi:ss') from all_jobs;----------job的使用:DBMS_JOB.SUBMIT(:jobno,//job号 'your_procedure;',//要执行的过程 trunc(sysdate)+1/24,//下次执行时间 'trunc(sysdate)+1/24+1'//每次间隔时间 );删除job:dbms_job.remove(jobno);修改要执行的操作:job:dbms_job.what(jobno,what);修改下次执行时间:dbms_job.next_date(job,next_date);修改间隔时间:dbms_job.interval(job,interval);停止job:dbms.broken(job,broken,nextdate);启动job:dbms_job.run(jobno);例子:VARIABLE jobno number;begin DBMS_JOB.SUBMIT(:jobno, 'Procdemo;',//Procdemo为过程名称 SYSDATE, 'SYSDATE + 1/720'); commit;end;-----修改job_queue_processes的值(保证其不为0否则JOB不自动运行)可通过select * from v$parameter;查看其值;方法1,startup pfile='C:\oracle\ora90\database\initorcl.ora';需要修改initorcl.ora文件的job_queue_processes参数,然后重新启动数据库以后才能生效方法2,alter system set job_queue_processes=10 不需要重新启动数据库就能生效,系统自动修改init.ora文件 谢谢各位.看来还得好好学学pl/sql了,基本已经知道是怎么个过程了,剩下就得自己努力去学写业务的语句了.结贴 修改CLOB的报错信息 Oracel临时表 表结构会在数据库重启后自动删除吗? win7 home 64位想要安装Oracle 11g oracle 性能的优化 急急急!!!求各位大虾帮助下,用存储过程实现向邮箱里发邮件 ocicpplib自带的demo连接不上,请高手指教 !!P4+redhat linux+oracle的安装问题? 2张表,为什么字节大的反而header_block比较小?? 关于ORACLE73个人版本地数据库别名的问题 问大家个事 菜鸟求教:在JSP中如何在Oracle的存储过程执行时弹出提示框让用户选择,并根据用户的选择执行相应步骤 pb里oracle问题
1、用oracle的job来完成
2、写个批处理文件,用windows的计划任务实现
3、oracle中建表,写过程,外部写程序调用(线程不断检查有没有要执行的任务)
sys.dbms_job.submit(job => :job,
what => DoSomething;',
next_date => to_date('20-10-2005 01:00:00', 'dd-mm-yyyy hh24:mi:ss'),
interval => 'trunc(SYSDATE + 1,''mi'')');
commit;
end;
就是让在2005-10-20 01:00:00开始执行DoSomething过程,以后每隔1天做一次
一个简单例子: 创建测试表
SQL> create table a(a date);表已创建。创建一个自定义过程
SQL> create or replace procedure test as
2 begin
3 insert into a values(sysdate);
4 end;
5 /过程已创建。创建JOB
SQL> variable job1 number;
SQL>
SQL> begin
2 dbms_job.submit(:job1,'test;',sysdate,'sysdate+1/1440'); --每天1440分钟,即一分钟运行test过程一次
3 end;
4 /PL/SQL 过程已成功完成。运行JOB
SQL> begin
2 dbms_job.run(:job1);
3 end;
4 /PL/SQL 过程已成功完成。SQL> select to_char(a,'yyyy/mm/dd hh24:mi:ss') 时间 from a;时间
-------------------
2001/01/07 23:51:21
2001/01/07 23:52:22
2001/01/07 23:53:24删除JOB
SQL> begin
2 dbms_job.remove(:job1);
3 end;
4 /PL/SQL 过程已成功完成。
select job,to_char(next_date,'yyyy-mm-dd hh24:mi:ss') from all_jobs;
----------job的使用:DBMS_JOB.SUBMIT(:jobno,//job号
'your_procedure;',//要执行的过程
trunc(sysdate)+1/24,//下次执行时间
'trunc(sysdate)+1/24+1'//每次间隔时间
);
删除job:dbms_job.remove(jobno);
修改要执行的操作:job:dbms_job.what(jobno,what);
修改下次执行时间:dbms_job.next_date(job,next_date);
修改间隔时间:dbms_job.interval(job,interval);
停止job:dbms.broken(job,broken,nextdate);
启动job:dbms_job.run(jobno);
例子:
VARIABLE jobno number;
begin
DBMS_JOB.SUBMIT(:jobno,
'Procdemo;',//Procdemo为过程名称
SYSDATE, 'SYSDATE + 1/720');
commit;
end;-----修改job_queue_processes的值(保证其不为0否则JOB不自动运行)
可通过select * from v$parameter;查看其值;
方法1,startup pfile='C:\oracle\ora90\database\initorcl.ora';
需要修改initorcl.ora文件的job_queue_processes参数,然后重新启动数据库以后才能生效
方法2,alter system set job_queue_processes=10
不需要重新启动数据库就能生效,系统自动修改init.ora文件