一个简单的ORACLE JOB实列

作者在 2008-04-16 09:36:36 发布以下内容

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 end;

4 /

 

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、删除JOB

SQL> begin

2 dbms_job.remove(:job1);

3 end;

4 /

 

PL/SQL 过程已成功完成。

6、一些必要的参数

修改initsid.ora参数

job_queue_processes = 4

job_queue_interval = 10

job_queue_keep_connections=true

 

修改可执行作业个数为20

ALTER SYSTEM SET JOB_QUEUE_PROCESSES = 20

 

修改取消限制模式

ALTER SYSTEM DISABLE RESTRICTED SESSION;

 

7、两个必要的表

user_jobsdba_jobs_running

 

8、相关的几个JOB操作

删除job:dbms_job.remove(jobno);

修改要执行的操作:job:dbms_job.what(jobno,what);

修改下次执行时间:dbms_job.next_date(job,next_date);

修改间隔时间:dbms_job.interval(job,interval);

停止job:dbms.broken(job,broken,nextdate);

启动job:dbms_job.run(jobno);

 

数据库 | 阅读 1457 次
文章评论,共0条
游客请输入验证码
浏览44570次