oracle 调度作业不执行,解决步骤
背景:有一个视图,关联条件太多,造成查询时效率很低。并且客户对于该视图数据的实时性要求不高。
解决思路:由于实时性要求不高,关联条件很多。因此考虑做成调度作业,每天晚上空闲时间执行。
方式一:1.建立作业,在作业里设置执行频率,可以直接写pl/sql代码块。
遇到问题:建立作业不执行,需要开启oracle的作业队列进程参数,默认是关闭的
方法:show parameter job_queue_processes ;//为0代表未开启
alter system set job_queue_processes=6;//开启6个
2. 测试下,选为立即执行
遇到问题:执行后,没得到想要的结果。因为sql语句执行太慢,任务一直再运行中。
方法:优化sql语句,将not in 改成 left join ,in 改成 inner join
方式二: 建立一个程序,建立一个调度。然后再调度里关联程序。