在Oracle数据库中,哪个后台进程刷新物化视图(materialized views)?
答案:Oracle数据库使用Job Queue进程去运行用户的Jobs,经常在批量模式下。任务是用户自定义的预订运行一次或者多次的作业。比如说,可以使用一个Job队列去安排在后台运行的一个长时间运行的更新任务。给定一个开始时间和间隔时间,任务队列进程就会去尝试在下一个间隔的时间点上面运行Job。
初始化参数JOB_QUEUE_PROCESSES指定了Job Queue线程在实例中最大的并发运行的数量。如果初始化参数JOB_QUEUE_PROCESSES被设置为0,那么协调进程(CJQn)将不会被启动。
Job运行一般由两类进程组成,参考下图:
v 作业队列协调进程CJQn(Job Queue Coordinator Process),起到对作业队列的监控作用。
v 执行作业的队列进程Jnnn(Job Queue Slave Processes),由CJQN完成调度产生,并且执行相关的Job。
1.CJQ0在Oracle调度器需要的时候自动开启。调度进程定期的在JOB$表中选择事务来运行。新的事务选择按照时间排列。
2.调度进程动态的生成Jnnn去运行任务。
3.Job队列进程运行的任务由CJQ0来选择。每个Job Queue在一个时间点上面只能运行一个Job。
4.在进程完成执行单个Job后,它被分配更多的任务。如果没有任务被安排去执行,那么它们会进入沉睡状态。并且定期的苏醒去检查是否有Job。如果没有找到,那它们会进入下一个沉睡周期。
所以,刷新物化视图的后台进程是Jnnn(Job Queue Slave Processes)。