近期开发反馈生产系统oracle数据库用于数据同步的job 时常出现执行超时卡死、失败的情况,影响业务正常运作,问是否能够监控job的运行状态,当出现执行失败或者执行时间超过预定时间发出预警通知以便及时处理。思考了一阵,想到通过抓取dba_scheduler_jobs 视图可以实现目的。具体sql 如下:
select decode(t.state,'RUNNING',to_char(extract (hour from (sysdate-t.last_start_date))*60+extract (minute fro
m (sysdate-t.last_start_date))),'SCHEDULED','job is not running','SUCCEEDED','job succeeded','FAILED','job failed') as duration from dba_scheduler_jobs t where t.job_name='&1'
结合zabbix监控、企业微信预警,效果如下: