一、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. Python操作MySQL以及数据库索引

    目录 python操作MySQL 安装 使用 SQL注入问题 MySQL的索引 为什么使用索引 索引的种类 主键索引 唯一索引 普通索引 索引优缺点 不会命中索引的情况 explain 索引覆盖 My ...

  2. 2-sat——暴力染色输出方案hdu1814

    因为要求输出字典序最小的解,所以用暴力染色 具体有点像二分图染色 遍历0-2*n-1个点,尝试将每个点染成1,该点所能到达的所有点都要染成1 如果不行,则把上该点的影响消除,再把对立点染成1,如果还不 ...

  3. NOIP 2017 提高组 day1t2 时间复杂度

    P3952 时间复杂度 标签 NOIp提高组 2017 时空限制 1000ms / 128MB 小明正在学习一种新的编程语言 A++,刚学会循环语句的他激动地写了好多程序并 给出了他自己算出的时间复杂 ...

  4. System.Web.Mvc.HttpStatusCodeResult.cs

    ylbtech-System.Web.Mvc.HttpStatusCodeResult.cs 1.程序集 System.Web.Mvc, Version=5.2.3.0, Culture=neutra ...

  5. 5行代码怎么实现Hadoop的WordCount?

    初学编程的人,都知道hello world的含义,当你第一次从控制台里打印出了hello world,就意味着,你已经开始步入了编程的大千世界,这和第一个吃螃蟹的人的意义有点类似,虽然这样比喻并不恰当 ...

  6. HBase与传统关系数据库的对比分析

  7. 出现 cannot download, $GOPATH not set. For more details see: go help gopath

    执行安装 sudo go get github.com/nsf/gocode 提示: cannot download, $GOPATH not set. For more details see: g ...

  8. camtasia Studio 7 的使用

    最近领导给了个任务,要把我们的三维应用功能做个视频,好带出去宣传.通过搜索,发现大家都说camtasia Studio好用,很快在网上找到了,与大家分享链接: http://pan.baidu.com ...

  9. nginx 访问ssl 的 pem 遇到的权限问题

    nginx 开启失败,日志记录 访问 ssl 的 pem 文件  fopen:Permission denied 权限问题,查看文件权限,目录权限,正常. google 后得知原来是一个 SELinu ...

  10. JasperReports报表字段11

    报表字段是代表数据源和报表模板之间的数据映射元素.字段可以在报告中的表达式进行组合,以获得所需的输出.报表模板可以包含零个或更多的<field>元素.当声明报表字段,数据源应提供相应的数据 ...