調整引數process報錯:ORA-27154,ORA-27300,ORA-27301,ORA-27302

不一樣的天空w發表於2018-03-22
調整引數process報錯:ORA-27154,ORA-27300,ORA-27301,ORA-27302: failure occurred at: sskgpcreates

ORA-27154: post/wait create failed
ORA-27300: OS system dependent operation:semget failed with status: 28
ORA-27301: OS failure message: No space left on device
ORA-27302: failure occurred at: sskgpcreates

看提示,會誤以為是磁碟空間不足 (No space left on device), 但是仔細看最後的提示(一般報錯最後的錯誤才是根源), 發現是訊號量引數設定問題。

kernel.sem  = semmsl  semmns  semopm  semmni

調整了下/etc/sysctl.conf,原來值為
kernel.sem =250 32000 100 128

修改為
kernel.sem =250 32000 100 300

問題解決。


process和session的理解:

ORACLE的連線數(sessions)與其引數檔案中的程式數(process)有關,它們的關係如下:
   sessions=(1.1*process+5)

但是我們增加process數時,往往資料庫不能啟動了。這因為我們還漏調了一個unix系統引數:它是/etc/system/ 中semmns,這是unix系統的訊號量引數。每個process會佔用一個訊號量。semmns調整後,需要重新啟動unix作業系統,引數才能生效。

不過它的大小會受制於硬體的記憶體或ORACLE SGA。範圍可從200——2000不等。
  semmns的計算公式為:
     SEMMNS>processes+instance_processes+system
     processes             :資料庫引數processes的值
     instance_processes:5(smon,pmon,dbwr,lgwr,arch)
     system                 :系統所佔用訊號量。

系統所佔用訊號量可用下列命令查出:
  #ipcs -sb
     
其中列NSEMS顯示系統已佔用訊號量和其它一些跟連線有關的引數:
  licence_max_sessions, licence_sessions_warning 等預設設定都為零,也就是沒有限制。

semaphores 引數的最佳化原則如下:
 
1. Calculate the minimum total semaphorerequirements using the following formula:
 
  2*sum (process parameters of all database instances on the system) + overhead for background processes + system and other applications.
 
2. Set semmns (total semaphores systemwide)to this total.
 
3. Set semmsl (semaphores for each set ) to 256
 
4. Set semmni (total semaphores sets) tosemmns devided by semmsl, rounded up to the nearest multiple of 1024

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

相關文章