`
pengjianbo1
  • 浏览: 232414 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

oracle job学习

阅读更多

一、设置初始化参数 job_queue_processes
  sql> alter system set job_queue_processes=n;(n>0)
  job_queue_processes最大值为1000
  
  查看job queue 后台进程
  sql>select name,description from v$bgprocess;
  
二,dbms_job package 用法介绍
  包含以下子过程:
  
  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参数指示在什么时候此工作将再次运行。此参数缺省值为当前日期和时间。
  job如果由于某种原因未能成功之行,oracle将重试16次后,还未能成功执行,将被标记为broken重新启动状态为broken的job,有如下两种方式;
  a、利用dbms_job.run()立即执行该job
    sql>begin
    sql>dbms_job.run(:jobno) 该jobno为submit过程提交时返回的job number
    sql>end;
    sql>/
  b、利用dbms_job.broken()重新将broken标记为false
    sql>begin
    sql>dbms_job.broken (:job,false,next_date)
    sql>end;
    sql>/
  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参数指示一个工作重执行的频度。 中国网管论坛bbs.bitsCN.com
  
  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) 54ne.com
  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代码块。 中国网管论坛bbs.bitsCN.com
  next_date参数指识何时将运行这个工作。
  interval参数何时这个工作将被重执行。
  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代码。
  

三、查看相关job信息
  1、相关视图
  dba_jobs
  all_jobs
  user_jobs
  dba_jobs_running 包含正在运行job相关信息


  
  2、查看相关信息
  
  SQL>SELECT JOB, NEXT_DATE, NEXT_SEC, FAILURES, BROKEN
  SQL>FROM DBA_JOBS;
  
  JOB NEXT_DATE NEXT_SEC FAILURES B
  ------- --------- -------- -------- -
  9125 01-JUN-01 00:00:00 4 N
  14144 24-OCT-01 16:35:35 0 N
  9127 01-JUN-01 00:00:00 16 Y
  3 rows selected.
  
  正在运行的JOB相关信息
  
  SELECT SID, r.JOB, LOG_USER, r.THIS_DATE, r.THIS_SEC
  FROM DBA_JOBS_RUNNING r, DBA_JOBS j
  WHERE r.JOB = j.JOB;
  
  SID JOB LOG_USER THIS_DATE THIS_SEC
  ----- ---------- ------------- --------- --------
  12 14144 HR 24-OCT-94 17:21:24
  25 8536 QS 24-OCT-94 16:45:12
  2 rows selected.
   
  JOB QUEUE LOCK相关信息
  
  SELECT SID, TYPE, ID1, ID2
  FROM V$LOCK
  WHERE TYPE = 'JQ';
  
  SID TY ID1 ID2
  --------- -- --------- ---------
  12 JQ 0 14144
  1 row selected.
  
四、简单例子
  1、一个简单例子:

  
  创建测试表
  SQL> create table TEST(a date);
  
  表已创建。
  
  创建一个自定义过程
  SQL> create or replace procedure MYPROC as
   2 begin
   3 insert into TEST values(sysdate);
   4 end;
   5 /
  
  过程已创建。
  
  创建JOB
  SQL> variable job1 number;
  SQL>
  SQL> begin
   2 dbms_job.submit(:job1,'MYPROC;',sysdate,'sysdate+1/1440');  --每天1440分钟,即一分钟运行test过程一次
   3 end;
   4 /
  
  PL/SQL 过程已成功完成。
  
  运行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 TEST;
  
  时间
  -------------------
  2001/01/07 23:51:21
  2001/01/07 23:52:22
  2001/01/07 23:53:24
  
  删除JOB
  SQL> begin
   2 dbms_job.remove(:job1);
   3 end;
   4 /   
  PL/SQL 过程已成功完成.

 

    2、第天1点执行的一个job示例:

 

       

         DECLARE
            X NUMBER;
         BEGIN
            SYS.DBMS_JOB.SUBMIT
            ( job => X
               ,what => 'syn_rpt_members_relation;'
               ,next_date => to_date('02-07-2008 01:00:00','dd/mm/yyyy hh24:mi:ss')
               ,interval => 'trunc(sysdate+1)+(1/24)'
               ,no_parse => FALSE
            );
                SYS.DBMS_OUTPUT.PUT_LINE('Job Number is: ' || to_char(x));
               COMMIT;
         END;
        /
以上是明确指定每天的1点执行此job,如果指定是每天中午12点执行interval需要指定为'trunc(sysdate)+1+12/24',如果仅仅指定interval为一天,这样当你手工用dbms_job.run(job)去运行一次时,job每天的执行时间是会改变的,如果你想job每天在固定时间执行,可以参考上面的例子.
描述 INTERVAL参数值:
      每天午夜12点 'TRUNC(SYSDATE + 1)'
      每天早上8点30分 'TRUNC(SYSDATE + 1) + (8*60+30)/(24*60)'
      每星期二中午12点 'NEXT_DAY(TRUNC(SYSDATE ), ''TUESDAY'' ) + 12/24'
      每个月第一天的午夜12点 '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"))) + (6×60+10)/(24×60)'
  
      

1:每分钟执行

Interval => TRUNC(sysdate,'mi') + 1/ (24*60)

Interval => sysdate+1/1440

2:每天定时执行

例如:每天的凌晨1点执行

Interval => TRUNC(sysdate) + 1 +1/ (24)

3:每周定时执行

例如:每周一凌晨1点执行

Interval => TRUNC(next_day(sysdate,'星期一'))+1/24

4:每月定时执行

例如:每月1日凌晨1点执行

Interval =>TRUNC(LAST_DAY(SYSDATE))+1+1/24

5:每季度定时执行

例如每季度的第一天凌晨1点执行

Interval => TRUNC(ADD_MONTHS(SYSDATE,3),'Q') + 1/24

6:每半年定时执行

例如:每年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 job

    oracle job,帮助初学者学习job应用 包含创建、删除、修改job 等。 oracle job,帮助初学者学习job应用 包含创建、删除、修改job 等。

    ORACLE JOB

    根据提供的信息,我们可以详细探讨关于 Oracle Job 的一系列关键知识点,包括如何在 Oracle ...此外,还可以进一步学习和探索更多高级功能,如 Job 的监控、调度策略调整等,以便更好地利用这一强大的数据库特性。

    oracle基础学习资料

    ### Oracle基础学习资料知识点概述 #### 一、Linux下的文件权限管理 - **`chmod +x *sh`**: 这条命令的作用是在Linux系统中给所有的`.sh`(Shell脚本)文件添加执行权限。在Oracle数据库管理和维护过程中,经常...

    oracle开发学习资料

    以上这些SQL查询范例覆盖了基本的查询、选择特定列、去重、计算和格式化输出等核心概念,对于Oracle开发学习者来说是很好的起点。在实际开发中,你还需要学习更多高级查询技巧,如联接(JOINs)、子查询、聚合函数...

    Oracle JOB,procedure,cursor 的使用

    学习和掌握Oracle的JOB、PROCEDURE和CURSOR对于数据库管理员和开发者至关重要,它们能帮助你更高效地管理和操作数据库,实现自动化任务,并优化性能。通过阅读"oracle定时执行存储过程.pdf"和"Oracle 游标使用全解....

    Oracle数据库整理学习手册

    ### Oracle数据库整理学习手册知识点详解 #### 一、Oracle数据库简介 Oracle数据库是由甲骨文公司(Oracle Corporation)开发的一款关系型数据库管理系统。甲骨文公司作为全球知名的软件服务商之一,在数据库市场上...

    Oracle课程相关练习oracle-job-master.zip

    "Oracle课程相关练习oracle-job-master.zip"这个压缩包文件显然包含了与Oracle数据库学习相关的练习资料,可能是为了帮助学习者深入理解和掌握Oracle的各项功能和技术。下面我们将详细探讨Oracle数据库的一些关键...

    oracle-Job-管理.docx

    实验的主要目标是学习如何通过命令行管理Oracle Jobs。 Oracle中与Job相关的系统参数包括: 1. `job_queue_processes`:这是运行Job时启用的进程数,默认值为2,最小值为0,表示不运行任何Job,最大值为36。可以...

    Oracle学习

    在Oracle学习中,了解和掌握数据库的基础知识,如用户管理、SQL查询语言以及数据处理操作是至关重要的。 首先,Oracle数据库中有不同级别的用户,包括超级管理员、普通管理员和普通用户。超级管理员通常是sys,其...

    大型项目Oracle sql,function,procedures,package,cursor,job

    学习这个包的内容,将帮助你理解和掌握如何在实际的大型项目中有效地使用Oracle数据库进行开发和维护。理解并熟练运用这些知识点,对于提升数据库管理和编程能力,解决复杂业务问题,优化系统性能等方面都有极大的...

    Oracle DBA学习笔记

    在Oracle服务方面,笔记解释了Oracle服务包括Oracle DB Console、Oracle Job SchedulerXE、Oracle iSQL*Plus、Oracle XETNS Listener和OracleServiceORCL等几个关键服务进程的意义。 在Select基本操作中,笔记详细...

    oracle学习文档

    ### Oracle 学习文档知识点概览 #### 一、Oracle 教育项目介绍 - **项目背景**: Oracle公司为了在全球范围内推广其技术,在职业教育市场上推出了一个面向特定人群的技术培训项目。 - **目标群体**: 主要面向希望...

    Oracle学习笔记

    从提供的标题、描述以及部分文本内容来看,这份“Oracle学习笔记”主要围绕Oracle数据库中的查询语句及其各种类型进行深入探讨。尽管描述部分重复了标题的文字,但主要内容段落包含了丰富的信息,下面将对这些知识点...

    Oracle 存储过程学习文档

    ### Oracle存储过程学习文档知识点详解 #### 一、Oracle存储过程概述 **1.1 存储过程定义:** Oracle存储过程是一种存储在数据库中的PL/SQL代码块,它可以接收输入参数并返回输出参数。存储过程能够执行复杂的业务...

    【RAC】rac中如何指定job的运行实例.pdf

    在Oracle数据库中,job是通过DBMS_JOB和DBMS_SCHEDULER这两个包来管理的。这两个包在Oracle不同版本中有不同的特性和使用场景。自Oracle 10g版本起,引入了DBMS_SCHEDULER包,它相较于旧有的DBMS_JOB包拥有许多新的...

    Oracle超详细学习笔记

    ### Oracle超详细学习笔记 #### 一、基本查询与数据操作 ##### 1. 最简单的查询 - **命令示例**: ```sql SELECT * FROM employees; DESC employees; SET LINESIZE 600; SET PAGESIZE 50; ``` - **解释**: ...

    Oracle查询操作的学习笔记

    ### Oracle查询操作学习笔记知识点详解 #### 一、Oracle用户管理与权限分配 - **创建用户**:在Oracle中创建用户的基本语法为`CREATE USER username IDENTIFIED BY password`。例如,`CREATE USER xiaoming ...

    oracle学习经典教程

    此外,Oracle提供的内置包和API也将被介绍,如DBMS_OUTPUT用于调试,DBMS_JOB用于计划任务。 在高级主题中,Oracle的并行执行、分区技术和物化视图将被详细探讨,这些都是提高大规模数据处理效率的关键。还有,...

Global site tag (gtag.js) - Google Analytics