oracal关于job也就是定时任务
来源:互联网 发布:英雄联盟和刀塔2 知乎 编辑:程序博客网 时间:2024/06/04 08:45
实现的功能:
每隔一分钟自动向getSysDate表中插入当前的系统时间。
中心方法:
1)在命令窗口下:exec GETUSERS1('LMM','LMM');
2)在sql窗口下:
begin
GETUSERS1('LMM','LMM');
end;
一、创建一个测试表 aaa
create table aaa(test date); //test---字段型:date
二、创建要定时执行的[存储]过程: abc.sql
create or replace procedure abcas
begin
insert into aaa values (sysdate);
end ;
三、创建JOB,即创建待执行的[定时任务]过程 ppp.sql
在sql窗口下:
declare
job1 number;
begin
dbms_job.submit(job1,'abc;',sysdate,'sysdate+1/1440');
end;
//此时:找到创建JOB[定时任务]过程 ppp.sql成功后,会有一个job_users表中有一个job值。例如:
select * from dba_jobs
显示结果:
例如: Jon 值为23
说明:每创建一个成功job后,在job_users表中有一个job值。
四、启动JOB,根据上述查找的job值,即启动并运行定时任务过程
在sql窗口下:
-- 运行一个job
begin
dbms_job.run(23); //写入:job值
end;
五、查看运行效果
selectto_char(test,'yyyy/mm/dd hh24:mi:ss') from aaa;
结果如下:
2007/08/03 10:53:11
2007/08/03 11:05:51
六.终止定时器执行。
-- 终止(删除)一个job进程。(重新数据库后,才看得到进程号消失)
begin
dbms_job.remove(23);(即:进程号,要看:select *from user_jobs表中what对应的进程名称相信的的job过程号)
end;
七.重新启动job方法,即重新运行[定时任务]过程即可。
Sql>@ppp.sql;
Sql>/
--相关视图
select *fromdba_jobs;
select * from all_jobs;
select *fromuser_jobs;
-- 查看正在运行job状态值(包括:job的进程号)
select *fromdba_jobs_running;
Select * from job_users;
参数补充说明:
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);
修改:job_queue_processes的值:(保证其不为0否则JOB不自动运行),可通过select * from v$parameter;查看其值,或者直接用show parameter job_queue_processes;查看如下:
NAME TYPE VALUE
--------------- ----------- ------------
job_queue_processes integer 10
方法1.startup pfile='C:oracleora90databaseinitorcl.ora';
这个方法用来修改initorcl.ora文件的job_queue_processes参数,然后重新启动数据库。
方法2.alter system set job_queue_processes=10
JOB常见的执行时间给你写出一些:
1、每分钟执行
TRUNC(sysdate,'mi')+1/(24*60)
2、每天定时执行
例如:
每天凌晨0点执行
TRUNC(sysdate+1)
每天凌晨1点执行
TRUNC(sysdate+1)+1/24
每天早上8点30分执行
TRUNC(SYSDATE+1)+(8*60+30)/(24*60)
3、每周定时执行
例如:
每周一凌晨2点执行
TRUNC(next_day(sysdate,1))+2/24
TRUNC(next_day(sysdate,'星期一'))+2/24
每周二中午12点执行
TRUNC(next_day(sysdate,2))+12/24
TRUNC(next_day(sysdate,'星期二'))+12/24
4、每月定时执行
例如:
每月1日凌晨0点执行
TRUNC(LAST_DAY(SYSDATE)+1)
每月1日凌晨1点执行
TRUNC(LAST_DAY(SYSDATE)+1)+1/24
5、每季度定时执行
每季度的第一天凌晨0点执行
TRUNC(ADD_MONTHS(SYSDATE,3),'q')
每季度的第一天凌晨2点执行
TRUNC(ADD_MONTHS(SYSDATE,3),'q')+2/24
每季度的最后一天的晚上11点执行
TRUNC(ADD_MONTHS(SYSDATE+ 2/24,3),'q')-1/24
6、每半年定时执行
例如:
每年7月1日和1月1日凌晨1点执行
ADD_MONTHS(TRUNC(sysdate,'yyyy'),6)+1/24
7、每年定时执行
例如:
每年1月1日凌晨2点执行
ADD_MONTHS(TRUNC(sysdate,'yyyy'),12)+2/24
实例
---创建定时任务declare job1 number;begin --job1 系统自动分配的定时任务编号 --testp 调用的存储过程 --sysdate 下一次执行的时间 --sysdate+1/1440 时间间隔 dbms_job.submit(job1,'TESTP;',sysdate,'sysdate+1/(1440*60)'); commit;end;
--查看定时任务编号select * from user_jobs--启动定时任务begin dbms_job.run(84); commit;end;--暂停定时任务begin dbms_job.broken(84,true); commit;end;--删除定时任务begin dbms_job.remove(84); commit;end;--修改定时任务修改:要执行的操作: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); sys.dbms_job.remove(job1);
- oracal关于job也就是定时任务
- job 定时任务
- Oracle JOB定时任务
- Oracle Job定时任务
- oracle 定时任务job
- Oracle job 定时任务
- Oralce定时任务Job
- job-oracle定时任务
- oracle job定时任务
- 关于oracle 定时JOB
- oracle的定时任务job
- oracle 定时执行任务-job
- oracle使用JOB定时任务
- 浅谈oracle定时任务job
- oracle创建job定时任务
- Oracle中的job定时任务
- oracle job定时调度任务
- Oracle-job 创建定时任务
- BZOJ 1143 [CTSC2008] 祭祀river
- Font-end(排序算法)
- Yii2 rules验证规则
- 浅谈c语言中的位段
- 白天求生存,晚上谋发展
- oracal关于job也就是定时任务
- JDBC
- 【a标签的锚点技术】
- oracal开发工作记录
- 航信概要设计-1-2
- 方法或类声明中where作用
- iOS学习笔记-089.彩票04——购彩大厅1_导航栏左边按钮与修改插件
- ES6 Class Module模块化 案例
- ITIL 2011 服务管理与认证读书笔记——第六、七章【服务运营、持续服务改进】