oracle定时任务4000,Oracle定时任务

最近遇到一个很头疼的需求,需要每天间隔更新数据的打印状态,最开始实在是想不到什么办法,只能想着用程序实现定时更新了,后来才发现使用oracle自带的job能够实现oracle定制定时执行任务,真的挺方便的,一下子就解决了我的问题,希望能分享出来给大家,也许以后说不定用的上呢。

思路

首先我们先把需要执行的更新语句放到存储过程中,然后在固定的时间去执行这个存储过程就OK了。

注意:以下的操作是使用PL/SQL客户端实现的。

Step 1

新建一个存储过程,我们暂时命名为test_proc,存储过程的语句如下:1

2

3

4

5

6

7

8

9create or replace procedure test_proc IS

BEGIN

UPDATE ORDERS SET DRUG_INDICATOR='0' WHERE STOP_DATE_TIME IS NULL;

COMMIT;

EXCEPTION

WHEN OTHERS THEN

DBMS_OUTPUT.PUT_LINE('Exception happened,data was rollback');

ROLLBACK;

END;

在SQL Window窗体执行存储过程创建语句后,查看Object下的Prodecures菜单,可以看到新建的存储过程,检查存储过程创建是否有红色的标记,如无,则表示存储过程正常。

Step 2

检查Oracle的JOB运行环境,打开PL/SQL的命令窗口,执行以下语句查看数据库的进程数量。1SHOW PARAMETER job_queue_processes;

如果进程数为0的话,则按照以下语句修改,不为就根据需要决定是否要修改。

在PL/SQL的command窗口输入以下命令1alter system set job_queue_processes=10 scope=both;

Step 3

下面我们开始定时定制执行任务。

在PL/SQL的command窗口输入以下命令:1

2

3

4

5SQL>var job_numb number;

SQL>begin

2 dbms_job.submit(:job_num,'test_proc;',sysdate,'trunc(sysdate+1)');

3 end;

4 /

执行成功后,记得点击PL/SQL的提交按钮。

trunc(sysdate+1)是指定数据库每天0点执行我们设定的存储过程,后面再详细讲解submit的参数。

Step 4

任务已经开始执行了,我们可以用以下语句找到我们刚才创建的任务。1select * from dba_jobs;

Step 5

其他说明:

(1)如何删除一个JOB呢?

在PL/sql的command window 执行以下语句1exec dbms_job.remove(81);

这里的‘81’对应的是我们刚才查找的表dba_jobs当中要删除对应行记录的JOB值。

submit的各个参数

submit实际上是一个存储过程,有五个参数:job、what、next_date、interval与no_parse。1

2

3

4

5PROCEDURE Submit ( job OUT binary_ineger,

What IN varchar2,

next_date IN date,

interval IN varchar2,

no_parse IN booean:=FALSE)

job参数是由Submit()过程返回的binary_ineger。这个值用来唯一标识一个工作。

前面有一个双引号,在SQL windwo中没有显示,拷贝到command窗口就可以显示出来了;

what参数是将被执行的PL/SQL代码块。这里是存储过程的名称,后面有一个英文状态下的分号不能掉了;

next_date参数指识何时将运行这个工作。

interval参数何时这个工作将被重执行。

这里加号、括号都必须在英文状态下输入;

no_parse参数指示此工作在提交时或执行时是否应进行语法分析——TRUE 指示此PL/SQL代码在它第一次执行时应进行语法分析, 而FALSE指示本PL/SQL代码应立即进行语法分析。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值