客户反应工作站软件偶尔会出现连接不上后台的情况,等待一段时间可以连接上,初步怀疑是连接数不够问题。以下为日志一部分报错内容。
第一处日志
Mon Sep 26 15:06:59 2011
Process m000 died, see its trace file
Mon Sep 26 15:06:59 2011
ksvcreate: Process(m000) creation failed
Mon Sep 26 15:08:06 2011
Process m001 died, see its trace file
Mon Sep 26 15:08:06 2011
ksvcreate: Process(m001) creation failed
Mon Sep 26 15:11:26 2011
Process J000 died, see its trace file
Mon Sep 26 15:11:26 2011
kkjcre1p: unable to spawn jobq slave process
Mon Sep 26 15:11:26 2011
Errors in file /home/oracle/orabase/admin/ORACLE/bdump/oracle_cjq0_28852.trc:
第二处日志
ORA-00444: background process "EMN0" failed while starting
ORA-00020: maximum number of processes () exceeded
Mon Sep 26 15:16:08 2011
Process J000 died, see its trace file
Mon Sep 26 15:16:08 2011
kkjcre1p: unable to spawn jobq slave process
Mon Sep 26 15:16:08 2011
Errors in file /home/oracle/orabase/admin/ORACLE/bdump/oracle_cjq0_28852.trc:
根据提示信息可以了解到系统无法生成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控制其最大数量。