oracle Job 管理
oracle中job的interval设置方法

oracle中job的interval设置方法一、oracle中job设置interval方法1.简介:Oracle job调度功能是Oracle数据库中一种基本功能,它使数据库空闲期间可以自动执行各种类型的数据库任务,比如自动执行一些存储过程、自动执行一些脚本文件、每天时刻自动归档、每周时刻自动备份等,而interval是job功能的主要设定参数,它可以指定一些job功能的调度间隔、时间、频率等。
2.interval的设置方法:(1)使用scheduler_job_run_details视图Oracle数据库提供了scheduler_job_run_details视图,它可以获取未来执行一些任务的间隔时间信息,以及一些任务未来的执行时间等信息。
这个视图中有几个字段,比如next_run_date(下一次执行时间)、interval_value(间隔数值)、interval_unit(间隔单位)等,使用者可以根据这些字段的信息来确定一些任务的调度设置。
例如,下面一段sql查询语句可以获取job_name为test_job的间隔设置:SELECT job_name, interval_value, interval_unit,next_run_date FROM scheduler_job_run_details WHERE job_name = 'test_job';(2)使用dbms_scheduler.set_interval_in_seconds函数Oracle数据库也提供了一个内置函数dbms_scheduler.set_interval_in_seconds,这个函数可以设置job的interval,它接收3个参数,即job的名称、间隔的数值(以秒为单位)以及间隔的单位,使用者只需要按照上述要求定义即可。
例如,下面一段sql语句可以设置job_name为test_job的运行间隔时间为每天60秒:。
oracle job语法详解

oracle job语法详解
Oracle的JOB语法主要用于调度和执行任务。
以下是关于Oracle JOB的详细语法解释:
1. SUBMIT
`SUBMIT` 是一个过程,用于提交一个作业。
它有多个参数,包括:
+ `job`:由 `SUBMIT` 过程返回的二进制整数,表示作业的标识符。
+ `what`:将被执行的PL/SQL代码块。
+ `next_date`:标识何时将运行这个工作。
+ `interval`:标识这个工作何时将被重新执行。
+ `no_parse`:指示此工作在提交时或执行时是否应进行语法分析。
如果为TRUE,PL/SQL代码在第一次执行时应进行语法分析;如果为FALSE,PL/SQL代码应立即进行语法分析。
2. User_Export
`User_Export` 过程返回一个命令,用于安排一个已存在的工作以便重新提交。
它有两个参数:`job` 和 `my_call`。
+ `job`:标识一个已安排的工作。
+ `my_call`:包含在它的当前状态重新提交此工作所需要的正文。
3. What
`What` 过程允许在工作执行时重新设置此正在运行的命令。
这些过程和参数共同协作,使您能够创建、调度和重新调度Oracle数据库中的作业。
如果您需要更深入的了解或遇到任何问题,建议查阅Oracle官方文档或咨询数据库专家。
Oracle_JOB问题解决汇总

Oracle JOB问题解决汇总Oracle JOB问题解决汇总一。
job的运行频率设置1.每天固定时间运行,比如早上8:10分钟:Trunc(Sysdate+1) + (8*60+10)/24*602.Toad中提供的:每天:trunc(sysdate+1)每周:trunc(sysdate+7)每月:trunc(sysdate+30)每个星期日:next_day(trunc(sysdate),'SUNDAY')每天6点:trunc(sysdate+1)+6/24半个小时:sysdate+30/14403.每个小时的第15分钟运行,比如:8:15,9:15,10:15...:trunc(sysdate,'hh')+75/1440。
原先我设置的是trunc(sysdate,'hh')+15/1440,发现居然不行。
二。
JOB为什么不运行?1.先来了解一下JOB的参数说明:与job相关的参数一个是job_queue_processes,这个是运行JOB时候所起的进程数,当然系统里面JOB大于这个数值后,就会有排队等候的,最小值是0,表示不运行JOB,最大值是36,在OS上对应的进程时SNPn,9i以后OS上管理JOB 的进程叫CJQn。
可以使用下面这个SQL确定目前有几个SNP/CJQ在运行。
select * from v$bgprocess,这个paddr不为空的snp/cjq进程就是目前空闲的进程,有的表示正在工作的进程。
另外一个是job_queue_interval,范围在1--3600之间,单位是秒,这个是唤醒JOB的process,因为每次snp运行完他就休息了,需要定期唤醒他,这个值不能太小,太小会影响数据库的性能。
2.诊断:先确定上面这两个参数设置是否正确,特别是第一个参数,设置为0了,所有JOB就不会跑,确认无误后,我们继续向下。
3.使用下面的SQL察看JOB的的broken,last_date和next_date,last_date是指最近一次job运行成功的结束时间,next_date是根据设置的频率计算的下次执行时间,根据这个信息就可以判断JOB上次是否正常,还可以判断下次的时间对不对,SQL如下:select * from dba_jobs有时候我们发现他的next_date是4000年1月1日,说明job要不就是在running,要不就是状态是break(broken=Y),如果发现JOB的broken值为Y,找用户了解一下,确定该JOB是否可以broken,如果不能broken,那就把broken值修改成N,修改再使用上面的SQL察看就发现他的last_date已经变了,JOB即可正常运行,修改broken状态的SQL如下:declareBEGINDBMS_JOB.BROKEN(<JOB_ID>,FALSE);END;select * from dba_jobs_running如果发现JOB已经Run了很久了还没有结束,就要查原因了。
oracle dbms_job 参数

英文回复:DBMS—JOB is an important functional module in the Oracle database for managing back—office operations。
It has achieved effective control of operations through the creation,movement and management of back—office operations in the database。
When using DBMS—JOB, a clear set of parameters is required to ensure that operations are carried out as planned。
These parameters include JOB, WHO, NEXT—DATE,INTERVAL and NO—PARSE, each with important functions。
We should fully understand and rationalize these parameters in order to optimize the management role of DBMS—JOB and improve the efficiency and quality of database management。
DBMS_JOB是Oracle数据库中负责管理后台作业的重要功能模块。
它通过创建、调度和管理数据库中的后台作业,实现了对作业执行的有效控制。
使用DBMS_JOB时,需要明确指定一系列参数,以确保作业按计划顺利执行。
这些参数包括JOB、WHAT、NEXT_DATE、INTERVAL和NO_PARSE等,各自承担着重要的功能。
我们应当充分理解和合理运用这些参数,以充分发挥DBMS_JOB的管理作用,提高数据库管理的效率和质量。
oracle如何使用作业

oracle如何使用作业Oracle可以使用作业来自动执行重复性任务,如定期备份数据库、生成报表等。
以下是Oracle使用作业的步骤:1. 创建作业:使用CREATE_JOB语句来创建作业。
可以指定作业的名称、调度时间表、执行程序、参数等信息。
2. 创建程序:使用CREATE_PROGRAM语句来创建程序。
程序是作业执行的实际任务,可以是存储过程、PL/SQL块、SQL脚本等。
3. 创建调度时间表:使用DBMS_SCHEDULER包中的CREATE_SCHEDULE语句或在Oracle Enterprise Manager工具中创建调度时间表。
调度时间表定义了作业的执行计划,可以指定作业的执行频率和时间范围。
4. 链接作业、程序和时间表:使用DBMS_SCHEDULER包中的CREATE_JOB语句,将作业与程序和时间表进行关联。
5. 启用作业:使用DBMS_SCHEDULER包中的ENABLE函数启用作业。
只有处于启用状态的作业才能被调度执行。
6. 监控作业执行:可以使用DBA_SCHEDULER_JOBS视图来监控作业的执行情况。
可以查看作业的状态、执行次数、最后执行时间等信息。
7. 管理作业:使用DBMS_SCHEDULER包中的ALTER_JOB函数可以修改作业的属性,如修改作业的执行时间、禁用作业等。
使用DROP_JOB函数可以删除作业。
8. 取消作业:使用DBMS_SCHEDULER包中的DISABLE函数可以取消作业的调度。
需要注意的是,Oracle的作业管理功能在某些版本中可能会有所差异,具体使用方法可以参考相关版本的文档。
oracle的job用法

oracle的job用法Oracle是行业内广泛使用的数据库管理系统,它具有高性能、可靠性强等优势,所以在实际应用中也非常广泛。
Oracle的job用法是一种非常实用的功能,可以帮助管理员轻松地管理定时任务。
本文将介绍Oracle的job用法及其实现方式。
Oracle的job用法可以用于定时启动存储过程、脚本等操作,当然还可以定时备份数据库等。
使用Oracle的job用法可以很方便地实现定时任务,并且可以自定义任务的时间、周期、内容等,极大地提高了管理员的工作效率。
首先,Oracle的job用法需要通过PL/SQL语言进行实现。
它包含了三个关键的概念:job、job_class和job_schedule。
job是指要进行的任务,job_class是指任务的类型,job_schedule是指任务的执行时间和周期。
在创建job时,需要指定它所属的job_class以及job_schedule,以便于系统能够准确地执行任务。
Oracle的job用法的实现过程可以分为以下几个步骤:1. 创建job_class。
在创建job之前,需要先创建job_class。
job_class定义了任务的类型,可以根据需要自行定义。
2. 创建job_schedule。
job_schedule定义了任务的执行时间和周期。
可以设置任务的执行时间、日期、星期、月份等,以确保任务在预定的时间内被执行。
使用job_schedule时,需要注意设置任务的时间和周期,否则任务可能无法按时执行。
3. 创建job。
创建job时,需要指定它所属的job_class以及job_schedule。
任务的内容可以是存储过程、脚本、备份操作等,管理员可以根据需要自行定义。
创建job时,还可以设置任务的参数、优先级、日志等信息。
4. 启动job。
创建job之后,需要手动启动它才能开始执行。
通过调用dbms_job.submit()函数,可以启动一个job。
dbms jobs和default job class

dbms jobs和default job classDBMS_JOBS和DEFAULT_JOB_CLASS是Oracle数据库中与作业调度相关的两个重要概念。
以下是关于它们的详细解释:DBMS_JOB:DBMS_JOB是一个向用户提供的包,可以向作业队列提交一个作业,并在指定时间运行这个作业。
作业队列是由后台运行的snp进程控制,这个进程用于实现数据库快照和作业队列。
数据库初始参数(init.ora文件中,v$system_parameter)job_queue_processes决定可以启动多少进程,数值必须>0。
DBMS_JOB允许用户在Oracle数据库中创建、修改和删除作业。
通过调用DBMS_JOB.SUBMIT包,用户可以将作业添加到作业队列中。
每个作业都有一个唯一的作业ID,通过该ID可以对作业进行查询和操作。
需要注意的是,DBMS_JOB是较早的作业调度系统,适用于较旧版本的Oracle数据库。
在新版本的Oracle数据库中,建议使用DBMS_SCHEDULER进行作业调度。
DEFAULT_JOB_CLASS:DEFAULT_JOB_CLASS是一个默认的作业类,用于将作业分配到相应的作业类中。
作业类是一个分类,用于将相似的作业组织在一起。
通过将作业分配到相应的作业类,可以对它们进行统一的管理和调度。
默认情况下,如果没有指定作业的类,则DBMS将作业分配给DEFAULT_JOB_CLASS。
可以通过创建自定义的作业类来满足特定的调度需求。
总结:DBMS_JOBS是用于创建、修改和删除作业的包,而DEFAULT_JOB_CLASS是一个默认的作业类,用于将作业分配到相应的分类中。
通过合理使用这两个概念,可以有效地管理和调度Oracle数据库中的作业。
oracle dbms_jobs的sql语句

第一部分:概述1. 介绍oracle dbms_jobs的概念和作用欢迎阅读本文,今天我们将来讨论oracle dbms_jobs的sql语句。
在Oracle数据库中,dbms_jobs是一种用来管理作业的工具,它可以帮助我们在数据库中定期执行特定的任务。
通过使用dbms_jobs,我们可以轻松地设置和管理数据库中的作业,以便在需要的时候自动运行。
第二部分:dbms_jobs的常用sql语句2. 创建一个作业如果我们想要在数据库中创建一个新的作业,可以使用以下SQL语句:```sqlDECLAREjobno number;BEGINdbms_job.submit(job => jobno,what => 'your_job_procedure;', -- 作业的具体内容next_date => SYSDATE, -- 下一次运行的时间interval => 'SYSDATE + 1', -- 作业的运行间隔no_parse => TRUE);COMMIT;END;```3. 查看作业的状态如果我们想要查看数据库中的作业状态,可以使用以下SQL语句: ```sqlSELECT job, what, next_date, intervalFROM dba_jobs;```4. 修改作业的运行时间如果我们需要修改一个作业的下一次运行时间,可以使用以下SQL 语句:```sqlBEGINdbms_job.BROKEN(jobno, TRUE, SYSDATE + 1);COMMIT;END;```5. 删除一个作业如果我们需要删除数据库中的某个作业,可以使用以下SQL语句:```sqlBEGINdbms_job.remove(jobno);COMMIT;END;```第三部分:结语6. 总结oracle dbms_jobs的sql语句通过本文的介绍,我们了解了Oracle数据库中管理作业的重要工具dbms_jobs,并学习了一些常用的SQL语句。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Oracle Job 管理1.实验环境Oracle 9i2.实验资源创建表和存储过程SQL> drop table date_log;SQL> CREA TE TABLE DA TE_LOG(create_date DA TE CONSTRAINT create_date_pk PRIMARY KEY);SQL> CREA TE OR REPLACE PROCEDURE create_date_log_rowISBEGININSERT INTO date_log(create_date)V ALUES(sysdate);END;/3.实验内容创建JOB,定期调用create_date_log_row 存储过程,向create_date表中插入数据4.实验目的了解使用命令,来管理oracle Job.5.相关知识job相关的系统参数Job_queue_processes = 2; 这个是运行JOB时候所起用的进程数,当然系统里面JOB大于这个数值后,就会有排队等候的,最小值是0,表示不运行JOB,最大值是36 Jpb_queue_interval = 30;范围在1--3600之间,单位是秒。
定期唤醒进程,判断有没有要执行的job. 任务调度程序每30秒唤醒一次来确定是否要执行任务Alter system set job_queue_processes = 2; 修改参数可以通过下面的方法重启进程一次指令(将job_queue_processes设置为0,在设置为原来的值)如下:alter system set job_queue_processes=0 --关闭job进程,等待5--10秒钟alter system set job_quene_processes=5 --恢复原来的值Job相关命令创建DBMS_JOB.SUBMIT(:jobno,//job号’your_procedure;’,//要执行的过程trunc(sysdate)+1/24,//下次执行时间’trunc(sysdate)+1/24+1’//每次间隔时间);删除job:dbms_job.remove(jobno); //job号修改job:dbms_job.what(jobno,what); //job号,修改下次执行时间:dbms_job.next_date(job,next_date);修改间隔时间:dbms_job.interval(job,interval);停止job: dbms_j ob.broken(job,true);启用job: dbm s_job.broken(job,fal se,next_date); // next_date,下次执行时间如果不填next_date参数,则马上执行j ob启动job:dbms_job.run(jobno);注意执行命令后,要执行commit;命令相关的系统表和视图dba_jobs_runningdba_jobs(结果见附件)user_jobs(结果见附件)6.实验步骤第一步创建任务SQL> V AR jobno NUMBER; --存储job号码SQL> begindbms_job.submit(:job,'MYPROC;',sysdate,'sysdate+1/1440');Commit;end;SQL> PRINT jobno; ---打印新建的job号JOBNO----------5第二步查看job执行情况SQL> select * from date_log;CREA TE_DA T----------05-1月-10第三部查看job的参数值SQL> select last_date,last_sec,next_date,next_sec,interval,broken from user_jobs where job = 5;LAST_DA TE LAST_SEC NEXT_DA TE NEXT_SEC INTERV AL BROKEN------------ ---------------- ---------- --------------- -------------- --------------05-月-10 10:48:29 05-月-10 10:49:29 sysdate+1/(24*60) NLAST_DA TE 第一次执行日期LAST_SEC 第一次执行时间NEXT_DA TE 下一次执行日期NEXT_SEC 下一次执行时间INTERV AL 执行频率BROKEN 是否终端Y是N没有Job ORACLE分配的作业IDUser_jobs表的其他字段请看附录第三步停止jobSQL> exec dbms_job.broken(5,true);commit;//必须提交否则无效查看数据表中状态SQL> select broken from user_jobs where job = 5;broken------------Y第四步启动jobSQL> exec dbms_job.broken(5,false);commit; //必须提交否则无效查看数据表中状态SQL> select broken from user_jobs where job = 5;broken------------N第五步修改job下次执行时间查询目前下次执行时间SQL> select next_date,next_sec from user_jobs;NEXT_DA TE NEXT_SEC---------- ----------------05-1月-10 12:02:25修改下次执行之间SQL> exec dbms_job.next_date(5,sysdate+2/(24*60));commit;查询目前下次执行时间SQL> select next_date,next_sec from user_jobs;NEXT_DA TE NEXT_SEC---------- ----------------05-1月-10 12:05:58第五步修改job执行频率SQL> exec dbms_job.interval(5,'sysdate+3/(24*60)');commit;查询执行频率SQL> select interval from user_jobs;INTERV AL--------------------------------------sysdate+3/(24*60)第六步骤删除JOBSQL> exec dbms_job.REMOVE(5);commit;7.附录:DBA_JOBS=======================================字段(列)类型描述JOB NUMBER 任务的唯一标示号LOG_USER V ARCHAR2(30) 提交任务的用户PRIV_USER V ARCHAR2(30) 赋予任务权限的用户SCHEMA_USER V ARCHAR2(30) 对任务作语法分析的用户模式LAST_DA TE DA TE 最后一次成功运行任务的时间LAST_SEC V ARCHAR2(8) 如HH24:MM:SS格式的last_date日期的小时,分钟和秒THIS_DA TE DA TE 正在运行任务的开始时间,如果没有运行任务则为nullTHIS_SEC V ARCHAR2(8) 如HH24:MM:SS格式的this_date日期的小时,分钟和秒NEXT_DA TE DA TE 下一次定时运行任务的时间NEXT_SEC V ARCHAR2(8) 如HH24:MM:SS格式的next_date日期的小时,分钟和秒TOTAL_TIME NUMBER 该任务运行所需要的总时间,单位为秒BROKEN V ARCHAR2(1) 标志参数,Y标示任务中断,以后不会运行INTERV AL V ARCHAR2(200) 用于计算下一运行时间的表达式FAILURES NUMBER 任务运行连续没有成功的次数WHA T V ARCHAR2(2000) 执行任务的PL/SQL块CURRENT_SESSION_LABEL RA W MLSLABEL 该任务的信任Oracle会话符CLEARANCE_HI RA W MLSLABEL 该任务可信任的Oracle最大间隙CLEARANCE_LO RA W MLSLABEL 该任务可信任的Oracle最小间隙NLS_ENV V ARCHAR2(2000) 任务运行的NLS会话设置MISC_ENV RA W(32) 任务运行的其他一些会话参数描述INTERV AL参数值每天午夜12点'TRUNC(SYSDA TE + 1)'每天早上8点30分'TRUNC(SYSDA TE + 1) + (8*60+30)/(24*60)'每星期二中午12点'NEXT_DA Y(TRUNC(SYSDA TE ), ''TUESDAY'' ) + 12/24'每个月第一天的午夜12点'TRUNC(LAST_DAY(SYSDA TE ) + 1)'每个季度最后一天的晚上11点'TRUNC(ADD_MONTHS(SYSDA TE + 2/24, 3 ), 'Q' ) -1/24' 每星期六和日早上6点10分'TRUNC(LEAST(NEXT_DAY(SYSDA TE, ''SA TURDAY"), NEXT_DAY(SYSDA TE, "SUNDAY"))) + (6×60+10)/(24×60)'####################################################################。