一、dmbs_job

dbms_job涉及到的知识点

1、创建job:

variable jobno number;
dbms_job.submit(:jobno, —-job号
 'your_procedure;',—-执行的存储过程, ';'不能省略
 next_date, —-下次执行时间
 'interval' —-每次间隔时间,interval以天为单位
);/
 
在命令窗口执行。

–系统会自动分配一个任务号jobno。
2、删除job: dbms_job.remove(jobno); 

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

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

5、修改间隔时间:dbms_job.interval(jobno, interval);

6、启动job: dbms_job.run(jobno);

7、停止job: dbms.broken(jobno, broken, nextdate); –broken为boolean值

例子:

– ①②步在sql窗口执行即可 
– ①创建一张表 
CREATE TABLE a(a DATE); 
– ②创建一个自定义过程 
CREATE OR REPLACE PROCEDURE TEST AS 
BEGIN 
INSERT INTO a VALUES(SYSDATE); 
END;

– ③创建JOB 设定1分钟执行一次该任务 
VAR job1 NUMBER; 
BEGIN 
dbms_job.submit(:job1,’test;’,sysdate,’sysdate+1/1440’); 
COMMIT; 
END; 

– ④运行JOB 
BEGIN 
dbms_job.run(:job1); 
END; 
/

--查询当前的job任务。

select *  from user_jobs;

二、jobs

使用dbms_scheduler需要具有create job权限,对定时任务一些操作需要具有MANAGE SCHEDULER权限,如:dbms_scheduler.stop_job('my_job_test',true);

BEGIN
     dbms_scheduler.create_job(job_name        => 'my_job_test',
                             job_type        => 'STORED_PROCEDURE',
                             job_action      => 'my_test',
                              start_date      => sysdate,
                             repeat_interval => 'sysdate + 1/1440',
                             enabled         => TRUE,
                             comments        => 'test');
     end;

参数介绍:

job_name:job名字

job_type:job类型,支持三种类型:

1)PLSQL_BLOCK——PL/SQL语句块;

  2)STORED_PROCEDURE——存储过程;

3)EXECUTABLE——外部程序(外部程序可以是一个shell脚本,也可以是操作系统级别的指令)。

job_action:根据job_type的不同,job_action有相对应的内容。

number_of_arguments:参数个数。

start_date:执行开始时间。

repeat_interval:指定job执行频率(如每分钟执行一次、每天执行一次等)。

end_date:执行结束时间。

job_class:jobclass的名字。

enabled:指定是否自动激活job,为true代表自动激活,false代表不激活。

auto_drop:执行完是否自动drop

comments:对于job的简单说明

定时器执行,调用存储过程创建表成功了,不需要显示的授权grant create table to user,只需要存错过程定义为authid current_user即可。个人觉得dbms_job在调用authid current_user的存储过程的时候,未能调用到用户具有的角色的权限,这或许是dbms_job的一个bug。

简单介绍下dbms_scheduler关于定时任务的一些常用过程:

1) dbms_scheduler.run(jobName) 运行job

2) dbms_scheduler.stop_job(jobName,force) 停止job,force默认为false,Oracle建议false停止失败情况下,使用true,且使用true需要有manage scheduler权限

3) dbms_scheduler.drop_job(jobName) 删除job

4) dbms_scheduler.enable(jobName) 打开job

5) dbms_scheduler.disable(jobName,force) 禁用job,force参数用于dependencies,如果TRUE,即使其他对象依赖于它,操作也能成功

相关视图

1) user_scheduler_jobs 查看job信息

2) User_Scheduler_Job_Log job job日志

3) user_scheduler_job_run_details job运行日志

4) user_scheduler_running_jobs 正在运行的job

总结:

oracle定时任务,dbms_job调用存储过程创建表,需要显示授权,存储过程定义为authid current_user也不行,而dbms_scheduler是不需要显示授权的,这点来说后者更方便使用。另外,dbms_scheduler提供了job运行日志记录视图,可以查看具体的运行日志,比较实用。而且,oracle10g以后也推荐使用dbms_scheduler。

oracle创建定时任务的更多相关文章

  1. oracle数据库定时任务dbms_job的用法详解

    本文来源:Ruthless <oracle数据库定时任务dbms_job的用法详解> 一.dbms_job涉及到的知识点   1.创建job: variable jobno number; ...

  2. linux创建定时任务,定时执行sql

    终于弄清楚一个问题了.linux创建定时任务,定时执行sql,其中分为两个case. case-1 sql语句较少,因此直接在 shell脚本中 写sql语句.如下: [oracle@Oracle11 ...

  3. oracle创建定时器详解|interval属性

    定时任务首先先创建定时任务中的存储过程 create or replace procedure pro_jggl as                                          ...

  4. Oracle Job定时任务详解、跨数据库数据同步

    业务需求,需要与A公司做数据对接,我们公司用的Oracle,A公司用的SQL Server数据库,如何跨数据库建立连接呢?这里使用的是DBLink,不会配置的请看我的另外一篇博客:https://ww ...

  5. 利用Oracle创建表空间和用户

    本文仅用于学习交流,商业用途请支持正版!转载请注明:http://www.cnblogs.com/mxbs/p/6217152.html 第一步,创建表空间 以SYS/sys账户和SYSDBA身份登录 ...

  6. 利用Oracle创建数据库

    本文仅用于学习交流,商业用途请支持正版!转载请注明:http://www.cnblogs.com/mxbs/p/6217151.html 数据库的创建 打开"所有程序"-" ...

  7. Oracle创建数据库

    Oracle创建数据库有三种方式:一.使用DBCA(Database Configuration Assistant 数据库配置助手):二.使用 create database指令:三.在安装数据库软 ...

  8. oracle创建表之前判断表是否存在,如果存在则删除已有表

    Mysql 创建表之前判断表是否存在,如果存在则删除已有表 DROP TABLE IF EXISTS sys_area; CREATE TABLE sys_area ( id int NOT NULL ...

  9. oracle创建数据库和用户

    以前开发的时候用得比较多的是mysql和sql server,oracle用的比较少,用起来比较生疏,mysql和sql server用起来比较类似,就oracle的使用方式和他们不同,oracle在 ...

随机推荐

  1. Codeforces Round #599 (Div. 2)的简单题题解

    难题不会啊…… 我感觉写这个的原因就是因为……无聊要给大家翻译题面 A. Maximum Square 简单题意: 有$n$条长为$a_i$,宽为1的木板,现在你可以随便抽几个拼在一起,然后你要从这一 ...

  2. light oj 1095 组合数学

    #include <stdio.h> #include <string.h> #include <stdlib.h> #include <math.h> ...

  3. 清空标签间的内容(innerHTML)和 value

    jquery 方式: 清空标签的innerHTML: $("#divId").html(""); 清空标签的value: $("#divId" ...

  4. scope标签笔记

      scope的几个属性详解: 1.compile:默认值 他表示被依赖项目需要参与当前项目的编译,还有后续的测试,运行周期也参与其中,是一个比较强的依赖.打包的时候通常需要包含进去. 2.test: ...

  5. HZOI2019序列

    题目链接:https://www.cnblogs.com/Juve/articles/11186805.html(密码是我的一个oj用户名) 题解: 这题我考试打的暴力,只有5分. 一开始理解错题意了 ...

  6. Django项目:CRM(客户关系管理系统)--78--68PerfectCRM实现CRM业务流程(bpm)报名缴费分页

    # pagination.py # ————————68PerfectCRM实现CRM业务流程(bpm)报名缴费分页———————— from django.utils.safestring impo ...

  7. 微信小程序slider应用,可加减的slider控制

    <view class="control-w "> <block wx:for="{{controls}}" wx:key="id& ...

  8. PAT甲级——A1052 Linked List Sorting

    A linked list consists of a series of structures, which are not necessarily adjacent in memory. We a ...

  9. PAT甲级——A1010 Radix

    Given a pair of positive integers, for example, 6 and 110, can this equation 6 = 110 be true? The an ...

  10. MySQL数据库_索引_事务_优化 _锁_存储引擎_存储过程_CAP

    ##一.基础 ## *    插入                   INSERT INTO table_name ( field1, field2,...fieldN )              ...