informix初始化的時候報: semget: errno = 28
Checking group membership to determine server run mode...succeeded
Reading configuration file '/home/informix/etc/S302.cfg'...succeeded
Creating /INFORMIXTMP/.infxdirs...succeeded
Checking config parameters...succeeded
Allocating and attaching to shared memory...succeeded
Creating resident pool 280260 kbytes...succeeded
Allocating 200016 kbytes for buffer pool of 2K page size...succeeded
Creating infos file "/home/informix/etc/.infos.onxrjs302"...succeeded
Linking conf file "/home/informix/etc/.conf.onxrjs302"...succeeded
oninit: Fatal error in shared memory creation
Initializing rhead structure...FAILED
WARNING: server initialization failed, or possibly timed out (if -w was used).
Check the message log, online.log, for errors.
[informix@onxrjs302 ~]$onstat -m
shared memory not initialized for INFORMIXSERVER 'onxrjs302'
Message Log File: /home/informix/S302.log
09:24:30 IBM Informix Dynamic Server Started.
09:24:31 semget: errno = 28
09:24:31 create_vp: cannot allocate semaphore
[informix@onxrjs302 ~]$
解決辦法參考如下:http://blog.csdn.net/miss_acha/article/details/10976635
在函式執行時出錯,查詢日誌發現semget函式報錯,errno設定為28。遇到系統呼叫發生錯誤的情況,可以嘗試以下幾種思路:
1. 使用strerror函式或者perror函式輸出錯誤說明。
2. 如果第一步還不是很清楚,可以根據errno的值找出對應的錯誤標示,然後再詳細查閱出錯系統函式的man手冊,找到對應錯誤標示的含義。
PS:大部分時候還是需要採用方法2,例如這次semget函式報錯,errno設定為28,我一開始根本不記得28的錯誤標示是什麼,採用strerror函式返回的錯誤說明為“No space left on device”,我還誤以為系統記憶體不夠。最後透過檢視errno.h標頭檔案才發現28的錯誤標示是ENOSPC,再去查semget函式的man手冊,檢視ENOSPC的具體含義是訊號量超出系統限制:A semaphore set has to be created but the system limit for the maximum number of semaphore sets (SEMMNI), or the system wide maximum number of semaphores。
解決辦法:可以臨時修改核心引數(當然這只是權宜之計,我們最好是找到為什麼訊號量會超出系統限制,因為正常情況下可能性不大。)
1)sysctl命令可以檢視和設定系統核心引數
sysctl -a | grep sem #檢視系統訊號量的設定值
kernel.sem = 250 32000 32 128
對應的4個值從左到右分別為SEMMSL、SEMMNS、SEMOPM和SEMMNI。
2)修改方法有三種:數字只作為參考
方法一:echo 610 86620 100 142 > /proc/sys/kernel/sem
方法二:sysctl -w kernel.sem="610 86620 100 142"
方法三:echo "kernel.sem=610 86620 100 142" >> /etc/sysctl.conf
errno的值對應的錯誤標示,定義在/usr/include/errno.h標頭檔案中,但是該標頭檔案也是包含其他標頭檔案的。這些標示實際上是定義在下面兩個標頭檔案中:
/usr/include/asm-generic/errno-base.h
/usr/include/asm-generic/errno.h
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/312079/viewspace-2147640/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ORA-27300: OS system dependent operation:semget failed with status: 28 - 2AI
- ORA-27300: OS system dependent operation:semget failed with status: 28 - 1AI
- su的時候報:could not open sessionSession
- appium 初始化安裝的時候報錯 Error getting strings.xml from apkAPPErrorXMLAPK
- webwork在系統重啟的時候的初始化問題Web
- rsync 客戶端同步的時候報錯客戶端
- 執行dbca命令的時候報錯了
- 誰遇到過執行 monkey 的時候報 filenotfound 的報錯
- php執行的時候報File size limit exceededPHPMIT
- 物理data guard備standby庫的時候報錯。
- C++ 靜態變數什麼時候完成初始化C++變數
- setInterval()呼叫其他函式時候報錯函式
- 宣告指標的時候一定要初始化一個確定的值指標
- 解決vue使用Sass時候的報錯問題Vue
- mysql連線的時候報 ERROR 1129MySqlError
- suse10啟動vsftp的時候報錯FTP
- oracle RAC dbca的時候報錯提示cluster nodes are not accessibleOracle
- crontab 新增計劃任務的時候報錯疑問?
- laravel模型查詢的時候報 Array to string conversionLaravel模型
- 提交App Store的時候報錯java.lang.reflect.InvocationTargetExceptionAPPJavaException
- 建庫的時候
- 用Lomboz開發EJB的時候,為什麼在產生EJB classes的時候老是報告:java.lang.ClassNotFoundException:JavaException
- WireMock 的時候報錯:No response could be served as there are no stub mappings in this WireMockREMMockAPP
- HIVE運算的時候報HADOOP Name node is in safe mode 錯HiveHadoop
- informix常用時間運算和操作方式ORM
- informix 的版本號ORM
- 通過備份初始化合並複製時的報錯的解決
- 小謝第12問:初始化頁面的時候子元件為什麼不渲染?元件
- 奇怪的問題: 資料庫使用者登入的時候報錯資料庫
- Python 執行報錯 PermissionError: [Errno 13] Permission denied: '***.***'PythonError
- 小時候的螢火蟲
- 使用Elastic Job的時候報“Job conflict with register center”,如何處理?AST
- weblogic 部署應用的時候報錯 java.util.zip.ZipException: ErrorWebJavaExceptionError
- rman映象備份全庫的時候報ora-00600錯誤。
- 配置 C3 工具時,修改/etc/host,再重新安裝叢集的時候報錯
- 訊號量函式 semget() semop() semctl()函式
- 設定placeholder時候 focus時候文字沒有隱藏
- 在事件中實現 佇列的時候報錯請教一下事件佇列