扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
通过plsql查看tables、views等文件夹,找到定时器对应的DBMS_Jobs文件夹。
雄县网站制作公司哪家好,找创新互联建站!从网页设计、网站建设、微信开发、APP开发、响应式网站等网站项目制作,到程序开发,运营维护。创新互联建站于2013年创立到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联建站。
在文件夹或者在已有的定时器上右键 new... 创建一个新的job(定时器)
输入红色选中的必输参数。What里面是一些存储过程,可以是一个或者多个。多个之间用分好;隔开,可以数据一下注释说明,格式“/*存过说明*/。点击应用即可保存。点击View SQL可以查看job对应的sql脚本。
如果想查看一些脚本,处理通过打开文件夹的方式,也可以使用更方便的sql语句进行查看。
SELECT * FROM dba_jobs;
注意,如果next_date是4000-1-1表示这个脚本已经是停止状态。
如果想查询某个存储过程对应的哪个job可以通过dba_jobs表中what字段根据条件查询查看job.
dba_jobs中的job字段对应的值就和DBMS_Jobs中对应的数字是一致的,可以对信息进行修改更新。
--当前用户定时任务
select count(*) from user_jobs;
--有权限访问的定时任务
select count(*) from all_jobs;
--整个数据库所有定时任务
select count(*) from dba_jobs;
你提供的信息太少,我估计你说的是oracle的定时处理任务的机制。查看任务队列,如果要查看当前用户的定时任务队列,可以通过查询user_jobs视图或dba_jobs.
select last_date from user_jobs;可以查看所有任务上次成功执行的时间。
那是自动任务创建job,你这里具体怎么改表没说,我就大致举个例子declare
jobno number;
begin
dbms_job.submit(jobno,'begin update table1 set a=''test''; end;',trunc(sysdate)+1,'trunc(sysdate)+1');
end;
这里第一个参数是任务编号,系统自动赋值。也可以采用isubmit来手动指定第二个参数是需要执行的任务过程,代码长的话,可以将它写到一个存储过程里,再放到里面调用,比如'pro_test;' (pro_test假定为一个存储过程名)第三个参数是,自动任务第一次执行的时间,如果需要它立即执行,则使用sysdate最后一个参数,系统根据该参数的值指定下一次的执行时间。如果需要每天0点执行,就用我上面写的 创建好job后,可以在all_jobs中查询它的状态不需要时,使用dbms_job.remove来移除。dbms_job.broken可以用来停止和启动任务
当Oracle发现当前时间大于等于JOB的NEXT_DATE,且JOB的BROKEN为否,则会执行这个job。跟中间停了多长时间的机没有关系。
当JOB执行完,Oracle会根据NEXT_DATE和INTERVAL参数来确定下次执行时间,也就是NEXT_DATE。
另外你说的第二种情况,在正式环境中基本不会出现。既然是需要job运行,怎么可能还存在那么长的停机时间?绝大部分正式环境都是7*24的。
如果报错,可以检查ALERT_$ORACLE_SID.ora,如果是正在运行,可以查询DBA_JOBS_RUNNING。对于正常执行的JOB没有记录,不过你可以自己建立相应的日志表进行记录
主要是管理Jobs物件(Jobs页签)
JOB分类有dba_jobs
,
all_jobs
,
user_jobs
,
dba_jobs_running
查询所有JOB
SELECT
JOB,
NEXT_DATE,
NEXT_SEC,
FAILURES,
BROKEN
FROM
ALL_JOBS;
或
SELECT
*
FROM
ALL_JOBS;
删除JOB
(一个一个删,我不记得有没有一次全删的命令)
begin
dbms_job.remove(:job);
--:job可以用dba_jobs.job的值代替如:1198
end;
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流