問題背景:
客戶反映數據庫有時候出現連接等待,以下為日志一部分報錯內容。
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控制其最大數量。