Job管理字典(dba_jobs):
SQL> select * from dba_jobs;
dba_jobs:描述数据库里所有的Job
dba_jobs字典相关字段介绍:
====================================================
字段(列) 类型 描述
JOB NUMBER 任务的唯一标示号
LOG_USER VARCHAR2(30) 提交任务的用户
PRIV_USER VARCHAR2(30) 赋予任务权限的用户
SCHEMA_USER VARCHAR2(30) 对任务作语法分析的用户模式
LAST_DATE DATE 最后一次成功运行任务的时间
LAST_SEC VARCHAR2(8) 如HH24:MM:SS格式的last_date日期的小时,分钟和秒
THIS_DATE DATE 正在运行任务的开始时间,如果没有运行任务则为null
THIS_SEC VARCHAR2(8) 如HH24:MM:SS格式的this_date日期的小时,分钟和秒
NEXT_DATE DATE 下一次定时运行任务的时间
NEXT_SEC VARCHAR2(8) 如HH24:MM:SS格式的next_date日期的小时,分钟和秒
TOTAL_TIME NUMBER 该任务运行所需要的总时间,单位为秒
BROKEN VARCHAR2(1) 标志参数,Y标示任务中断,以后不会运行
INTERVAL VARCHAR2(200) 用于计算下一运行时间的表达式
FAILURES NUMBER 任务运行连续没有成功的次数
WHAT VARCHAR2(2000) 执行任务的PL/SQL块
CURRENT_SESSION_LABEL RAW MLSLABEL 该任务的信任Oracle会话符
CLEARANCE_HI RAW MLSLABEL 该任务可信任的Oracle最大间隙
CLEARANCE_LO RAW MLSLABEL 该任务可信任的Oracle最小间隙
NLS_ENV VARCHAR2(2000) 任务运行的NLS会话设置
MISC_ENV RAW(32) 任务运行的其他一些会话参数
===================================================================================
相关View
dba_jobs
all_jobs
user_jobs
dba_jobs_running 包含正在运行job相关信息
相关参数:
初始化相关参数job_queue_processes
alter system set job_queue_processes=39 scope=spfile;//最大值不能超过1000 ;job_queue_interval = 10 //调度作业刷新频率秒为单位
show paramter background_dump_dest //诊断故障相关目录文件
包括(alter.log 和trace)
管理命令:
停止作业
SQL> exec dbms_job.broken(1,true) //1:Job 唯一标识号
PL/SQL 过程已成功完成。
SQL>commit //必须提交否则无效
启动作业
SQL> exec dbms_job.broken(1,false)
x
PL/SQL 过程已成功完成。
===================================================================================
exec dbms_job.broken(:job) 停止
exec dbms_job.broken(186,true) //标记位broken
exec dbms_job.broken(186,false)//标记为非broken
exec dbms_job.broken(186,false,next_day(sysdate,'monday')) //标记为非broken,指定执行时间
exec dbms_job.remove(:job);删除
exec dbms_job.remove(186);
commit;
创建JOB
variable jobno number;
begin
dbms_job.submit(:jobno, 'statspack.snap;', trunc(sysdate+1/24,'HH'), 'trunc(SYSDATE+1/24,''HH'')', TRUE, :instno);
commit;
end;
print jobno
例如,我们已经建立了一个存储过程,其名称为my_job,在sql/plus中以scott用户身份登录,执行如下命令:
sql> variable n number;
sql> begin
dbms_job.submit(:n‘my_job;’,sysdate,
‘sysdate+1/360’);
commit;
end;
Sql> print :n;
系统提示执行成功。
Sql> print :n;
系统打印此任务的编号,例如结果为300。
简单例子
创建测试表
SQL> create table TEST(a date);
表已创建。
创建一个自定义过程
SQL> create or replace procedure MYPROC as
2 begin
3 insert into TEST values(sysdate);
4 end;
5 /
过程已创建。
创建JOB
SQL> variable job1 number;
SQL>
SQL> begin
2 dbms_job.submit(:job1,'MYPROC;',sysdate,'sysdate+1/1440'); --每天1440分钟,即一分钟运行test过程一次
3 end;
4 /
PL/SQL 过程已成功完成。
运行JOB
SQL> begin
2 dbms_job.run(:job1);
3 end;
4 /
PL/SQL 过程已成功完成。
SQL> select to_char(a,'yyyy/mm/dd hh24:mi:ss') 时间 from TEST;
时间
-------------------
2001/01/07 23:51:21
2001/01/07 23:52:22
2001/01/07 23:53:24
删除JOB
SQL> begin
2 dbms_job.remove(:job1);
3 end;
4 /
PL/SQL 过程已成功完成。
===================================================================================
a、利用dbms_job.run()立即执行该job
sql>begin
sql>dbms_job.run(:jobno) 该jobno为submit过程提交时返回的job number
sql>end;
sql>/
b、利用dbms_job.broken()重新将broken标记为false
sql>begin
sql>dbms_job.broken (:job,false,next_date)
sql>end;
sql>/
===================================================================================
SQL> create table a(a date);
Table created
创建一个过程
SQL> create or replace procedure test as
2 begin
3 insert into a values(sysdate);
4 end;
5 /
Procedure created
提交作业
SQL> declare
2 job1 number; //定义一个数字型变量
3 begin
4 dbms_job.submit(:job1,'test;',sysdate,'sysdate+1/1440'); //按分钟算一天1440分钟
5 end;
6 /
PL/SQL procedure successfully completed
job1
---------
4
SQL> commit;
Commit complete
运行作业
SQL> begin
2 dbms_job.run(4);
3 end;
4 /
PL/SQL procedure successfully completed
删除作业
SQL> begin
2 dbms_job.remove(4);
3 end;
4 /
PL/SQL procedure successfully completed
SQL> commit;
Commit complete
job change//修改作业
execute dbms_job.change(186,null,null,'sysdate+3');
execute dbms_job.change(186,'scott.test(update)');
执行计划
描述 INTERVAL参数值
每天午夜12点 'TRUNC(SYSDATE + 1)'
每天早上8点30分 'TRUNC(SYSDATE + 1) + (8*60+30)/(24*60)'
每星期二中午12点 'NEXT_DAY(TRUNC(SYSDATE ), ''TUESDAY'' ) + 12/24'
每个月第一天的午夜12点 'TRUNC(LAST_DAY(SYSDATE ) + 1)'
每个季度最后一天的晚上11点 'TRUNC(ADD_MONTHS(SYSDATE + 2/24, 3 ), 'Q' ) -1/24'
每星期六和日早上6点10分 'TRUNC(LEAST(NEXT_DAY(SYSDATE, ''SATURDAY"), NEXT_DAY(SYSDATE, "SUNDAY"))) + (6×60+10)/(24×60)'
分享到:
相关推荐
Oracle Job管理是Oracle数据库中的一个关键特性,用于自动化执行数据库任务,如定时备份、数据清理或报告生成等。以下是对Oracle Job管理的详细解释: 1. **创建Job**: 在Oracle中,你可以通过创建存储过程来定义...
综上所述,Oracle Job是一个强大的工具,能帮助数据库管理员自动化执行各种任务。通过灵活的配置,可以实现定时执行、根据事件触发、异常处理等功能,极大地提高了数据库的管理和维护效率。理解并熟练掌握这些使用...
Oracle Job管理是数据库中用于定时执行任务的一种机制,它允许用户安排存储过程、PL/SQL块或其他数据库操作在预设的时间点自动运行。在Oracle 9i版本中,我们可以使用SQL命令或者DBMS_SCHEDULER包来创建、修改和管理...
在Oracle数据库管理中,有时我们需要停止正在运行的JOB,这可能是由于各种原因,如发现错误、优化性能或调整资源分配。本文将详细阐述如何在Oracle中查询并停止正在运行的JOB,包括关键步骤、涉及的表与视图以及具体...
Oracle Job 提供了一种灵活的方式来自动化数据库维护任务,确保在特定时间执行关键操作,对于大型企业级应用和数据库管理系统尤其重要。了解并熟练使用 Job 功能,有助于提高数据库的效率和可靠性。
在Oracle数据库中,Job是一种用于调度定期任务的功能,常被用来自动化执行数据库管理中的各种任务,比如备份、清理临时表空间等。Job主要由`DBMS_JOB`包进行管理和控制,此包提供了提交(new job)、删除(delete job)...
Oracle Job的全称是Database Scheduler Job,它通过Oracle Database Scheduler(数据库调度器)进行管理。下面我们将深入探讨Oracle Job的创建、配置、管理和使用等相关知识点。 1. **Oracle Database Scheduler...
Oracle Job是Oracle的DBMS_SCHEDULER或之前版本中的DBMS_JOB包的一部分,它允许数据库管理员规划、监控和管理长时间运行的任务。 Oracle Job的创建通常涉及以下步骤: 1. **创建Job**:使用DBMS_SCHEDULER或DBMS_...
从给定的Oracle Job实例测试通过的描述与代码片段中,我们可以提炼出多个关于Oracle数据库管理、编程与作业调度的关键知识点。以下是对这些知识点的详细解释: ### 1. 创建序列(Sequence) 在Oracle数据库中,...
首先,我们需要理解Oracle中的DBMS_JOB包,这是Oracle提供的一组过程,用于创建、修改和管理JOB。DBMS_JOB包包含以下主要过程: 1. DBMS_JOB.BEGIN_JOB:这个过程用于创建一个新的JOB,它会返回一个job编号,这个...
Oracle的`dbms_job`包提供了多种用于管理JOB的方法: 1. `Broken()`过程用于更新已提交作业的状态,通常用于将一个破碎的作业标记为未破碎。它接受三个参数:作业号(job)、是否破碎(broken)以及下次运行时间...
对于初学者来说,理解如何创建、运行和管理 Oracle Job 是十分重要的。 1. **Job 的创建**: 创建一个 Oracle Job 需要使用 `DBMS_JOB` 包中的 `SUBMIT` 子程序。在提供的示例中,我们看到以下步骤: - 首先,...
你可以使用`DBMS_JOB.INFO`查询Job的状态,或者使用`DBMS_SCHEDULER`包(在Oracle 10g及以后版本推荐)进行更高级的Job管理,包括查看Job日志、暂停、恢复和删除Job。 8. **注意事项**: - 修改`next_date`以适应...
Oracle的Job定时功能是Oracle数据库系统提供的一种自动化任务调度机制,允许用户设定特定的时间点或时间间隔执行数据库操作。在项目开发中,特别是在大数据管理和分析的场景下,定时任务经常被用于更新数据、生成...
在Oracle数据库管理中,创建Job是一项重要的功能,可以帮助用户自动化执行一些周期性的任务,比如定期备份数据、更新统计信息等。本文将详细介绍如何在Oracle环境中创建Job,并通过具体的示例来解释各个步骤。 ####...
3. **事务管理**:Oracle支持分布式事务,XXL-JOB在处理多任务调度时,可能会利用Oracle的事务特性来确保数据的一致性。 4. **连接池配置**:使用合适的Oracle数据库连接池,如C3P0或DBCP,以提高数据库连接的复用...
Oracle 企业管理器(OEM 2.1)使用指南内容 Oracle 企业管理器(OEM 2.1)是 Oracle 公司提供的一款企业管理软件,旨在帮助用户对 Oracle 数据库和相关的系统进行监控和管理。下面是对 Oracle 企业管理器(OEM 2.1...
Oracle案例详细分析:Job任务停止执行 本文通过一次Oracle Job任务异常案例诊断,分析其原因及...Oracle Job任务是Oracle数据库中非常重要的功能,通过对Oracle Job任务的理解和掌握,可以更好地管理和维护数据库。
Oracle 创建 Job 实例 Oracle 创建 Job 实例是指...创建 Job 实例需要遵循特定的步骤和配置,包括确保 Oracle 的工作模式允许启动任务队列管理器、配置任务队列管理器的启动参数、将任务加入到数据库的任务队列中等。
Oracle数据库利用SNP(Scheduler)进程来管理和执行这些JOB。 SNP(Scheduler)进程是Oracle数据库的一个核心组成部分,它的主要职责是监控和执行JOB。SNP的独特之处在于其自我恢复能力——即使SNP进程意外终止,...