问题背景:
客户反映数据库有时候出现连接等待,以下为日志一部分报错内容。
kkjcre1p: unable to spawn jobq slave process, slot 3, error 1089
Sun Oct 27 11:21:35 2019
kkjcre1p: unable to spawn jobq slave process, slot 3, error 1089
Sun Oct 27 11:21:35 2019
kkjcre1p: unable to spawn jobq slave process, slot 3, error 1089
Sun Oct 27 11:21:35 2019
kkjcre1p: unable to spawn jobq slave process, slot 3, error 1089
Sun Oct 27 11:21:35 2019
kkjcre1p: unable to spawn jobq slave process, slot 3, error 1089
ORA-00444: background process “EMN0” failed while starting
ORA-00020: maximum number of processes () exceeded
Sun Oct 27 11:21:35 2019
Process J000 died, see its trace file
Sun Oct 27 11:21:35 2019
kkjcre1p: unable to spawn jobq slave process
Sun Oct 27 11:21:35 2019
根据提示信息可以了解到系统无法生成job相关的进程,同时达到processes最大限制而出错的。
查看系统processes和sessions
SQL> show parameter processes
NAME TYPE VALUE
———————————— ———– ——————————
aq_tm_processes integer 0
db_writer_processes integer 1
gcs_server_processes integer 0
job_queue_processes integer 10
log_archive_max_processes integer 2
processes integer 150
SQL> show parameter sessions
NAME TYPE VALUE
———————————— ———– ——————————
java_max_sessionspace_size integer 0
java_soft_sessionspace_limit integer 0
license_max_sessions integer 0
license_sessions_warning integer 0
logmnr_max_persistent_sessions integer 1
sessions integer 170
shared_server_sessions integer
SQL>
查看当前系统的processes
SQL> select count(*) from v$process;
COUNT(*)
———-
148
SQL>
明显是processes数目不够导致报错信息。修改processes连接数为300.重启数据库问题不再出现。
备注:
1:kkjcre1p: unable to spawn jobq slave process报错原因大约有几种可能:
1、参数job_queue_processes设置过小。
2、参数session和processes设置的会话数及连接数不能满足业务需求。
3、参数pga_aggregate_target被耗尽。
4、OS资源被耗尽。
本案例中为processes最大数已达到最大限制所以出现报错。
2:
Oracle后台进程中含有ora_j000_ORACLE、ora_j0001_ORACLE,该进程都是由后台进程cjq0(协调程序作业队列后台进程)产生的slave process,这些ora_j000就是job进程,也正是由初始化参数 job_queue_processes控制其最大数量。