oracle创建定时任务

摘要:
简要介绍dbms_Schedur有关计划任务的一些常见过程:1)dbms_schedur。run运行job2)dbms调度程序。stop_Job停止作业。默认情况下,Force为false。Oracle建议在false无法停止时使用true,并在managescheduler权限为dbms_schedur时使用true。drop_ Job删除job4)dbms_ Scheduler。启用Open job5)dbms_schedur。disable禁用作业。force参数用于相关性。如果为TRUE,则即使其他对象依赖该操作,该操作也可以成功。相关视图1)user_ scheduler_Jobs查看作业信息2)user_ scheduler_job_LogjobLog3)user_ scheduler_job_run_Detailsjob运行日志4)user_调度器_runing_运行的作业摘要:oracle调度任务,dbms_作业调用存储过程以创建表。需要显示授权。存储过程定义为authidcurrent_用户也不能,而dbms_调度程序不需要显示授权,因此后者更方便使用。

 一、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创建定时任务》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇C#汉字转为Unicode编码Android窗口系统第一篇---Window的类型与Z-Order确定下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

SQLServer 的存储过程与java交互

一、   存储过程简介 Sql Server的存储过程是一个被命名的存储在服务器上的Transacation-Sql语句集合,是封装重复性工作的一种方法,它支持用户声明的变量、条件执行和其他强大的编程功能。 存储过程相对于其他的数据库访问方法有以下的优点:    (1)重复使用。存储过程可以重复使用,从而可以减少数据库开发人员的工作量。     (2)...

MYSQL中存储过程的创建,调用及语法

MySQL 存储过程是从 MySQL 5.0 开始增加的新功能。存储过程的优点有一箩筐。不过最主要的还是执行效率和SQL 代码封装。特别是 SQL 代码封装功能,如果没有存储过程,在外部程序访问数据库时(例如 PHP),要组织很多 SQL 语句。特别是业务逻辑复杂的时候,一大堆的 SQL 和条件夹杂在 PHP 代码中,让人不寒而栗。现在有了 MySQL 存...

Oracle数据库LOGGING&NOLOGGING模式概述

1.日志记录模式(LOGGING 、FORCE LOGGING 、NOLOGGING) 1.1三者的含义 LOGGING:当创建一个数据库对象时将记录日志信息到联机重做日志文件。LOGGING实际上是对象的一个属性,用来表示在创建对象时是否记录REDO日志,包括在做DML时是否记录REDO日志。一般表上不建议使用NOLOGGING,在创建索引或做大量数据...

ORACLE如何实现函数、包、存储过程的导入和导出

建 议可以用常规的检查,检查一下:数据字典信息/exp 导出结构检查 1.检查 SELECT * FROM ALL_SOURCE t WHERE T.OWNER = '要查询用户' AND t.TYPE = 'PACKAGE BODY' select * from USER_SOURCE where type = 'PACKAGE' 2.exp 结构。检查...

[转]oracle系统表v$session、v$sql字段说明

在本视图中,每一个连接到数据库实例中的 session都拥有一条记录。包括用户 session及后台进程如 DBWR, LGWR, arcchiver等等。 V$SESSION中的常用列 V$SESSION是基础信息视图,用于找寻用户 SID或 SADDR。不过,它也有一些列会动态的变化,可用于检查用户。如例: SQL_HASH_VALUE, SQL_A...

Oracle和SQL server查询数据库中表的创建和最后修改时间

有时候我们需要查看下数据数据库中表的创建时间和最后修改时间,可以通过以下语句实现; Oracle数据库 -- 查看当前用户下的表 SELECT * FROM USER_TABLES -- 查看数据库中所有的表 SELECT * FROM DBA_TABLES -- 查看所有表的创建和最后修改时间 SELECT OBJECT_NAME, CREATED,...