|
范例源码:
-- 创建新表
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
|
|
|