`
onelark
  • 浏览: 31509 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

(转)PL/SQL中JOB用法小结

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

 


注意:what中的存储过程必须以分号";"结尾,否则会报错.

分享到:
评论

相关推荐

    毕业设计基于STC12C5A、SIM800C、GPS的汽车防盗报警系统源码.zip

    STC12C5A通过GPS模块获取当前定位信息,如果车辆发生异常震动或车主打来电话(主动请求定位),将通过GSM发送一条定位短信到车主手机,车主点击链接默认打开网页版定位,如果有安装高德地图APP将在APP中打开并展示汽车当前位置 GPS模块可以使用多家的GPS模块,需要注意的是,当前程序对应的是GPS北斗双模芯片,故只解析 GNRMC数据,如果你使用GPS芯片则应改为GPRMC数据即可。 系统在初始化的时候会持续短鸣,每初始化成功一部分后将长鸣一声,如果持续短鸣很久(超过20分钟),建议通过串口助手查看系统输出的调试信息,系统串口默认输出从初始化开始的所有运行状态信息。 不过更建议你使用SIM868模块,集成GPS.GSM.GPRS,使用更加方便

    基于tensorflow2.x卷积神经网络字符型验证码识别.zip

    基于tensorflow2.x卷积神经网络字符型验证码识别 卷积神经网络(Convolutional Neural Networks, CNNs 或 ConvNets)是一类深度神经网络,特别擅长处理图像相关的机器学习和深度学习任务。它们的名称来源于网络中使用了一种叫做卷积的数学运算。以下是卷积神经网络的一些关键组件和特性: 卷积层(Convolutional Layer): 卷积层是CNN的核心组件。它们通过一组可学习的滤波器(或称为卷积核、卷积器)在输入图像(或上一层的输出特征图)上滑动来工作。 滤波器和图像之间的卷积操作生成输出特征图,该特征图反映了滤波器所捕捉的局部图像特性(如边缘、角点等)。 通过使用多个滤波器,卷积层可以提取输入图像中的多种特征。 激活函数(Activation Function): 在卷积操作之后,通常会应用一个激活函数(如ReLU、Sigmoid或tanh)来增加网络的非线性。 池化层(Pooling Layer): 池化层通常位于卷积层之后,用于降低特征图的维度(空间尺寸),减少计算量和参数数量,同时保持特征的空间层次结构。 常见的池化操作包括最大池化(Max Pooling)和平均池化(Average Pooling)。 全连接层(Fully Connected Layer): 在CNN的末端,通常会有几层全连接层(也称为密集层或线性层)。这些层中的每个神经元都与前一层的所有神经元连接。 全连接层通常用于对提取的特征进行分类或回归。 训练过程: CNN的训练过程与其他深度学习模型类似,通过反向传播算法和梯度下降(或其变种)来优化网络参数(如滤波器权重和偏置)。 训练数据通常被分为多个批次(mini-batches),并在每个批次上迭代更新网络参数。 应用: CNN在计算机视觉领域有着广泛的应用,包括图像分类、目标检测、图像分割、人脸识别等。 它们也已被扩展到处理其他类型的数据,如文本(通过卷积一维序列)和音频(通过卷积时间序列)。 随着深度学习技术的发展,卷积神经网络的结构和设计也在不断演变,出现了许多新的变体和改进,如残差网络(ResNet)、深度卷积生成对抗网络(DCGAN)等。

    【三维装箱】遗传和模拟退火算法求解三维装箱优化问题【含Matlab源码 031期】.zip

    【三维装箱】遗传和模拟退火算法求解三维装箱优化问题【含Matlab源码 031期】.zip

    自己编写的python 程序计算cpk/ppk

    cpk&ppk python 小程序,品友点评

    基于Springboot开发的分布式抽奖系统.zip

    基于springboot的java毕业&课程设计

    课设毕设基于SpringBoot+Vue的影城管理系统 LW+PPT+源码可运行.zip

    课设毕设基于SpringBoot+Vue的影城管理系统 LW+PPT+源码可运行.zip

    MC教育版(免登录版)

    MC教育版(免登录版)

    农作物叶片病害分类和分割数据集【数据集+标签】

    包含13993张数据和对应的13993张mask分割模版,数据集用不同目录保存,也可以用作分类数据集 类别包含:桃子、辣椒、覆盆子、大豆、南瓜、草莓

    基于vue+springboot二手交易网站.zip

    基于springboot的java毕业&课程设计

    【三维装箱】遗传算法求解三维装箱优化问题【含Matlab源码 3408期】.zip

    【三维装箱】遗传算法求解三维装箱优化问题【含Matlab源码 3408期】.zip

    基于javaspring 开发框架的培训教程 TP1.zip

    基于javaspring 开发框架的培训教程 TP1.zip

    信号和系统 MATLAB 代码:探索信号生成、系统建模、傅立叶分析、滤波器设计、采样和控制系统仿真.zip

    1.版本:matlab2014/2019a/2021a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

    医院网上预约系统设计与开发/毕业设计

    医院网上预约系统设计与开发/毕业设计 JSP基于SSM网上医院预约挂号系统 科室信息: 科室id,科室名称,科室介绍,成立日期,负责人 医生信息: 医生工号,登录密码,所在科室,医生姓名,性别,医生照片,出生日期,医生职位,工作经验,联系方式,擅长,医生介绍 病人信息: 病人id,医生,病人姓名,性别,身份证号,联系电话,病人病例,登记时间 预约信息: 预约id,预约用户,预约医生,预约日期,时段,联系电话,下单时间,处理状态,医生回复 新闻信息: 新闻id,新闻标题,新闻图片,新闻内容,新闻日期,新闻来源 留言: 留言id,留言标题,留言内容,留言人,留言时间,管理回复,回复时间 用户: 用户名,登录密码,姓名,性别,出生日期,用户照片,联系电话,邮箱,家庭地址,注册时间

    企业数据治理之数据质量治理方案.pptx

    企业数据治理之数据质量治理方案

    MySQL8.4.0 LTS(mysql-8.4.0-10.fc38.x86-64.rpm-bundle.tar)

    MySQL8.4.0 LTS(mysql-8.4.0-10.fc38.x86_64.rpm-bundle.tar)适用于Linux Fedora 38 (x86, 64-bit)

    1659 jsp游乐园管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目源码

    一、源码特点 java 医疗数据管理系统 是一套完善的web设计系统,对理解JSP java编程开发语言有帮助采用了数据模型进行区块链设计,系统具有完整的源代码和数据库,系统采用web模式,系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql,使用java语言开发。 二、功能介绍 如博客中介绍 三、注意事项 1、管理员账号:admin 密码:admin 数据库配置文件DBO.java ,权限包括管理员,用户 2、开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql,使用java语言开发。 3、数据库文件名是jspyly 系统名称yly 4、地址:http://127.0.0.1:8080/yly/qt/index.jsp

    基于SpringBoot 搭建的番茄短视频-后台管理系统.zip

    基于springboot的java毕业&课程设计

    54.医院分诊管理系统的设计与实现-基于SSM框架+ Mysql+Java设计与实现(可运行源码+数据库+lw)毕业设计管理系统

    可运行源码(含数据库脚本)+开发文档+lw(高分毕设项目) java期末大作业毕业设计项目管理系统计算机软件工程大数据专业 内容概要:通过陆丰市医院门诊分诊系统设计的研究背景、研究的意义和目的,通过运用java语言和ssm框架来建立一款分诊管理系统,能够帮助医院提高工作效率,减少工作中出现的错误率。设计出挂号管理、排队候诊管理以及叫号管理等多个子模块,绘制出实体关系图,利用MySQL技术建立数据库达成了软件与数据库的互通。最后对工作进行了总结和展望。 关键词:分诊管理系统;功能建模;java 全套项目源码+详尽文档,一站式解决您的学习与项目需求。 适用人群: 计算机、通信、人工智能、自动化等专业的学生、老师及从业者。 使用场景及目标: 无论是毕设、期末大作业还是课程设计,一键下载,轻松部署,助您轻松完成项目。 项目代码经过调试测试,确保直接运行,节省您的时间和精力。 其他说明: 项目整体具有较高的学习借鉴价值,基础能力强的可以在此基础上修改调整,以实现不同的功能。

    基于Springboot和SpringCloud的博客.zip

    基于springboot的java毕业&课程设计

Global site tag (gtag.js) - Google Analytics