在Oracle中建立定时job

   在Windows上可以设定Task来定时启动一些任务,比如说可以每周执行一次,每天执行一次等等等等。我也看到有很多应用在Oracle中写了PL/SQL的Batch,然后用Windows的Task的方式来启动这些Batch,这样我的感觉还是挺繁琐的。而且Oracle功能那么强,为什么非要用Windows自带的task方式启动Batch呢,而且Windows的Batch的时间设定感觉不是很灵活,不能用计算式来灵活表达出来。那么,我们为什么不用Oracle自带的job功能呢。

 

   Oracle中的SYS.DBMS_JOB.SUBMIT这个包提供了Task的功能,首先我们写一段PL/SQL用来被执行,比如说叫TEST_SP,然后利用SYS.DBMS_JOB.SUBMIT建立task

这样我们就可以在user_jobs这张视图查看到你刚才的这个job的情况。

select job,next_date,next_sec,failures,broken from user_jobs;

 

不过,有的数据库在设定好了以后,发现时间到了Batch并没有执行,这个是为什么呢,答案就是数据库设置。数据库中有一个参数是job_queue_processes,如果这个值设定为0,那么就不能自动运行job了,在默认安装的数据库中这个值一般是10。如果发现数字是0的话,那么就手动改一下,SQL如下

show parameter job_queue_processes; (查询job_queue_processes的值)

alter system set job_queue_processes=10; (更新job_queue_processes的值)

 

当然,如果要设置这个参数,用户的权限是必须的,如果没有权限,那么还是去和DBA说一说,把job_queue_processes参数设定为非0吧。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值