Oracle的job无法自动运行

刚刚接手数据库的维护,最近发现oracle的job都不能自动运行了,手工执行仍然可以。上网查了下,发现原来是oracle的一个bug,计时器溢出了。

查看主机:
$ uptime
上午10点27分     运行 560 天 16:45,  1 user,  平均负载:0.52, 0.56, 0.60

已经远超过497天,必须要重新启动系统才行。由于不能轻易的重启系统,所以我就用crontab做了个定时运行的脚本来运行oracle的job。

1,首先查看oracle所要运行job的值:
SQL> select job from user_jobs where what like '%xxxxxxx%';
       JOB
----------
       422
SQL>

2,编写shell脚本auto_job.sh
$more auto_job.sh
#!/bin/bash
. /export/home/oracle/.profile
sqlplus -s user_name/passwd@sid<<!
exec dbms_job.run(422);
exit
!

3,用oracle用户创建crontab
$ crontab -e
00 03 * * * /export/home/oracle/auto_jobs.sh

测试没有问题,收工。