定时自动操作数据库――Oracle JOB 用法小结

2014-07-30  来源:本站原创  分类:数据库  人气:11 


  1. 一、设置初始化参数 job_queue_processes
  2.   sql> alter system set job_queue_processes=n;(n>0)
  3.   job_queue_processes最大值为1000
  4.   
  5.   查看job queue 后台进程
  6.   sql>select name,description from v$bgprocess;
  7.   
  8.   二,dbms_job package 用法介绍
  9.   包含以下子过程:
  10.   
  11.   Broken()过程。
  12.   change()过程。
  13.   Interval()过程。
  14.   Isubmit()过程。
  15.   Next_Date()过程。
  16.   Remove()过程。
  17.   Run()过程。
  18.   Submit()过程。
  19.   User_Export()过程。
  20.   What()过程。
  21.   
  22.   1、Broken()过程更新一个已提交的工作的状态,典型地是用来把一个已破工作标记为未破工作。
  23.   这个过程有三个参数:job 、broken与next_date。
  24.   
  25.   PROCEDURE Broken (job    IN binary_integer,
  26.            Broken  IN boolean,
  27.            next_date IN date :=SYSDATE)
  28.   
  29.   job参数是工作号,它在问题中唯一标识工作。
  30.   broken参数指示此工作是否将标记为破——TRUE说明此工作将标记为破,而FLASE说明此工作将标记为未破。
  31.   next_date参数指示在什么时候此工作将再次运行。此参数缺省值为当前日期和时间。
  32.   job如果由于某种原因未能成功之行,oracle将重试16次后,还未能成功执行,将被标记为broken重新启动状态为broken的job,有如下两种方式;
  33.   a、利用dbms_job.run()立即执行该job
  34.     sql>begin
  35.     sql>dbms_job.run(:jobno) 该jobno为submit过程提交时返回的job number
  36.     sql>end;
  37.     sql>/
  38.   b、利用dbms_job.broken()重新将broken标记为false
  39.     sql>begin
  40.     sql>dbms_job.broken (:job,false,next_date)
  41.     sql>end;
  42.     sql>/
  43.   2、Change()过程用来改变指定工作的设置。
  44.   这个过程有四个参数:job、what 、next_date与interval。
  45.   
  46.   PROCEDURE Change (job    IN binary_integer,
  47.            What    IN varchar2,
  48.            next_date IN date,
  49.            interval  IN varchar2)
  50.   
  51.   此job参数是一个整数值,它唯一标识此工作。
  52.   What参数是由此工作运行的一块PL/SQL代码块。
  53.   next_date参数指示何时此工作将被执行。
  54.   interval参数指示一个工作重执行的频度。
  55.   
  56.   3、Interval()过程用来显式地设置重执行一个工作之间的时间间隔数。这个过程有两个参数:job与interval。
  57.   
  58.   PROCEDURE Interval (job   IN binary_integer,
  59.             Interval IN varchar2)
  60.   
  61.   job参数标识一个特定的工作。interval参数指示一个工作重执行的频度。
  62.   
  63.   4、ISubmit()过程用来用特定的工作号提交一个工作。这个过程有五个参数:job、what、next_date、interval与no_parse。
  64.   
  65.   PROCEDURE ISubmit (job    IN binary_ineger,
  66.             What   IN varchar2,
  67.             next_date IN date,
  68.             interval IN varchar2,
  69.             no_parse IN booean:=FALSE)
  70.   
  71.   这个过程与Submit()过程的唯一区别在于此job参数作为IN型参数传递且包括一个由开发者提供的工作号。如果提供的工作号已被使用,将产生一个错误。
  72.   
  73.   5、Next_Date()过程用来显式地设定一个工作的执行时间。这个过程接收两个参数:job与next_date。
  74.   
  75.   PROCEDURE Next_Date(job     IN binary_ineger,
  76.             next_date  IN date)
  77.   job标识一个已存在的工作。next_date参数指示了此工作应被执行的日期与时间。
  78.   
  79.   6、Remove()过程来删除一个已计划运行的工作。这个过程接收一个参数:
  80.   
  81.   PROCEDURE Remove(job IN binary_ineger);
  82.   
  83.   job参数唯一地标识一个工作。这个参数的值是由为此工作调用Submit()过程返回的job参数的值。已正在运行的工作不能由调用过程序删除。
  84.   
  85.   7、Run()过程用来立即执行一个指定的工作。这个过程只接收一个参数:
  86.   
  87.   PROCEDURE Run(job IN binary_ineger)
  88.   
  89.   job参数标识将被立即执行的工作。
  90.   
  91.   8、使用Submit()过程,工作被正常地计划好。
  92.   这个过程有五个参数:job、what、next_date、interval与no_parse。
  93.   
  94.   PROCEDURE Submit ( job    OUT binary_ineger,
  95.             What   IN varchar2,
  96.             next_date IN date,
  97.             interval IN varchar2,
  98.             no_parse IN booean:=FALSE)
  99.   
  100.   job参数是由Submit()过程返回的binary_ineger。这个值用来唯一标识一个工作。
  101.   what参数是将被执行的PL/SQL代码块。
  102.   next_date参数指识何时将运行这个工作。
  103.   interval参数何时这个工作将被重执行。
  104.   no_parse参数指示此工作在提交时或执行时是否应进行语法分析——TRUE指示此PL/SQL代码在它第一次执行时应进行语法分析,而FALSE指示本PL/SQL代码应立即进行语法分析。
  105.   
  106.   9、User_Export()过程返回一个命令,此命令用来安排一个存在的工作以便此工作能重新提交。
  107.   此程序有两个参数:job与my_call。
  108.   
  109.   PROCEDURE User_Export(job    IN binary_ineger,
  110.              my_call  IN OUT varchar2)
  111.   
  112.   job参数标识一个安排了的工作。my_call参数包含在它的当前状态重新提交此工作所需要的正文。
  113.   
  114.   10、What()过程应许在工作执行时重新设置此正在运行的命令。这个过程接收两个参数:job与what。
  115.   
  116.   PROCEDURE What (job IN binary_ineger,
  117.           What IN OUT varchar2)
  118.   job参数标识一个存在的工作。what参数指示将被执行的新的PL/SQL代码。
  119.   
  120.   三、查看相关job信息
  121.   1、相关视图
  122.   dba_jobs
  123.   all_jobs
  124.   user_jobs
  125.   dba_jobs_running 包含正在运行job相关信息
  126.   
  127.   2、查看相关信息
  128.   
  129.   SQL>SELECT JOB, NEXT_DATE, NEXT_SEC, FAILURES, BROKEN
  130.   SQL>FROM DBA_JOBS;
  131.   
  132.   JOB NEXT_DATE NEXT_SEC FAILURES B
  133.   ------- --------- -------- -------- -
  134.   9125 01-JUN-01 00:00:00 4 N
  135.   14144 24-OCT-01 16:35:35 0 N
  136.   9127 01-JUN-01 00:00:00 16 Y
  137.   3 rows selected.
  138.   
  139.   正在运行的JOB相关信息
  140.   
  141.   SELECT SID, r.JOB, LOG_USER, r.THIS_DATE, r.THIS_SEC
  142.   FROM DBA_JOBS_RUNNING r, DBA_JOBS j
  143.   WHERE r.JOB = j.JOB;
  144.   
  145.   SID JOB LOG_USER THIS_DATE THIS_SEC
  146.   ----- ---------- ------------- --------- --------
  147.   12 14144 HR 24-OCT-94 17:21:24
  148.   25 8536 QS 24-OCT-94 16:45:12
  149.   2 rows selected.
  150.    
  151.   JOB QUEUE LOCK相关信息
  152.   
  153.   SELECT SID, TYPE, ID1, ID2
  154.   FROM V$LOCK
  155.   WHERE TYPE = 'JQ';
  156.   
  157.   SID TY ID1 ID2
  158.   --------- -- --------- ---------
  159.   12 JQ 0 14144
  160.   1 row selected.
  161.   
  162.   四、简单例子
  163.   一个简单例子:
  164.   
  165.   创建测试表
  166.   SQL> create table TEST(a date);
  167.   
  168.   表已创建。
  169.   
  170.   创建一个自定义过程
  171.   SQL> create or replace procedure MYPROC as
  172.    2 begin
  173.    3 insert into TEST values(sysdate);
  174.    4 end;
  175.    5 /
  176.   
  177.   过程已创建。
  178.   
  179.   创建JOB
  180.   SQL> variable job1 number;
  181.   SQL>
  182.   SQL> begin
  183.    2 dbms_job.submit(:job1,'MYPROC;',sysdate,'sysdate+1/1440');  --每天1440分钟,即一分钟运行test过程一次
  184.    3 end;
  185.    4 /
  186.   
  187.   PL/SQL 过程已成功完成。
  188.   
  189.   运行JOB
  190.   SQL> begin
  191.    2 dbms_job.run(:job1);
  192.    3 end;
  193.    4 /
  194.   
  195.   PL/SQL 过程已成功完成。
  196.   
  197.   SQL> select to_char(a,'yyyy/mm/dd hh24:mi:ss') 时间 from TEST;
  198.   
  199.   时间
  200.   -------------------
  201.   2001/01/07 23:51:21
  202.   2001/01/07 23:52:22
  203.   2001/01/07 23:53:24
  204.   
  205.   删除JOB
  206.   SQL> begin
  207.    2 dbms_job.remove(:job1);
  208.    3 end;
  209.    4 /
  210.   
  211.   PL/SQL 过程已成功完成。

本文出自 “乔磊的博客 学习 进步” 博客,请务必保留此出处http://sucre.blog.51cto.com/1084905/380135

相关文章
  • 定时自动操作数据库――Oracle JOB 用法小结 2014-07-30

    一.设置初始化参数 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()过程. Isub

  • Sql Server 和 Access 操作数据库结构Sql语句小结 2014-10-10

    下面是Sql Server 和 Access 操作数据库结构的常用Sql,希望对你有所帮助. 内容由海娃整理,不正确与不完整之处还请提出,谢谢. 新建表: create table [表名] ( [自动编号字段] int IDENTITY (1,1) PRIMARY KEY , [字段1] nVarChar(50) default '默认值' null , [字段2] ntext null , [字段3] datetime, [字段4] money null , [字段5] int defaul

  • 数据库Oracle数据的异地的自动备份 2014-05-11

    正在看的ORACLE教程是:数据库Oracle数据的异地的自动备份.在大型商业应用中,数据的异地容灾备份十分重要,也必不可少.笔者根据自己的实践经验,设计了一套简洁地实现异地数据自动备份的方法,可供数据库管理人员参考.文中所有的程序都经过测试,运行良好.这里模拟的异地运行环境为一主一备两套Sun Solaris系统,所采用的备份方法为Oracle数据库提供的标准备份:export. 相关命令 文中主要用到三个命令,这里先单独介绍一下: export: 将数据库中数据备份成一个二进制系统文件,它有

  • Asp定时执行操作 Asp定时读取数据库(网页定时操作详解) 2014-12-05

    由于目前部分网页语言的限制,在定时操作上有一定的困难,但是经过我多次的求证,发现第四种方法无疑是效果最好的,最省心的. 目前定时的操作有: 一.Html页面的定时刷新(Refresh--刷新 ) 1,Refresh (刷新) 代码使用说明 说明:让网页多长时间(秒)刷新自己,或在多长时间后让网页自动链接到其它网页. 用法:<Meta http-equiv="Refresh" Content="30"> <Meta http-equiv="

  • PL/SQL直接操作远程oracle数据库 2013-05-06

    PL/SQL直接操作远程oracle数据库,除了PL/SQL Developer 之外还需要Oracle客户端,有一个更方便的方法就是使用Oracle精简客户端,很多地方可以下载,文件很小,耗资源也少.安装完成后修改安装目录下的D:\oracle\product\10.2.0\db_1\network\ADMIN\tnsnames.ora文件:格式如下: 数据库名称= (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST

  • ASP操作数据库的类 2014-05-13

    对于ASP的使用者来说,在数据库操作上越简单,就有更多的时间去考虑逻辑上和应用上的代码,效率也会更高. 今天俺在这?给大家提供一种数据库操作的思路,这些代码是俺在长期的ASP应用中不断完成和修正的,也已经用它完成了很多项目了,应该说直接拿去用是没有问题的.当然本人能力也有限,希望大家一起来讨论. 说明:此帖代码均是VBScript版本.另外最好你对手写ASP已经有一定的基础. 先简单介绍一下俺这个类的一些特点: 可同时操作多个不同类型的数据库. 完全不用考虑数据类型的差别,再也不用想字符型字段加

  • MySQL操作数据库和表的常用命令新手教程 2014-07-17

    这篇文章主要介绍了MySQL操作数据库和表的常用命令新手教程,本文总结的命令都是控制mysql必须掌握的.常用的命令,需要的朋友可以参考下 我是新手 学习如何管理和导航MySQL数据库和表是要掌握的首要任务之一,下面的内容将主要对MySQL的数据库和表的一些常用命令进行总结,一些我们不得不掌握的命令,一些信手拈来的命令. 处理数据库 1.查看数据库 获取服务器上的数据库列表通常很有用.执行show databases;命令就可以搞定. mysql> show databases; 2.创建数据库

  • win2003服务器定时自动重启命令[计划任务] 2015-03-15

    win2003服务器定时自动重启命令,其实就是通过shutdown.exe结合计划任务来实现的. 1. win2003可以这样自动重启: 新建一个命令行文件比如reboot.cmd 内容如下:shutdown -r -t 30 在计划任务中新建一个任务,程序选择上面这个reboot.cmd文件,时间定好,执行任务的用户及密码设置好 2. 你是否想睡觉或出门,但电脑又正在进行工作,不能现在就关机,这时你就一定要用到定时自动关机了吧. 慢着慢着,干嘛老是要上网下载,难道你就不想成为一个操作系统的高手

  • Oracle实例和Oracle数据库(Oracle体系结构) 2012-03-09

    --========================================== --Oracle实例和Oracle数据库(Oracle体系结构) --========================================== /* 对于初接触Oracle 数据库的人来讲,很容易混淆的两个概念即是Oracle 实例和Oracle 数据库.这两 概念不同于SQL sever下的实例与数据库,当然也有些相似之处.只是在SQL server我们根本不需要花费太 多的精力去搞清SQL实

  • Python使用MySQLdb for Python操作数据库教程 2013-10-29

    这篇文章主要介绍了Python使用MySQLdb for Python操作数据库教程,详细讲述了MySQLdb的用法,针对Python操作MySQL数据库程序设计具有很好的参考借鉴价值,需要的朋友可以参考下 本文详细讲述了Python使用MySQLdb for Python操作数据库的方法,分享给大家供大家参考.具体如下: 一般来说网站就是要和数据库进行交互,否则什么都不用做了.今天我们就来分析一个叫MySQLdb的库,使用这个用来和MySQL数据库进行交互. 大家可以从这里获得这个库: htt

  • jquery操作HTML5 的data-*的用法实例分享 2013-12-23

    从jQuery 1.4.3起, HTML 5 data- 属性 将自动被引用到jQuery的数据对象中.也就是说虽然 data-* 是在html5 中的元素, 但是如果使用 jquery 1.4.3库以上的.还是可以 在非HTML5的页面或浏览器里, 仍然可以使用.data(obj)方法来操作"data-*" 数据. 阅读HTML5的详细规范后你会发现,这个自定义data属性的用法非常的简单,就是你可以往HTML标签上添加任意以 "data-"开头的属性,这些属性页

  • C#操作数据库总结(vs2005+sql2005) 2014-03-01

    C#操作数据库总结,每次做项目都会用到数据库,对数据库的操作都是糊里糊涂从书里找代码用.通过昨天晚上与今天早上的努力,把数据库的操作整理了一下,下面把整理结果做个小结 开发工具:Microsoft Visual Studio 2005 数据库:Microsoft SQL Server 2005 说明:这里建立的数据库名为Demo,有一个学生表Student,为操作方便起见,我只添加两个字段:studentnum和studentname. 一.SQL语句: --create database De

  • jquery+ajax+C#实现无刷新操作数据库数据的简单实例 2014-03-19

    本篇文章主要是对jquery+ajax+C#实现无刷新操作数据库数据的简单实例进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助 我们知道同步执行和异步执行的区别,为了更好的提高用户的体验,我们都会采用异步方式去处理一些问题,毕竟单线程的同步可能回造成卡死等现象,很不友好,所以可以使用ajax来完成用户的体验,现在我们就来说说如何使用jquery的ajax来实现无刷新的获取内容 我们只是单方面的获取内容,分页等就不考虑了,后期会讲到无刷新的分页 页面中我们放置一个Div容器用来存放返回的内

  • linux下mysql自动备份数据库与自动删除临时文件 2014-05-19

    mysql自动备份数据库与自动删除临时文件,有需要的朋友可以参考下 一.每日23:00自动删除临时文件 首先查看一下crontab的任务列表: crontab -l 然后新建: crontab -e 添加一行: 00 03 * * * rm -rf /www/cmstest/my120/public/scripts/jpgraph/* 保存退出. 重启服务: /etc/rc.d/init.d/crond restart 二.每日24:00自动备份数据库 利用系统crontab来定时执行备份文件,

  • C#中的问号(?号)用法小结 2014-06-03

    这篇文章主要介绍了C#中的问号(?号)用法小结,本文介绍了3种用法,分别作为修饰符.运算符的用法,需要的朋友可以参考下 1. 可空类型修饰符(?): 引用类型可以使用空引用表示一个不存在的值,而值类型通常不能表示为空. 例如: string str=null;是正确的. int i=null:编译器将报错. 为了使值类型也可为空,可空类型出现了,可空类型使用可空类型修饰符?来表示,表现形式为T?. 例:int?表示是可空的整形,DateTime?表示为可空的时间. T?其实是System.Nul

  • 跟老齐学Python之使用Python操作数据库(1) 2014-07-26

    本文详细讲述了使用python操作数据库所需要了解的知识以及准备工作,十分的详尽,这里推荐给想学习python的小伙伴. 在上一讲中已经连接了数据库.就数据库而言,连接之后就要对其操作.但是,目前那个名字叫做qiwsirtest的数据仅仅是空架子,没有什么可操作的,要操作它,就必须在里面建立"表",什么是数据库的表呢?下面摘抄字维基百科对数据库表的简要解释,要想详细了解,需要看官在找一些有关数据库的教程和书籍来看看. 在关系数据库中,数据库表是一系列二维数组的集合,用来代表和储存数据对

  • java使用jdbc操作数据库示例分享 2014-09-04

    这篇文章主要介绍了java使用jdbc操作数据库示例,需要的朋友可以参考下 package dao; import java.sql.*; public class BaseDao { //oracle // private static final String Dirver="oracle.jdbc.driver.OracleDriver"; // private static final String URL="jdbc:oracle:thin:@localhost:1

  • javascript cookie操作类的实现代码小结附使用方法 2014-12-28

    javascript cookie操作类的实现代码小结附使用方法,对于cookies操作不是很熟悉的朋友可以参考下. 第一种方法:cookie操作类,代码封装了,下面也有使用方法,大家可以参考下. String.prototype.Trim = function() { return this.replace(/^\s+/g,"").replace(/\s+$/g,""); } function JSCookie() { this.GetCookie = funct

  • .NET中的IO操作之文件流用法分析 2015-01-19

    这篇文章主要介绍了.NET中的IO操作之文件流用法,实例分析了.net对文件流的读写操作及编码转换等问题,具有一定参考借鉴价值,需要的朋友可以参考下 本文实例讲述了.NET中的IO操作之文件流用法.分享给大家供大家参考.具体分析如下: 读操作 //1.创建文件流 FileStream fsRead =new FileStream("1.txt",FileMode.Open); //2.创建缓冲区,正常情况下,是不会直接等于文件大小的.这里只有读,所以就这么干了. byte[] byte

  • php数组转换js数组操作及json_encode的用法详解 2015-02-21

    php数组转换js数组操作及json_encode的用法.需要的朋友可以过来参考下,希望对大家有所帮助 对于php,个人感觉能够熟练操作数组和字符串,基本上已经是入门了,php本身有很多操作数组和字符串的函数,今天在做一个功能时,需要用Js动态的创建门店信息,这些信息是要从后台添加的,想来想去,通过php读取数据库,得到数组,然后将数组转化成符合需求js数组, php数组形式为: $newArray = array(array('地区'=>'北京地区','items'=>'10','detai