1. 简介
在Oracle 10g之前,我们通过DBMS_JOB来管理定时任务;
而10g之后,则推荐使用DBMS_SCHEDULER来管理定时任务,因为它提供了更强大的功能和灵活的机制。
2. 需要的权限
CREATE JOB -- (必须, 要执行DBMS_SCHEDULER, 需要有create job权限)
CREATE EXTERNAL JOB -- (可选, 创建执行操作系统命令的job时需要)
# 查询用户所拥有的角色以及角色所包含的权限
select * from role_sys_privs where role in (
select granted_role from dba_role_privs where grantee='SCOTT'
) order by role;
# 查询直接授予用户的权限
select * from dba_sys_privs where grantee='SCOTT';
3. 一个简单的Demo
3.1 创建JOB
create table test_t1(id int, create_date date);
create or replace procedure test_p1
is
v_maxId test_t1.id%type := 1;
begin
select nvl(max(id), 0) into v_maxId from test_t1;
insert into test_t1 values(v_maxId + 1, sysdate);
commit;
end test_p1;
/
declare
v_count int := 0;
begin
select count(*) into v_count from user_scheduler_jobs where job_name='TEST_JOB1';
if v_count > 0 then
dbms_scheduler.drop_job('TEST_JOB1');
end if;
dbms_scheduler.create_job (
job_name => 'test_job1',
job_type => 'STORED_PROCEDURE',
job_action => 'TEST_P1',
start_date => sysdate,
repeat_interval => 'FREQ=MINUTELY;INTERVAL=1',
enabled => true
);
end;
/
# 参数说明
job_name : 必选, 任务名称
job_type : 必选, 任务类型(
PLSQL_BLOCK, -- 执行一个PL/SQL匿名快
STORED_PROCEDURE, -- 执行一个存储过程
EXECUTABLE, -- 执行一个外部程序
CHAIN -- 执行一个CHAIN
)
job_action : 必选, 任务内容, 与job_type配合使用
start_date : 可选, 首次执行时间, 为空时表示立即执行
repeat_interval : 可选, 执行频率, 为空时表示只执行一次(
FREQ=MINUTELY; -- 表示间隔单位, 可选值有YEARLY, MONTHLY, WEEKLY, DAILY, HOURLY, MINUTELY, SECONDLY
INTERVAL=1 -- 表示间隔周期
)
enabled : 可选, 是否启用任务
详细参数可参考:
http://docs.oracle.com/cd/E11882_01/appdev.112/e40758/d_sched.htm#ARPLS729603.2 查看JOB执行情况
-- 查看已创建的JOB
select job_name, job_type, enabled, state from user_scheduler_jobs;
-- 查看JOB运行日志
select log_id, log_date, status from user_scheduler_job_run_details where job_name='TEST_JOB1';
3.3 删除JOB
exec dbms_scheduler.drop_job('TEST_JOB1');
# 相关链接
http://blog.itpub.net/7607759/viewspace-610951
http://docs.oracle.com/cd/E11882_01/appdev.112/e40758/d_sched.htm#ARPLS72300
分享到:
相关推荐
oracle dbms_lob
ORA-04063: package body SYS.DBMS_REGISTRY_SYS has errors
NULL 博文链接:https://wuaner.iteye.com/blog/717793
ORACLE数据库使用dbms_stats包手动收集关于表的、索引的统计信息。
作用:DBMS_STATS.GATHER_TABLE_STATS统计表,列,索引的统计信息. DBMS_STATS.GATHER_TABLE_STATS的语法如下: DBMS_STATS.GATHER_TABLE_STATS ( ownname VARCHAR2, tabname VARCHAR2, partname VARCHAR2, estimate_...
Oracle DOM编程 文档,有要的没 Start from toc.htm DBMS_XMLDOM DBMS_XMLPARSER DBMS_XMLQUERY
给大家详细介绍了dbms_job的用法,用于安排和管理作业队列,通过使用作业,可以使ORACLE数据库定期执行特定的任务。有需要的朋友们可以参考借鉴。
DBMS JOB包创建ORACLE定时任务
dbms_obfuscation_toolkit加密解密数据
dbms_scheduler.create_job ( job_name => 'AGENT_LIQUIDATION_JOB', job_type => 'STORED_PROCEDURE', job_action => 'AGENT_LIQUIDATION.LIQUIDATION', --存储过程名 start_date => sysdate, repeat_...
通过此版本可以把oracle时区版本调整到为最新版本,一般配合时区补丁使用 可以参考https://blog.csdn.net/weixin_43885834/article/details/105745901 https://download.csdn.net/download/weixin_43885834/12360971...
DBMS_XPLAN是Oracle提供的一个用于查看SQL计划,包括执行计划和解释计划的包;在以前查看SQL执行计划的时候,我都是使用set autotrace命令,不过现在看来,DBMS_XPLAN包给出了更加简化的获取和显示计划的方式。 这5...
对于偶尔需要进行 重做日志 解释的人(或者记力不是特别强的牛人)来讲,可能不太记得完整的DBMS_...鉴于以上的种种不便,在下对LOGMNER程序包,进行了封装,方便大量使用ORACLE 强大的日志分析工具dbms_logmner.
Oracle 18c bug 执行 DBMS_PDB.CHECK_PLUG_COMPATIBILITY报错_ITPUB博客.mhtml
oracle中DBMS_SQL的使用,详细讲解oracle DBMS_SQL的使用办法
有用的代码段,它将DBMS_JOB间隔值转换为日历语法。
支持ArcGIS10.2版本的PostgreSQL_DBMS_for_windows_922,ESRI官方原版资源。
Oracle 在10g 版本以前,计划任务用的是DBMS_JOB 包,10g 版本引入DBMS_SCHEDULER 来替代先前的DBMS_JOB,在功能方面,它比DBMS_JOB 提供了更强大的功能和更灵活的机制 管理,但DBMS_JOB 包的使用相对比较简单,也基本...
Oracle实用工具RMAN的应用为DBA管理多个Oracle数据库提供了集中备份管理与恢复控制的机制,大大地减轻了DBA的工作压力,而DBMS_JOB包的使用增强了存储过程的应用功能,这样,他们就可以从备份数据及重复处理数据的...