更改oracle 表的所有者_详解Oracle定时任务--DBMS_JOB包

概述

Oracle 10g之前,可以使用dbms_job来管理定时任务。10g之后,Oracle引入dbms_scheduler来替代先前的dbms_job,在功能方面,它比dbms_job提供了更强大的功能和更灵活的机制/管理。


DBMS_JOB包

DBMS_JOB包中包含有许多过程和方法

5816d83c6b3c4f98462b9e85a8fd6bc1.png
3e1c533cace64af8618ee2438103f295.png
74d6f3c0e1e777689078011cd2052954.png
46ad8fc5ef1198714a92bdafa27af48a.png

注意:执行上面的任何创建/删除/更改任务的过程后一定要马上commit。

否则不仅会造成更改无效,甚至很有可能造成一些奇怪的现象,比如job停止之类,切记!


JOB_QUEUE_PROCESSES

Oracle有专门的后台进程来执行任务队列。后台进程的数量通过JOB_QUEUE_PROCESSES来设置,可以设为0到1000。*JOB_QUEUE_INTERVAL从9i之后就被废弃了。

需要注意,如果配置了最多1000 个Jnnn进程,并不会看到真的有1000 个进程随数据库启动。相反,开始时只会启动一个进程,即作业队列协调器(CJQ0),它在作业队列表中看到需要运行的作业时,会启动Jnnn 进程。

如果Jnnn 进程完成其工作,并发现没有要处理的新作业,此时Jnnn 进程就会退出。

unix下面可以用ps -ef | grep ora_j 查看这些进程(J000, ... J999),

另外还有一个ora_cjq0_xxx的队列管理进程。

作业队列协调器(CJQ0)进程被唤醒时,它首先查看任务队列目录中所有的任务是否当前的时间超过了下一次运行的日期时间。检测到需要该时间立即执行的任务后,这些任务按照下一次执行日期的顺序依次执行。当开始执行一个任务时,其过程如下:

1)以任务所有者的用户名开始一个新的数据库会话。2)当任务第一次提交或是最后一次被修改时,更改会话NLS设置和目前就绪的任务相匹配。3)通过interval日期表达式和系统时间,计算下一次执行时间。4)执行任务定义的PL/SQL5)如果运行成功,任务的下一次执行日期(next_date)被更新,否则,失败计数加1。

相关数据字典

任务队列中的任务信息可以通过以下几个字典视图来查看。

d91dcef3f18fb4e253b6fc0e1364dd11.png

DBA_JOBS 和USER_JOBS中的字段。

f5e7ed48d8f082ceb02ca61a537b2c2a.png

DBA_JOBS_RUNNING的字段含义

211debcefcb7afec74ca9cf1a541f40e.png

dbms_job在oracle 10g后其实就比较少用了,不过建议大家还是做个简单了解,重点掌握dbms_scheduler,后面会分享dbms_scheduler方面的内容,感兴趣的朋友可以关注一下~

698e97e29de49a8a004b5b803b92b089.gif
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值