ksvcreate: Process(m000) creation failed 處理

zhaokonglei發表於2014-06-17


ksvcreate: Process(m000) creation failed 處理

同事打電話過來說有臺資料庫(10.2.0.4.0)連不上了,檢視alert日誌:

Tue Jun 17 14:55:04 2014

Process m000 died, see its trace file

Tue Jun 17 14:55:04 2014

ksvcreate: Process(m000) creation failed

Tue Jun 17 14:56:05 2014

Process m000 died, see its trace file

Tue Jun 17 14:56:05 2014

ksvcreate: Process(m000) creation failed

Tue Jun 17 14:57:06 2014

Process m000 died, see its trace file

Tue Jun 17 14:57:06 2014

ksvcreate: Process(m000) creation failed

從網上查了下資料

ksvcreate: Process creation failed錯誤資訊一般在Oracle例項在建立一些輔助後臺程式(mmon的子程式m00x或者並行子程式p00x)時出現程式啟動失敗時出現,而造成該錯誤的可能性有多種,包括Oracle例項資源不足、作業系統資源不足等等。

其中較為常見的是例項instanceprocess使用達到上限,可以透過查詢v$resource_limit檢視來了解例項生命週期內是否發生過process總數暴滿的情況:

[oracle@xxx ~]$ sqlplus / as sysdba

SQL> select * from v$resource_limit;

ERROR at line 1:

ORA-01012: not logged on

執行查詢報錯,還可以從作業系統上檢視LOCAL=NO的連線數,看有沒有超過最大連結數

ps -ef|grep LOCAL|wc –l

149

SQL> show parameter process

ERROR at line 1:

ORA-01012: not logged on

修改引數也報相同的錯誤

如不急的話,可以先停掉監聽,等連結數降下來後,再查詢、修改

因比較著急,先重啟下資料庫

SQL> conn / as sysdba

Connected to an idle instance.

SQL> shutdown immediate

ORA-24324: service handle not initialized

ORA-24323: value not allowed

ORA-00020: maximum number of processes (%s) exceeded

正常關閉不了,只能強關了

SQL> shutdown abort

ORACLE instance shut down.

SQL> startup

ORACLE instance started.

Total System Global Area 2097152000 bytes

Fixed Size                  2085224 bytes

Variable Size            1207963288 bytes

Database Buffers          872415232 bytes

Redo Buffers               14688256 bytes

Database mounted.

Database opened.

shutdown abort後,啟動時會自動進行例項恢復

重啟後,可以正常登了

檢視

SQL> select * from v$resource_limit;

RESOURCE_NAME                  CURRENT_UTILIZATION MAX_UTILIZATION INITIAL_ALLOCATION   LIMIT_VALUE

------------------------------ ------------------- --------------- -------------------- --------------------

processes                                       55              58        150                  150

sessions                                         57              61        170                  170

enqueue_locks                                   22              34       2380                 2380

enqueue_resources                               22              24        968            UNLIMITED

從上面結果輸出來看,很可能是processes總數達到上限導致了新的後臺輔助程式建立失敗

修改下processes引數

SQL> show parameter process

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

連結數只有150 確實有點少了,改下引數

SQL> alter system set processes=500 scope=spfile;

System altered.

重啟下資料庫,然後檢視

SQL> show parameter process
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     500

過段時間檢視下連結數:

SQL> select count(*) from v$session;

  COUNT(*)

----------

       267

267超過當時設定的150,所以正是由於Oracle達到了程式數限制,進而PMON無法建立m000程式,至此問題解決


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29702473/viewspace-1185352/,如需轉載,請註明出處,否則將追究法律責任。

相關文章