oracle系统包中,有这样一个 dbms_job包。
这个包的主要作用可以在commond 命令窗口中,进行相应的多任务操作,提供一个多线程执行任务的类似功能。
这个包的主要使用方法:
variable job1 number;
Begin
sys.dbms_job.submit(:job1,'test_query.lv_test_query(''NBP20121231'',1000000);',sysdate,'sysdate+1/1440');
End;
/
创建一个job任务。
-------------------------------
运行一个job任务,上面创建完了以后,其实是进行了一个登记,下面的语句才是正式运行。
Begin
sys.dbms_job.run(:job1);
End;
/
commit;
每个job 对应一个job号。其实和linux的进程号差不多。
不想运行了,直接运行下面语句:
begin
dbms_job.remove(:job7);
end;
/
commit;
remove掉就行了。
差不多就这些。
其实还有些问题:
我运行的时候配置参数是:
select * from v$parameter; 找到最多运行多少个job。如果没有启用的话,应该value 为0
同时遇到的问题,就是查看那些job 正在运行:
SELECT SID, R.JOB, LOG_USER, R.THIS_DATE, R.THIS_SEC
FROM DBA_JOBS_RUNNING R, DBA_JOBS J
WHERE R.JOB = J.JOB;
也可以看看这个,不过估计不如上一个语句来的好看。
select * from all_jobs;
差不多就这些。如果有更深的体会,会继续进行补充的。