JOB用法(定时更新)_第1页
JOB用法(定时更新)_第2页
免费预览已结束,剩余18页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、初始化相关参数 job_queue_processesalter system set job_queue_processes=39 scope=spfile;最大值不能超过 1000 ;job_queue_interval = 10/调度作业刷新频率秒为单位job_queue_process 表示 oracle 能够并发的 job 的数量,可以通过语句show parameter job_queue_process;来查看 oracle 中 job_queue_process 的值。当 job_queue_process 值为 0 时表示全部停止 oracle 的 job,可以通过语句ALT

2、ER SYSTEM SET job_queue_processes = 10;来调整启动 oracle 的 job。相关视图:dba_jobsall_jobsuser_jobsdba_jobs_running包含正在运行 job 相关信息提交 job 语法:beginsys.dbms_job.submit(job = :job,what = 卩 _CLEAR_PACKBAL;,next_date = to_date(04-08-2008 05:44:09, dd-mm-yyyy hh24:mi:ss),interval = sysdate+ 1/360);commit;end;/创建 JOBF

3、AILURESNUMBER 任务运行连续没有成功的次数variable jobno number;begindbms_job.submit(:jobno, P_CRED_PLAN;,SYSDATE,SYSDATE+1/2880,TRUE); commit;运行 JOBSQL begindbms_job.run(:job1);end;/删除 JOBSQL begindbms_job.remove(:job1);end;/DBA_JOBS字段(列)类型描述JOBNUMBER任务的唯一标示号LOG_USERVARCHAR2(30) 提交任务的用户PRIV_USERVARCHAR2(30) 赋予任务权

4、限的用户SCHEMA_USERVARCHAR2(30) 对任务作语法分析的用户模式LAST_DATEDATE最后一次成功运行任务的时间LAST_SECVARCHAR2(8) 如 HH24:MM:SS 格式的 last_date 日期的小时,分钟和秒THIS_DATEDATE正在运行任务的开始时间,如果没有运行任务则为nullTHIS_SECVARCHAR2(8) 如 HH24:MM:SS 格式的 this_date 日期的小时,分钟和秒NEXT_DATEDATE下一次定时运行任务的时间NEXT_SECVARCHAR2(8)如 HH24:MM:SS 格式的 next_date 日期的小时,分钟和

5、秒TOTAL_TIMENUMBER该任务运行所需要的总时间,单位为秒BROKENVARCHAR2(1)标志参数, Y 标示任务中断,以后不会运行INTERVALVARCHAR2(200)用于计算下一运行时间的表达式WHATVARCHAR2(2000) 执行任务的 PL/SQL 块描述 INTERVAL 参数值每天午夜 12 点TRUNC(SYSDATE + 1)每天早上 8 点 30 分TRUNC(SYSDATE + 1) +(8*60+30 ) /(24*60)每星期二中午 12 点NEXT_DAY(TRUNC(SYSDATE ), TUESDAY ) + 12/24每个月第一天的午夜 12

6、 点 TRUNC(LAST_DAY(SYSDATE ) + 1) 每个季度最后一天的晚上 11 点TRUNC(ADD_MONTHS(SYSDATE + 2/24, 3 ), Q ) -1/24 每星期六和日早上 6 点 10 分TRUNC(LEAST(NEXT_DAY(SYSDATE, SATURDAY),NEXT_DAY(SYSDATE, SUNDAY) +(6X60+10 ) / (24 X60)1: 每分钟执行Interval = TRUNC(sysdate,mi) + 1/ (24*60)2:每天定时执行例如:每天的凌晨 1 点执行Interval = TRUNC(sysdate) +

7、 1 +1/ (24)3:每周定时执行例如:每周一凌晨 1 点执行Interval = TRUNC(next_day(sysdate, 星期一 )+1/24 4:每月定时执行CURRENT_SESSION_LABEL RAWMLSLABEL 该任务的信任 Oracle 会话符CLEARANCE_HIRAW MLSLABEL该任务可信任的 Oracle最大间隙CLEARANCE_LORAWMLSLABEL 该任务可信任的Oracle 最小间隙NLS_ENVVARCHAR2(2000) 任务运行的 NLS 会话设置MISC_ENVRAW(32)任务运行的其他一些会话参数例如:每月 1 日凌晨 1

8、点执行Interval =TRUNC(LAST_DAY(SYSDATE)+1+1/24 5:每季度定时执行例如每季度的第一天凌晨1 点执行Interval = TRUNC(ADD_M0NTHS(SYSDATE,3),Q) + 1/246:每半年定时执行例如:每年 7 月 1 日和 1 月 1 日凌晨 1 点Interval = ADD_MONTHS(trunc(sysdate,yyyy),6)+1/24 7:每年定时执行例如:每年 1 月 1 日凌晨 1 点执行Interval =ADD_MONTHS(trunc(sysdate,yyyy),12)+1/24以下的文章主要是介绍Oracle j

9、ob 的用法的实际操作步骤,本文主要告诉你在在进行Oracle job 中,如何设置初始化的参数job_queue_processes,以及相关重要步骤的详细解析,以下就是文章的详细介绍。一、设置初始化参数job_queue_processes1.sql alter system setjob_queue_processes = n; ( n0)2.job_queue_processes最大值为 1000查看 job queue 后台进程1.sql select name,description from v$bgprocess;二,dbms_job package 用法介绍包含以下子过程:B

10、roken()过程。change()过程。Interval()过程。Isubmit()过程。Next_Date()过程。以上的相关内容就是对 Oracle job 的用法的部分介绍,望你能有所收获。Remove。过程。Run()过程。Submit。过程。User_Export()过程。What()过程。1、在 Oracle job 的用法中 Broken()过程更新一个已提交的工作的状态,典型地是用来把一个已破工作标记为未破工作。这个过程有三个参数:job、broken 与 next_date。1.PROCEDURE Broken (jobIN binary_integer,2.BrokenI

11、N boolean,3.next_date IN date: =SYSDATE)job 参数是工作号,它在问题中唯一标识工作。broken 参数指示此工作是否将标记为破一一 TRUE 说明此工作将标记为破,而FLASE说明此工作将标记为未破。n ext_date 参数指示在什么时候此工作将再次运行。此参数缺省值为当前日期和时间。job 如果由于某种原因未能成功之行,Oracle 将重试 16 次后,还未能成功执行,将被标记为 broken 重新启动状态为 broken 的 job,有如下两种方式;a、利用 dbms_job.run()立即执行该 job1.sql begin2.sql dbms

12、_job.run(:jobno)该 job no 为 submit 过程提交时返回的 job number1.sql end;2.sql /b、利用 dbms_job.broken()重新将 broken 标记为 false1.sqlbegin2.sqldbms_job.broken (:job,false,next_date)3.sqlend;4.sql/bJOB 用法小结 网上收集并结合实践 一、设置初始化参数 job_queue_processessql alter system set job_queue_processes=n;( n0)job_queue_processes 最大值

13、为 1000查看该值 show parameter processes查看 job queue 后台进程sqlselect name,description from v$bgprocess;二, dbms_job package 用法介绍包含以下子过程:Broken() 过程。cha nge()过程。Interval() 过程。Isubmit() 过程。Next_Date() 过程。Remove()过程。Run()过程。Submit() 过程。User_Export() 过程。What()过程。1、Broken() 过程更新一个已提交的工作的状态,典型地是用来把一个已破工作标记为未破工作。这

14、个过程有三个参数: job 、 broken 与 next_date。PROCEDURE Broken (jobIN binary_integer,Broken IN boolean,next_date IN date :=SYSDATE)job 参数是工作号,它在问题中唯一标识工作。broken 参数指示此工作是否将标记为破 TRUE 说明此工作将标记为破,而 FLASE 说明 此工作将标记为未破。next_date 参数指示在什么时候此工作将再次运行。此参数缺省值为当前日期和时间。job 如果由于某种原因未能成功之行, oracle 将重试 16 次后,还未能成功执行,将被标记为broke

15、n重新启动状态为 broken 的 job,有如下两种方式;a、利用 dbms_job.run()立即执行该 jobsqlbeginsqldbms_job.run(:jobno) 该 jobno 为 submit 过程提交时返回的 job number sqlend;sql/b、利用 dbms_job.broken()重新将 broken 标记为 falsesqlbeginsqldbms_job.broken (:job,false,next_date) sqlend;sql/2、Chan ge()过程用来改变指定工作的设置。 这个过程有四个参数: job、 what 、 next_date

16、与 interval 。PROCEDURE Change (jobWhatnext_date IN date, interval IN varchar2)此 job 参数是一个整数值,它唯一标识此工作。What 参数是由此工作运行的一块 PL/SQL 代码块。 next_date 参数指示何时此工作将被执行。interval 参数指示一个工作重执行的频度。3、Interval() 过程用来显式地设置重执行一个工作之间的时间间隔数。 这个过程有两个参数: job 与interval 。PROCEDURE Interval (jobIN binary_integer,Interval IN var

17、char2)job 参数标识一个特定的工作。 interval 参数指示一个工作重执行的频度。4、ISubmit() 过程用来用特定的工作号提交一个工作。这个过程有五个参数: job、 what、 next_date、 interval 与 no_parse。PROCEDURE ISubmit (jobIN binary_ineger,WhatIN varchar2,next_date IN date, intervalIN varchar2,no_parse IN booean:=FALSE)这个过程与 Submit()过程的唯一区别在于此job 参数作为 IN 型参数传递且包括一个由开发者

18、提供的工作号。如果提供的工作号已被使用,将产生一个错误。5、Next_Date() 过程用来显式地设定一个工作的执行时间。这个过程接收两个参数:job 与IN binary_integer,IN varchar2,next_date。PROCEDURE Next_Date(jobIN binary_ineger,next_date IN date)job 标识一个已存在的工作。 next_date 参数指示了此工作应被执行的日期与时间。6、Remove()过程来删除一个已计划运行的工作。这个过程接收一个参数:PROCEDURE Remove(job IN binary_ineger);job

19、参数唯一地标识一个工作。这个参数的值是由为此工作调用Submit。过程返回的 job 参数的值。已正在运行的工作不能由调用过程序删除。7、Run()过程用来立即执行一个指定的工作。这个过程只接收一个参数:PROCEDURE Run(job IN binary_ineger)job 参数标识将被立即执行的工作。8、使用 Submit()过程,工作被正常地计划好。 这个过程有五个参数:job、what、next_date、interval与 no_parse。PROCEDURE Submit ( jobOUT binary_ineger,WhatIN varchar2,next_date IN d

20、ate, interval IN varchar2, no_parse IN booean:=FALSE) job 参数是由 Submit。过程返回的 binary_ineger。这个值用来唯一标识一个工作。what 参数是将被执行的 PL/SQL 代码块。next_date 参数指识何时将运行这个工作。interval 参数何时这个工作将被重执行。no_parse 参数指示此工作在提交时或执行时是否应进行语法分析- TRUE指示此 PL/SQL 代码在它第一次执行时应进行语法分析,而 FALSE 指示本 PL/SQL 代码应立即进行语法分析。9、User_Export() 过程返回一个命令,

21、此命令用来安排一个存在的工作以便此工作能重新提交。 此程序有两个参数: job 与 my_call 。PROCEDURE User_Export(jobmy_callIN binary_ineger,IN OUT varchar2)job 参数标识一个安排了的工作。 my_call 参数包含在它的当前状态重新提交此工作所需要 的正文。10、What()过程应许在工作执行时重新设置此正在运行的命令。这个过程接收两个参数:job 与what。PROCEDURE What (job IN binary_ineger, What IN OUT varchar2)job 参数标识一个存在的工作。what

22、 参数指示将被执行的新的PL/SQL 代码。三、查看相关 job 信息1、相关视图dba_jobsall_jobsuser_jobsdba_jobs_running 包含正在运行 job 相关信息2、查看相关信息SQLSELECT JOB, NEXT_DATE, NEXT_SEC, FAILURES, BROKENSQLFROM DBA_JOBS;JOB NEXT_DATE NEXT_SEC FAILURES B 9125 01-JUN-01 00:00:00 4 N14144 24-OCT-01 16:35:35 0 N9127 01-JUN-01 00:00:00 16 Y3 rows s

23、elected.正在运行的 JOB 相关信息SELECT SID, r.JOB, LOG_USER, r.THIS_DA TE, r.THIS_SECFROM DBA_JOBS_RUNNING r, DBA_JOBS jWHERE r.JOB = j.JOB;SID JOB LOG_USER THIS_DATE THIS_SEC 12 14144 HR 24-OCT-94 17:21:2425 8536 QS 24-OCT-94 16:45:12 2 rows selected.JOB QUEUE LOCK 相关信息SELECT SID, TYPE, ID1, ID2 FROM V$LOCKW

24、HERE TYPE = JQ;SID TY ID1 ID2 12 JQ 0 141441 row selected.四、简单例子一个简单例子:创建测试表SQL create table TEST(a date);表已创建。创建一个自定义过程SQL create or replace procedure MYPROC as2begin3insert into TEST values(sysdate);4end;5/过程已创建。创建 JOBSQL variable job1 number;SQLSQL begin2dbms_job.submit(:job1,MYPROC;,sysdate,sysd

25、ate+1/1440);- 每天 1440 分钟,即一分钟运行 test 过程一次3end;4/PL/SQL 过程已成功完成。运行 JOBSQL begin2dbms_job.run(:job1);3end;4/PL/SQL 过程已成功完成。SQL select to_char(a,yyyy/mm/dd hh24:mi:ss) 时间 from TEST;时间2001/01/07 23:51:212001/01/07 23:52:222001/01/07 23:53:24删除 JOBSQL begin2 dbms_job.remove(:job1);3 end;4/PL/SQL 过程已成功完成。

26、上面的例子没有涉及到存储过程带参数的问题,如果带参数假设为MYPROC ( ina IN VARCHAR2,- 以下为必须输出参数组 - outa OUT NUMBER, outb OUT VARCHAR2 ) 则 在建立 job 的代码中创建 JOBbeginsys.dbms_job.submit(job = :job,hh24:mi:ss),what = declareouta number; - 定义输出变量 outb varchar2(40); beginMYPROC( 输入 ,outa =outa ,outb =outb ); end;,next_date = to_date(10-

27、10-2006 08:48:34, dd-mm-yyyyinterval = sysdate+1);commit;end;/五、相关注意事项1、执行 dbms_job 包相关过程如 remove、 Change、broken 时,登陆的用户要同建立该 JOB 的用户一致2、当执行 dbms_job.change 过程时,如果参数 what,next_date,interval 值为 null ,则表示原参 数值不变如BEGINDBMS_JOB.CHANGE(14144, NULL, NULL, SYSDA TE + 3);END;/3、如果利用 database link 来提交 job ,则

28、该 link 必须包含合适的用户名和密码。4、执行 job 的用户必须具有作业过程中所涉及对象的相应权限。5、数据库在 restricted mode 下,不能执行 jobJava 代码晅1. job_queue_processes = 4 -可执行作业个数2. job_queue_interval =10 -默认间隔延迟时间 10s3. job_queue_keep_connections=true-job 保持正常连接修改可执行作业个数为 20 个:Java 代码瞋1. ALTER SYSTEM SET JOB_QUEUE_PROCESSES2; 0 修改取消限制模式:Java 代码应1.

29、 ALTER SYSTEM DISABLE RESTRICTEDSESSION;4.相关的几个 Job 操作删除 job:dbms_job.remove(jobno);修改要执行的操作:dbms_job.what(jobno,what);修改下次执行时间:dbms_job. next_date(job, next_date); 修改间隔时间:dbms_erval(job,i nterval);停止 job:dbms.broken(job,broken,nextdate);启动 job:dbms_job.run(jobno);一、设置初始化参数 job_queue_processe

30、ssql alter system set job_queue_processes=n;( n0)job_queue_processes 最大值为 1000查看 job queue 后台进程sqlselect name,description from v$bgprocess;二, dbms_job package 用法介绍包含以下子过程:Broken() 过程。change() 过程。Interval() 过程。Isubmit() 过程。Next_Date() 过程。RemoveQ 过程。Run()过程。Submit() 过程。User_Export() 过程。What() 过程。1、Bro

31、ken() 过程更新一个已提交的工作的状态,典型地是用来把一个已破 工作标记为未破工作。这个过程有三个参数: job 、broken 与 next_date 。PROCEDURE Broken (jobIN binary_integer,BrokenIN boolean,next_date IN date :=SYSDATE)job 参数是工作号,它在问题中唯一标识工作。broken 参数指示此工作是否将标记为破TRUE 说明此工作将标记为破, 而FLASE 说明此工作将标记为未破。next_date 参数指示在什么时候此工作将再次运行。 此参数缺省值为当前日 期和时间。job 如果由于某种原

32、因未能成功之行, oracle 将重试 16 次后,还未能成功 执行,将被标记为 broken 重新启动状态为 broken 的 job ,有如下两种方式 ;a、利用 dbms_job.run()立即执行该 jobsqlbeginsqldbms_job.run(:jobno) 该 jobno 为 submit 过程提交时返回的 job numbersqlend;sql/b、利用 dbms_job.broken()重新将 broken 标记为 falsesqlbeginsqldbms_job.broken (:job,false,next_date)sqlend;sql/2、Change()过程

33、用来改变指定工作的设置。 这个过程有四个参数:job 、 what 、 next_date 与 interval 。PROCEDURE Change (job Whatnext_date IN date, interval IN varchar2)此 job 参数是一个整数值,它唯一标识此工作。What 参数是由此工作运行的一块 PL/SQL 代码块。 next_date 参数指示何时此工作将被执行。 interval 参数指示一个工作重执行的频度。3、Interval() 过程用来显式地设置重执行一个工作之间的时间间隔数。这 个过程有两个参数: job 与 interval 。PROCEDU

34、RE Interval (jobIN binary_integer,Interval IN varchar2)job 参数标识一个特定的工作。 interval 参数指示一个工作重执行的频度4、 ISubmit() 过程用来用特定的工作号提交一个工作。这个过程有五个参数: job 、what、 next_date 、 interval 与 no_parse。PROCEDURE ISubmit (jobWhatnext_dateIN date, interval IN varchar2,no_parse IN booean:=FALSE)这个过程与 Submit() 过程的唯一区别在于此 job

35、 参数作为 IN 型参数传递且 包括一个由开发者提供的工作号。 如果提供的工作号已被使用, 将产生一个错误。5、 Next_Date() 过程用来显式地设定一个工作的执行时间。 这个过程接收两 个参数:job 与 next_date 。PROCEDURE Next_Date(jobnext_dateIN binary_ineger,IN date)job 标识一个已存在的工作。 next_date 参数指示了此工作应被执行的日期IN binary_integer,IN varchar2,IN binary_ineger,IN varchar2,与时间6 RemoveQ 过程来删除一个已计划运行

36、的工作。这个过程接收一个参数:PROCEDURE Remove(job INbinary_ineger);job 参数唯一地标识一个工作。这个参数的值是由为此工作调用 Submit() 过程返回的 job 参数的值。已正在运行的工作不能由调用过程序删除。7、Run()过程用来立即执行一个指定的工作。这个过程只接收一个参数:PROCEDURE Run(job IN binary_ineger)job 参数标识将被立即执行的工作。8、使用 Submit() 过程,工作被正常地计划好。这个过程有五个参数: job 、 what、 next_date 、 interval 与 no_parse 。PR

37、OCEDURE Submit ( jobWhatINvarchar2,next_date INdate,intervalINvarchar2,no_parseINbooean:=FALSE)job 参数是由 Submit() 过程返回的 binary_ineger 。这个值用来唯一标识一 个工作。what 参数是将被执行的 PL/SQL 代码块。next_date 参数指识何时将运行这个工作。interval 参数何时这个工作将被重执行。no_parse 参数指示此工作在提交时或执行时是否应进行语法分析 TRUE 指示此 PL/SQL 代码在它第一次执行时应进行语法分析, 而 FALSEf示本 PL/SQL 代码应立即进行语法分析。9、 User_Export() 过程返回一个命令,此工作能重新提交。此程序有两个参数: job 与 my_call 。此命令用来安排一个存在的工作以便PROCEDURE User_Export(jobmy_callIN binary_ineger,IN OUT varchar2)job 参数标识一个安排了的工作。交此工作所需要的正文。my_call 参OUT binary_ineger,10、 What() 过程应许在工作执行时重新设置此正在运行的命令。 这个过程接收两个参数: job 与 what 。PROCEDURE

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论