Home  >  Article  >  Database  >  最简单的一个Oracle定时任务

最简单的一个Oracle定时任务

WBOY
WBOYOriginal
2016-06-07 17:12:171125browse

最简单的一个Oracle定时任务一、在PLSQL中创建表:create table HWQY.TEST(CARNO VARCHAR2(30),CARINFOID NUMBER) 二、在PLS

最简单的一个Oracle定时任务
一、在PLSQL中创建表:
create table HWQY.TEST
(
CARNO     VARCHAR2(30),
CARINFOID NUMBER
)

二、在PLSQL中创建存储过程:
create or replace PRocedure pro_test
AS
carinfo_id number;
BEGIN
select s_CarInfoID.nextval into carinfo_id
from dual;
insert into test(test.carno,test.carinfoid) values(carinfo_id,'123');
commit;
end pro_test;

三、在SQL命令窗口中启动任务:
在SQL>后执行:
VARIABLE jobno number;
begin
DBMS_JOB.SUBMIT(:jobno,
    'pro_test;',
    SYSDATE,'sysdate+1/24/12');
   
    commit;
    end;
    /

提交后提示:
PL/SQL procedure successfully completed
jobno
---------
1

四、跟踪任务的情况(查看任务队列):

SQL> select job,next_date,next_sec,failures,broken from user_jobs;

       JOB NEXT_DATE   NEXT_SEC           FAILURES BROKEN
---------- ----------- ---------------- ---------- ------
         1 2008-2-22 ?01:00:00                  0 N

说明有一个任务存在了。
执行select * from test t查看定时任务的结果。可以看出定时任务是正常执行了的。

五、停止已经启动的定时任务:
先执行select job,next_date,next_sec,failures,broken from user_jobs;
以查看定时任务的job号。
在SQL>中执行下面的语句停止一个已经启动的定时任务:
begin
dbms_job.remove(1);
commit;
end;
/
表示停止job为1的任务。
执行后显示如下:
PL/SQL procedure successfully completed

六、查看进程数:
show parameter job_queue_processes;
必须>0,否则执行下面的命令修改:
alter system set job_queue_processes=5;

七、再创建一个任务(每5分钟执行一次):
variable jobno number;

begin
dbms_job.submit(:jobno, 'pro_test;',
sysdate,'sysdate+1/24/12');
commit;
end;
/

建立一个定时任务后,,在PLSQL中查看JOB,它的sql语句类似的是如下:

begin
sys.dbms_job.submit(job => :jobno,
                      what => 'pro_test;',
                      next_date => to_date('21-02-2008 17:37:26', 'dd-mm-yyyy hh24:mi:ss'),
                      interval => 'sysdate+1/24/12');
commit;
end;
/

所以,创建一个任务的完整的格式是:
variable jobno number;
begin
sys.dbms_job.submit(job => :jobno,
                      what => 'pro_test;',
                      next_date => to_date('21-02-2008 17:37:26', 'dd-mm-yyyy hh24:mi:ss'),
                      interval => 'sysdate+1/24/12');
commit;
end;
/
--系统会自动分配一个任务号jobno。

八、 执行select job,next_date,next_sec,failures,broken from user_jobs;
结果:
   JOB NEXT_DATE NEXT_SEC FAILURES BROKEN
1 1 2008-2-22 AM 01:00:00 01:00:00 0 N
2 2 2008-2-21 PM 05:42:45 17:42:45 0 N
3 3 2008-2-21 PM 05:42:45 17:42:45 0 N

linux

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn