在Oracle中使用job的范例

范例源码:

-- 创建新表 
create table T_TEST_JOB
(
  ID        LONG,
  TEST_DATE TIMESTAMP(6)
)
tablespace GBIAPS
  pctfree 10
  initrans 1
  maxtrans 255
  storage
  (
    initial 64
    minextents 1
    maxextents unlimited
);

-- 创建序列 
create sequence SEQ_TEST_JOB
minvalue 1
maxvalue 9999999999999999999999999999
start with 1
increment by 1
cache 10;  

-- 创建存储过程 
create or replace procedure P_TEST_JOB as 
begin 
   insert into t_test_job(id,test_date) values (SEQ_TEST_JOB.NEXTVAL,sysdate);
end; 
/ 

-- 以下脚本在SQL Plus中执行
-- 创建job 
variable JOB_TESTJOB number; 
begin 
    dbms_job.submit(:JOB_TESTJOB,'P_TEST_JOB;',sysdate,'sysdate + 1 / (24*60)'); -- 每个一分钟执行一次 
end; 
/ 

-- 运行job
begin 
    dbms_job.run(:JOB_TESTJOB); 
end; 
/

-- 停止job
begin 
    dbms_job.remove(:JOB_TESTJOB); 
end; 
/

-- 删除JOB
begin 
    dbms_job.remove(:JOB_TESTJOB); 
end; 
/ 

-- 查看jobs
select * from DBA_JOBS_RUNNING;
select * from DBA_JOBS;

-- 查看数据
select * from t_test_job;

-- 删除数据
delete from t_test_job;

 

job_queue_processes参数说明:

     在sqlplus中执行show parameter job; 查看参数值

     修改参数值:  alter system set job_queue_processes=10;

 

a、对于Oracle job进程,包含协调进程(主进程)以及奴隶进程(子进程)。
b、job_queue_processes取值范围为0到1000,总共可创建多少个job进程由job_queue_processes参数来决定。
c、当job_queue_processes大于1时,且并行执行job时,至少一个为协调进程。其总数不会超出job_queue_processes的值。
d、job_queue_processes参数的值为且DBMS_JOB与DBMS_SCHEDULER共享。
e、job_queue_processes参数,当设定该值为0的时候则任意方式创建的job都不会运行。
f、非零值的job_queue_processes,其job子进程数依赖于可用资源,资源配置方式以及当前运行的job数来自行调整。
g、此外对于Scheduler jobs方式还受限制于scheduler属性MAX_JOB_SLAVE_PROCESSES的设置。
h、可以通过DBMS_SCHEDULER.SET_SCHEDULER_ATTRIBUTE来设置max_job_slave_processes

   

你可能感兴趣的:(oracle)