【体系结构】25.作业队列协调进程 (CJQ0)
作业队列协调器进程(CJQ0)是⼀个后台进程,它从数据字典中选择需要运行的作业,并生成作业队列从属进程(Jnnn)来运行这些作业。OracleScheduler会根据需要自动启动和停止CJQ0。JOB_QUEUE_PROCESSES初始化参数指定可以为执行作业创建的大进程数。CJQ0仅启动要运行的作业数量和可用资源所需数量的作业队列进程。
作业队列从属进程(Jnnn)执行作业协调分配的作业。选择作业进行处理时,作业从属进程将执行以下操作:
- 收集运行作业所需的所有元数据,例如:程序参数和权限信息。
- 以作业的所有者身份启动数据库会话,启动事务,然后开始执行作业。
- 作业完成后,从属进程将提交并结束事务。
- 关闭会话。
完成工作后,从属进程将执行以下操作:
- 重新安排作业(如果需要)
- 更新作业表中的状态以反映作业是否已完成或计划再次运行
- 在作业日志表中插⼊⼀个条⽬
- 更新运行计数,并在必要时更新失败和重试计数
- 清理
- 寻找新工作(如果没有,则休眠)
CJQ0和Jnnn都可以作为线程或操作系统进程运行。