Oracle job 使用
2009-12-22 17:43
232 查看
步骤:
(1) 创建作业
(2) 创建job
dbms_job.submit();
submit ( jobno OUT binary_ineger,
What IN varchar2,
next_date IN date,
interval IN varchar2,
no_parse IN booean:=FALSE)
jobno参数是由Submit()过程返回的binary_ineger。这个值用来唯一标识一个工作。
what参数是将被执行的PL/SQL代码块 也就是task。
next_date参数指识何时将运行这个工作。
interval参数何时这个工作将被重执行。
no_parse参数指示此工作在提交时或执行时是否应进行语法分析——TRUE指示此PL/SQL代码在它第一次执行时应进行语法分析,而 FALSE指示本PL/SQL代码应立即进行语法分析。
(3) 运行
dbms_job.run(jobno);
(4) 删除
dbms_job.remove(jobno)
--暂停一个job
exec dbms_job.broken(jobno,true)
commit //必须提交否则无效
启动一个job
exec dbms_job.broken(jobno,false)
/*********************************************************************************/
eg: 通过job 每过一分钟向一张表里面插入一条数据
create or replace package body test is
--创建表
procedure createTable is
num number;
begin
--查看系统表里是否已经存在,没有创建
select count(*) into num from user_tables where table_name= 'TEMP_JOB';
if (num>0) then
--删除表
execute immediate 'drop table temp_job';
commit;
end if;
--创建表
execute immediate 'create table temp_job(
address varchar2(200),
sDate date
)';
commit;
end createTable;
--创建一个task 往表里插入记录
procedure insertRecord as
begin
insert into temp_job(address,Sdate) values('MM'||sysdate,sysdate);
commit;
end insertRecord ;
--创建一个Scheduling 调度器
procedure scheJob is
jobno NUMBER;
begin
--创建表
test.createTable;
commit;
--创建job
dbms_job.submit(jobno,'scott.test.insertRecord;',sysdate,'sysdate+1/1440');--必须加上用户.包名.存储过程名 否则报必须说明标识符 'insertRecord'错误
commit;
--每天1440分钟,即一分钟运行test过程一次
--运行job
dbms_job.run(jobno);
commit;
--删除job
--dbms_job.remove(jobno);
end scheJob;
end test;
运行存储过程
Command Window 窗口
exec scott.test.scheJob ;--用户名.包名.存储过程名
结果:
select * form temp_job;
表 temp_job每隔一分钟多一条记录。
(1) 创建作业
(2) 创建job
dbms_job.submit();
submit ( jobno OUT binary_ineger,
What IN varchar2,
next_date IN date,
interval IN varchar2,
no_parse IN booean:=FALSE)
jobno参数是由Submit()过程返回的binary_ineger。这个值用来唯一标识一个工作。
what参数是将被执行的PL/SQL代码块 也就是task。
next_date参数指识何时将运行这个工作。
interval参数何时这个工作将被重执行。
no_parse参数指示此工作在提交时或执行时是否应进行语法分析——TRUE指示此PL/SQL代码在它第一次执行时应进行语法分析,而 FALSE指示本PL/SQL代码应立即进行语法分析。
(3) 运行
dbms_job.run(jobno);
(4) 删除
dbms_job.remove(jobno)
--暂停一个job
exec dbms_job.broken(jobno,true)
commit //必须提交否则无效
启动一个job
exec dbms_job.broken(jobno,false)
/*********************************************************************************/
eg: 通过job 每过一分钟向一张表里面插入一条数据
create or replace package body test is
--创建表
procedure createTable is
num number;
begin
--查看系统表里是否已经存在,没有创建
select count(*) into num from user_tables where table_name= 'TEMP_JOB';
if (num>0) then
--删除表
execute immediate 'drop table temp_job';
commit;
end if;
--创建表
execute immediate 'create table temp_job(
address varchar2(200),
sDate date
)';
commit;
end createTable;
--创建一个task 往表里插入记录
procedure insertRecord as
begin
insert into temp_job(address,Sdate) values('MM'||sysdate,sysdate);
commit;
end insertRecord ;
--创建一个Scheduling 调度器
procedure scheJob is
jobno NUMBER;
begin
--创建表
test.createTable;
commit;
--创建job
dbms_job.submit(jobno,'scott.test.insertRecord;',sysdate,'sysdate+1/1440');--必须加上用户.包名.存储过程名 否则报必须说明标识符 'insertRecord'错误
commit;
--每天1440分钟,即一分钟运行test过程一次
--运行job
dbms_job.run(jobno);
commit;
--删除job
--dbms_job.remove(jobno);
end scheJob;
end test;
运行存储过程
Command Window 窗口
exec scott.test.scheJob ;--用户名.包名.存储过程名
结果:
select * form temp_job;
表 temp_job每隔一分钟多一条记录。
相关文章推荐
- oracle job使用详解及job不运行的检查方法(2)
- Oracle job 学习后续—工作使用
- 【Oracle】使用dbms_job包创建Oracle定时任务
- 關於Oracle Job的使用小結
- oracle中的定时任务dbms_job包的使用
- oracle使用job详解
- Oracle中job的使用详解
- oracle包dbms_job的使用
- oracle 使用job定时自动重置sequence
- Oracle中job的使用详解
- oracle中使用job来周期性的定时执行sql
- Oracle中job的使用详解
- oracle—job使用详解
- 详解 Oracle job 的使用与管理技巧!
- Oracle中dbms_job包的使用
- Oracle中job的使用
- Oracle中job的使用详解
- Oracle中Job的使用
- oracle定时任务dbms_job与dbms_scheduler使用方法
- ORACLE 的JOB同时执行最多个数 使用参数job_queue_processes调整