variable jobno number ;
begin
sys.dbms_job.submit(job => :jobno,
what => 'your_procedure1;
your_procedure2;' ,
next_date => to_date( '20080918 18:50:00' , 'yyyymmdd hh24:mi:ss' ),
interval => 'sysdate+1/24' );
commit ;
end ;
/
2、删除Job
print jobno;
begin
dbms_job.remove(:jobno);
commit ;
end ;
/
3、其他操作:
修改要执行的操作: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的值:
可通过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
//这个方法不用重启数据库就可以生效,系统自动修改init.ora文件以后即可生效 。
注意:保证参数不为0,否则JOB不自动运行
4、时间间隔偏移的问题:
SQL> create table t10 (a int ,b date);
Table created
SQL> create or replace procedure k
2 as
3 i int := 0;
4 begin
5 insert into t10 values(i,sysdate);
6 commit;
7 end;
8 /
Procedure created
SQL> begin
2 sys.dbms_job.submit(job => :jobno,
3 what => 'k;',
4 next_date => to_date(sysdate),
5 interval => 'sysdate+1/1440');
6 commit;
7 end;
8 /
PL/SQL procedure successfully completed
jobno
---------
47
SQL> column B format a30
SQL> column A format a5
SQL> select * from t10;
A B
----- ------------------------------
0 2008-9-18 17:07:38
0 2008-9-18 17:08:39
0 2008-9-18 17:09:40
0 2008-9-18 17:10:41
发现虽然设置了每分钟执行一次,但是每次执行时间是在向后偏移
所以需要进行调整,将job建为如下:
SQL> begin
2 dbms_job.remove(:jobno);
3 commit;
4 end;
5 /
PL/SQL procedure successfully completed
jobno
---------
47
SQL> begin
2 sys.dbms_job.submit(job => :jobno,
3 what => 'k;',
4 next_date => to_date(sysdate),
5 interval => 'trunc(sysdate,''mi'')+1/1440');
6 commit;
7 end;
8 /
PL/SQL procedure successfully completed
jobno
---------
48
SQL> truncate table t10;
Table truncated
SQL> select * from t10;
A B
----- ------------------------------
0 2008-9-18 17:19:02
0 2008-9-18 17:20:03
0 2008-9-18 17:21:04
0 2008-9-18 17:22:01
0 2008-9-18 17:23:02
虽然秒数还是有稍微的不同,这是由于每次job的运行时间所致
但是不会像之前一样一直往后偏移。
相关推荐
6. 批处理系统中,"control is passed to a job"意味着操作系统将处理器时间分配给任务,让它们顺序执行。 7. 单编程不如多编程能更好地利用系统资源,因为多编程允许多个任务同时执行,提高了系统效率。 8. 分时...
- **计算时间短的作业优先算法**(Shortest Job First, SJF):优先执行计算时间较短的作业。 - **响应比高者优先算法**(Highest Response Ratio Next, HRRN):综合考虑作业等待时间和执行时间,响应比高的作业...
- **夏令时和触发器**:夏令时的变化可能会导致定时器的触发时间发生偏移,需要在配置时考虑这一因素。 - **关于 JDBCJobStore 的问题**: - **如何提高 JDBC-JobStore 的性能?**:优化数据库查询语句,减少不必...
- **时钟偏移**:考虑到时钟信号在不同路径中的传播时间差异,以确保Hold Time得到满足。 - **时钟抖动**:评估时钟信号的不稳定性对Setup Time和Hold Time的影响。 #### 7. Setup Time和Hold Time违反的情况及其...
- **虚拟性**:通过硬件支持及操作系统调度,形成虚拟资源。 - **异步性**:进程按各自独立、不可预知的速度向前推进。 4. **操作系统的主要功能**: - **处理机管理**:负责处理器调度等。 - **存储管理**:...
-p,--preserve-timestamps:以<来源>文件的访问/修改时间作为相应的目的地文件的时间属性。 -s,--strip:用strip命令删除symbol table,只适用于第一及第二种使用格式。 -S,--suffix=后缀:自行指定...