oracle创建定时任务
一、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创建定时任务的更多相关文章
- oracle数据库定时任务dbms_job的用法详解
本文来源:Ruthless <oracle数据库定时任务dbms_job的用法详解> 一.dbms_job涉及到的知识点 1.创建job: variable jobno number; ...
- linux创建定时任务,定时执行sql
终于弄清楚一个问题了.linux创建定时任务,定时执行sql,其中分为两个case. case-1 sql语句较少,因此直接在 shell脚本中 写sql语句.如下: [oracle@Oracle11 ...
- oracle创建定时器详解|interval属性
定时任务首先先创建定时任务中的存储过程 create or replace procedure pro_jggl as ...
- Oracle Job定时任务详解、跨数据库数据同步
业务需求,需要与A公司做数据对接,我们公司用的Oracle,A公司用的SQL Server数据库,如何跨数据库建立连接呢?这里使用的是DBLink,不会配置的请看我的另外一篇博客:https://ww ...
- 利用Oracle创建表空间和用户
本文仅用于学习交流,商业用途请支持正版!转载请注明:http://www.cnblogs.com/mxbs/p/6217152.html 第一步,创建表空间 以SYS/sys账户和SYSDBA身份登录 ...
- 利用Oracle创建数据库
本文仅用于学习交流,商业用途请支持正版!转载请注明:http://www.cnblogs.com/mxbs/p/6217151.html 数据库的创建 打开"所有程序"-" ...
- Oracle创建数据库
Oracle创建数据库有三种方式:一.使用DBCA(Database Configuration Assistant 数据库配置助手):二.使用 create database指令:三.在安装数据库软 ...
- oracle创建表之前判断表是否存在,如果存在则删除已有表
Mysql 创建表之前判断表是否存在,如果存在则删除已有表 DROP TABLE IF EXISTS sys_area; CREATE TABLE sys_area ( id int NOT NULL ...
- oracle创建数据库和用户
以前开发的时候用得比较多的是mysql和sql server,oracle用的比较少,用起来比较生疏,mysql和sql server用起来比较类似,就oracle的使用方式和他们不同,oracle在 ...
随机推荐
- Codeforces Round #599 (Div. 2)的简单题题解
难题不会啊…… 我感觉写这个的原因就是因为……无聊要给大家翻译题面 A. Maximum Square 简单题意: 有$n$条长为$a_i$,宽为1的木板,现在你可以随便抽几个拼在一起,然后你要从这一 ...
- light oj 1095 组合数学
#include <stdio.h> #include <string.h> #include <stdlib.h> #include <math.h> ...
- 清空标签间的内容(innerHTML)和 value
jquery 方式: 清空标签的innerHTML: $("#divId").html(""); 清空标签的value: $("#divId" ...
- scope标签笔记
scope的几个属性详解: 1.compile:默认值 他表示被依赖项目需要参与当前项目的编译,还有后续的测试,运行周期也参与其中,是一个比较强的依赖.打包的时候通常需要包含进去. 2.test: ...
- HZOI2019序列
题目链接:https://www.cnblogs.com/Juve/articles/11186805.html(密码是我的一个oj用户名) 题解: 这题我考试打的暴力,只有5分. 一开始理解错题意了 ...
- Django项目:CRM(客户关系管理系统)--78--68PerfectCRM实现CRM业务流程(bpm)报名缴费分页
# pagination.py # ————————68PerfectCRM实现CRM业务流程(bpm)报名缴费分页———————— from django.utils.safestring impo ...
- 微信小程序slider应用,可加减的slider控制
<view class="control-w "> <block wx:for="{{controls}}" wx:key="id& ...
- PAT甲级——A1052 Linked List Sorting
A linked list consists of a series of structures, which are not necessarily adjacent in memory. We a ...
- PAT甲级——A1010 Radix
Given a pair of positive integers, for example, 6 and 110, can this equation 6 = 110 be true? The an ...
- MySQL数据库_索引_事务_优化 _锁_存储引擎_存储过程_CAP
##一.基础 ## * 插入 INSERT INTO table_name ( field1, field2,...fieldN ) ...