刚刚接手数据库的维护,最近发现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
测试没有问题,收工。