第一篇:介绍 job_queue_processes的参数不能为0才能用JOB job_queue_processes 执行job的最大进程数,为0则所有JOB与scheduler都不会跑,一般设为10。属于每个用户的job,只能由自己管理,DBA也没权管理别的用户的JOB。
第二篇:实验 实验: --创建表T drop table t; create table t (d date,s varchar2(50)); --创建过程p create or replace procedure p as begin insert into t values(sysdate,'aaa'); commit; --exception --when others then --dbms_output.put_line('异常编码: ' || SQLCODE || ' 异常信息:'|| SQLERRM); end; / --提交job var job1 number; exec DBMS_JOB.SUBMIT(:JOB1, what=>'p;',next_date=>SYSDATE, interval=>'sysdate+1/(60*24),no_parse => false'); commit;
第三篇:管理 提交job,如果有多个过程执行,以;分隔。 var job1 number; exec DBMS_JOB.SUBMIT(:JOB1, what=>'p;',next_date=>SYSDATE, interval=>'sysdate+1/(60*24),no_parse => false'); commit; no_parse的false(默认)表示提交job时就对执行的过程立刻语法分析,而true表示第一次执行时才进行语法分析。提交job是一种事务行为,需要commit才能生效,没commit的话,从别的会话查DBA_JOBS视图查不到这个job,JOB也不会跑起来。如果rollback后这个job就没了。
手工运行一下这个job exec DBMS_JOB.RUN(:job1); 首先运行一下这个job中what定义的过程,然后会按常规间隔跑起来,如果本来是broken的话,也会转为未破。不是事务行为,只要一RUN,就算没commit,其他会话也能从dba_jobs查到最新的视图。 --将一个已破job转为未破job exec DBMS_JOB.BROKEN(
第四篇:查视图 查看部署了的JOB。 select * from dba_jobs; 查看正在运行的JOB select * from dba_jobs_running; 查看OS上,运行JOB的进程。 select * from v$process where program like '%(J%'; program是诸如oracle@cnsh281004 (J000)这样的。