--20080821_非常男女系统每月第一天给用户赠送玫瑰花的job_062976--
DECLARE
n_job_number number;
begin
DBMS_JOB.SUBMIT(n_job_number
,'PRO_FCNN_USER_JOB;'
,TRUNC(ADD_MONTHS(sysdate, 1), 'MM') + 4/24 --每月1号的凌晨4点执行--
,'ADD_MONTHS(sysdate, 1)'); --下次执行的时间是下个月的1号--
commit;
end;
例如:
间隔trunc(sysdate)+1+14/24 就是每天下午2点执行一次proc_yw存储过程;
如间隔trunc(sysdate)+1+33/48就是每天下午4:30时执行一次
一个简单例子:
1、创建测试表
SQL> create table a(a date);
表已创建。
2、创建一个自定义过程
SQL> create or replace procedure test as
2 begin
3 insert into a values(sysdate);
4 end;
5 /
过程已创建。
3、创建JOB
SQL> variable job1 number;
SQL>
SQL> begin
2 dbms_job.submit(:job1,'test;',sysdate,'sysdate+1/1440'); --每天1440分钟,即一分钟运行test过程一次
3 COMMIT;
4 end;
5 /
PL/SQL 过程已成功完成。
4、运行JOB
SQL> begin
2 dbms_job.run(:job1);
3 end;
4 /
PL/SQL 过程已成功完成。
SQL> select to_char(a,'yyyy/mm/dd hh24:mi:ss') 时间 from a;
时间
-------------------
2001/01/07 23:51:21
2001/01/07 23:52:22
2001/01/07 23:53:24
5、修改下次执行时间(10分钟后执行)
SQL>begin
2 dbms_job.next_date (:job1,SYSDATE + 10/(24*60));
3 end;
4 /
6、删除JOB
SQL> begin
2 dbms_job.remove(:job1);
3 end;
4 /
PL/SQL 过程已成功完成。
*************************************************
DBMS_Job包含以下子过程:
Broken()过程。
change()过程。
Interval()过程。
Isubmit()过程。
Next_Date()过程。
Remove()过程。
Run()过程。
Submit()过程。
User_Export()过程。
What()过程。
1、Broken()过程更新一个已提交的工作的状态,典型地是用来把一个已破工作标记为未破工作。这个过程有三个参数:job 、broken与next_date。
PROCEDURE Broken (
job IN binary_integer,
Broken IN boolean,
next_date IN date :=SYSDATE
)
job参数是工作号,它在问题中唯一标识工作。
broken参数指示此工作是否将标记为破——TRUE说明此工作将标记为破,而FLASE说明此工作将标记为未破。
next_date参数指示在什么时候此工作将再次运行。此参数缺省值为当前日期和时间。
2、Change()过程用来改变指定工作的设置。
这个过程有四个参数:job、what 、next_date与interval。
PROCEDURE Change (
job IN binary_integer,
What IN varchar2,
next_date IN date,
interval IN varchar2)
此job参数是一个整数值,它唯一标识此工作。
What参数是由此工作运行的一块PL/SQL代码块。
next_date参数指示何时此工作将被执行。
interval参数指示一个工作重执行的频度。
3、Interval()过程用来显式地设置重执行一个工作之间的时间间隔数。
这个过程有两个参数:job与interval。
PROCEDURE Interval (
job IN binary_integer,
Interval IN varchar2)
job参数标识一个特定的工作。
interval参数指示一个工作重执行的频度。
4、ISubmit()过程用来用特定的工作号提交一个工作。
这个过程有五个参数:job、what、next_date、interval与no_parse。
PROCEDURE ISubmit (
job IN binary_ineger,
What IN varchar2,
next_date IN date,
interval IN varchar2,
no_parse IN booean:=FALSE)
这个过程与Submit()过程的唯一区别在于此job参数作为IN型参数传递且包括一个由开发者提供的工作号。如果提供的工作号已被使用,将产生一个错误。
5、Next_Date()过程用来显式地设定一个工作的执行时间。这个过程接收两个参数:job与next_date。
PROCEDURE Next_Date(
job IN binary_ineger,
next_date IN date)
job标识一个已存在的工作。
next_date参数指示了此工作应被执行的日期与时间。
6、Remove()过程来删除一个已计划运行的工作。这个过程接收一个参数:
PROCEDURE Remove(job IN binary_ineger);
job参数唯一地标识一个工作。这个参数的值是由为此工作调用Submit()过程返回的job参数的值。已正在运行的工作不能由调用过程序删除。
7、Run()过程用来立即执行一个指定的工作。这个过程只接收一个参数:
PROCEDURE Run(job IN binary_ineger)
job参数标识将被立即执行的工作。
8、使用Submit()过程,工作被正常地计划好。
这个过程有五个参数:job、what、next_date、interval与no_parse。
PROCEDURE Submit (
job OUT binary_ineger,
What IN varchar2,
next_date IN date,
interval IN varchar2,
no_parse IN booean:=FALSE)
job参数是由Submit()过程返回的binary_ineger。用来唯一标识一个工作。
what参数是将被执行的PL/SQL代码块。
next_date参数指识何时将运行这个工作。
interval参数何时这个工作将被重执行。
dbms_job.submit(:job1,'test;',sysdate,'sysdate+1/1440');
sysdate+1/1440:每天1440分钟,即一分钟运行test过程一次
TRUNC(SYSDATE+1)+10/24:每天上午10点执行一次
no_parse参数指示此工作在提交时或执行时是否应进行语法分析——TRUE
指示此PL/SQL代码在它第一次执行时应进行语法分析,
而FALSE指示本PL/SQL代码应立即进行语法分析。
9、User_Export()过程返回一个命令,此命令用来安排一个存在的工作以便此工作能重新提交。此程序有两个参数:job与my_call。
PROCEDURE User_Export(
job IN binary_ineger,
my_call IN OUT varchar2)
job参数标识一个安排了的工作。
my_call参数包含在它的当前状态重新提交此工作所需要的正文。
10、What()过程应许在工作执行时重新设置此正在运行的命令。这个过程接收两个参数:job与what。
PROCEDURE What (
job IN binary_ineger,
What IN OUT varchar2)
job参数标识一个存在的工作。
what参数指示将被执行的新的PL/SQL代码。
分享到:
相关推荐
### DBMS_JOB包创建Oracle定时任务详解 在Oracle数据库中,`DBMS_JOB`包提供了一种机制,用于创建和管理后台作业(Job),这些作业可以在特定的时间或按一定的时间间隔执行。这对于需要定期执行的任务非常有用,...
### DBMS_JOB 使用方法详解 #### 一、概述 `DBMS_JOB` 是 Oracle 数据库提供的用于调度任务的包,可以实现对定时任务的管理,包括任务的创建、修改、删除及执行等操作。该包提供了多种过程和函数,允许用户以灵活...
下面将详细介绍DBMS_JOB的使用方法和相关知识点。 1. 创建JOB: 使用DBMS_JOB.SUBMIT函数来创建一个新的作业。这个函数接受四个参数:作业号(jobno)、执行的PL/SQL代码、下次执行时间(next_date)和执行间隔...
通过`DBMS_JOB`包,用户可以轻松地安排执行特定的PL/SQL块或存储过程,并且可以设置这些任务按照预定的时间表运行。 #### 1. 基本概念 `DBMS_JOB`提供了创建、修改、删除和查询作业的能力。一个作业(Job)是指一...
使用 Oracle 的 DBMS_JOB 来实现任务计划管理 Oracle 数据库提供了一个功能强大的任务计划管理系统,称为 DBMS_JOB,可以帮助用户实现任务计划管理。在本文中,我们将详细介绍如何使用 Oracle 的 DBMS_JOB 来实现...
主要思路是使用 DBMS_JOB 包将主处理存储过程作为任务提交到任务队列中,并通过 DBMS_PIPE 包将处理情况放在管道中,最后监控存储过程读取管道了解处理情况。 知识点 1: 使用 DBMS_JOB 包实现异步调用 DBMS_JOB 包...
本文将详细讲解这些系统包的用途和使用方法。 首先,我们来看dbms_output包,它用于在PL/SQL程序中进行输入和输出。通过enable和disable过程,我们可以开启或关闭输出功能。put_line过程用于打印一行文本,而put...
当数据库被关闭时,被数据库使用的每一个文件都被备份下来。这些文件因而保持着数据关闭时的完整的映象。热备份是在数据库运行的情况下,采用archivelog mode方式备份数据的方法。这涉及到将每个表空间设置为备份...
本资料包“JOB排程操作&實例.zip”深入讲解了DBMS_JOB包的使用方法,并提供了实例,对于理解与掌握Oracle作业调度具有极大的帮助。 首先,DBMS_JOB包主要包含以下几个关键函数和过程: 1. **DBMS_JOB.BROKEN(job#,...
以下是对Oracle JOB用法的详细总结: 首先,为了启用JOB队列,需要设置初始化参数`job_queue_processes`。通过SQL语句`alter system set job_queue_processes=n;`设置该参数,其中`n`代表期望的并发作业数量,最大...
- **修改Job**:可以使用`DBMS_JOB.CHANGE`过程修改Job的执行逻辑、下次执行时间和执行间隔。 - **删除Job**:调用`DBMS_JOB.REMOVE`过程可以删除一个Job。 - **暂停与恢复Job**:通过设置Job的状态为Broken可以暂停...
使用DBMS_JOB包创建作业,主要涉及三个步骤:声明变量、调用BEGIN...END块执行作业、提交作业。例如: ``` DECLARE job_number NUMBER; BEGIN DBMS_JOB.BEGIN(job => job_number, what => 'your_plsql_block',...
DBMS_JOB包的使用方法包括创建作业、调度作业和监控作业状态。首先,使用DBMS_JOB.BEGIN_JOB创建一个作业,指定要执行的PL/SQL代码或存储过程。接着,通过DBMS_JOB.SCHEDULE_JOB设置作业的执行时间,可以是立即执行...
这份系统包使用手册详尽地介绍了达梦数据库中的系统包,包括它们的功能、使用方法和示例,为数据库开发者和管理员提供了强有力的参考资料。通过学习这份手册,用户可以更好地掌握达梦数据库的高级功能,提高开发和...
DBMS_JOB包提供了用于管理后台任务(作业)的方法,包括但不限于: - **DBMS_JOB.BREAK**: 终止一个作业。 - **DBMS_JOB.QUEUED**: 设置一个作业为等待状态。 - **DBMS_JOB.RELEASE**: 释放一个处于等待状态的作业。...
Oracle实用工具RMAN的应用为DBA管理多个Oracle数据库提供了集中备份管理与恢复控制的机制,大大地减轻了DBA的工作压力,而DBMS_JOB包的使用增强了存储过程的应用功能,这样,他们就可以从备份数据及重复处理数据的...
使用 DBMS_JOB 包创建一个 Job 的基本语法如下: ``` BEGIN DBMS_JOB.BEGIN_JOB ( job_number => job#, -- 自定义作业号 what => 'your_plsql_block', -- 执行的 PL/SQL 块 next_date => 'start_date', -- ...