關於oracle資料庫訊號量的問題
前段時間使用 dbca建立資料庫的時候出現的是建立單例項的介面,把這個問題反饋給oracle 原廠給的反饋是由於 引起的。在硬體是X7-2,軟體版本是18.1.0.0.0 到 18.1.6.0.0之間的版本都有可能出現。
在主機目錄 /opt/OracleHomes/agent_home/agent_inst/sysman/emd/state/fetchlet_state/OSLineToken/parse-log-MLTS-61F17558F73C07A86BC281760F81167A,並且還有,同時 在主機的/var/log/message檢視到有關於kernel的報錯([kernel:.*(error|crit|fatal)])
/var/log/messages contains the following errors:
BROADCOM[32717]: ERROR SemCreate() semget() failed! No space left on device
BROADCOM[32717]: ERROR ngBmapiInitialize() LockCreate() failed!
BROADCOM[32717]: ERROR /usr/share/hwdata/pci.ids file should be updated
BROADCOM[32717]: ERROR GetSriovInfo() fopen() /sys/bus/pci/devices/0000:5e:00.0/virtfn0/uevent failed! 2
In a non-virtualized configuration new database instances fail to start with an error indicating insufficient semaphores, such as the following:
SQL> startup nomount
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
In a virtualized (OVM) configuration OneCommand (OEDA) step "Create Virtual Machine" fails with the following error:
Error: Command [/opt/exadata_ovm/exadata.img.domu_maker start-domain /EXAVMIMAGES/conf/final-vm.xml] run on node n1v1.oracle.com as user root did not execute successfully...
Error running oracle.onecommand.deploy.machines.VmUtils method createVms
/var/log/exadata.img.domu_maker.trc contains the following error:
[WARNING][/opt/exadata_ovm/exadata.img.domu_maker - 6214][exadata_img_domu_maker_start_domain][] [CMD: kpartx -a -v /EXAVMIMAGES/GuestImages/texa2b3npv07adm.de.t-internal.com/System.img] [CMD_STATUS: 3]
----- START STDERR -----
Limit for the maximum number of semaphores reached. You can check and set the limits in /proc/sys/kernel/sem. create/reload failed on loop6p1
Limit for the maximum number of semaphores reached. You can check and set the limits in /proc/sys/kernel/sem. create/reload failed on loop6p2
Limit for the maximum number of semaphores reached. You can check and set the limits in /proc/sys/kernel/sem. create/reload failed on loop6p3
而當我們在安裝oracle資料庫的時候在設定kernel的時候引數是kernel.sem
ORACLE在各作業系統訊號量與共享記憶體的維護,例如一下主機:
kernel.sem=250 32000 100 128
每個訊號物件集的最大訊號物件數;系統範圍內最大訊號物件數;每個訊號物件支援的最大運算元;系統範圍內最大訊號物件集數。
根據相關日誌,我們可以看到訊號量陣列洩漏引起的問題。
這可以透過以 root使用者身份執行以下bash程式碼來確定。
此 bash程式碼標識已分配程式不再存在的訊號量陣列。
shell指令碼為
# for semid in $(ipcs -s | egrep ' 3[ ]*$' | awk '{print $2}'); do
for pid in $(ipcs -s -p -i $semid | awk '/^[0-9]/{print $NF}'|sort -u); do
if ! ps -p $pid >/dev/null 2>&1; then
echo "safe to remove semid $semid - no pid $pid"
fi
done
done
輸出結果:
>>>>>>>>>sample output<<<<<<<
safe to remove semid 98306 - no pid 15494
safe to remove semid 1703939 - no pid 33680
safe to remove semid 3309572 - no pid 57755
safe to remove semid 5373957 - no pid 269913
safe to remove semid 8814598 - no pid 138286
safe to remove semid 10878983 - no pid 30220
safe to remove semid 13860872 - no pid 175465
safe to remove semid 17301513 - no pid 268284
safe to remove semid 18907146 - no pid 271790
safe to remove semid 22347787 - no pid 156966
safe to remove semid 24412172 - no pid 191491
如果在您的環境上有類似的輸出,您可以採取下面的解決方案。
透過以根使用者身份執行以下shell指令碼程式碼,刪除洩漏的不再與正在執行的程式關聯的訊號量陣列。在叢集中的所有資料庫伺服器上執行此程式碼。
# for semid in $(ipcs -s | egrep ' 3[ ]*$' | awk '{print $2}'); do
for pid in $(ipcs -s -p -i $semid | awk '/^[0-9]/{print $NF}'|sort -u); do
if ! ps -p $pid >/dev/null 2>&1; then
echo "removing semid $semid"
ipcrm -s $semid
fi
done
done
這個適用於 X7資料庫伺服器上洩漏的訊號量陣列導致資料庫例項啟動失敗或OEDA步驟“建立虛擬機器”失敗。metalink文章地址 ( Doc ID 2421498.1 )
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31547066/viewspace-2285584/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 1.4.1. 關於Oracle 資料庫版本號Oracle資料庫
- 關於 SAP HANA 資料庫的死鎖問題(deadlock)資料庫
- 關於Oracle資料庫的時間查詢Oracle資料庫
- 關於 5月10號 資料丟失問題反饋
- 基於程式覆蓋資訊的資料庫核心問題定位工具資料庫
- 基於mysql資料庫 關於sql優化的一些問題MySql資料庫優化
- 資料庫事物相關問題資料庫
- Oracle資料庫中的逐行處理問題NEOracle資料庫
- Oracle資料庫關於SQL的執行計劃(轉)Oracle資料庫SQL
- 關於android stdio連線mysql資料庫出現過的問題AndroidMySql資料庫
- Oracle資料庫啟動問題彙總(一)Oracle資料庫
- 關於Room資料庫,拼寫模糊查詢語句遇到的問題OOM資料庫
- oracle資料庫--Oracle雙引號和單引號的區別小結Oracle資料庫
- 關於轉儲Oracle索引資訊的相關命令Oracle索引
- 如何處理Oracle資料庫中的壞塊問題(轉)Oracle資料庫
- 關於為前端連線資料庫出現問題答案的尋找(404)前端資料庫
- 備忘錄:關於.net程式連線Oracle資料庫Oracle資料庫
- Jtti:如何修復Oracle資料庫執行過程的問題JttiOracle資料庫
- Oracle資料庫備份、災備的23個常見問題Oracle資料庫
- Oracle日常問題-資料庫無法啟動(案例二)Oracle資料庫
- Oracle日常問題處理-資料庫無法啟動Oracle資料庫
- Oracle資料庫日常問題-歸檔異常增長Oracle資料庫
- Oracle21c資料庫安裝問題記錄Oracle資料庫
- 關於回覆資料後,登入不上的問題
- Oracle資料庫限制訪問IPOracle資料庫
- 關於安裝orcle資料庫後plsql developer與instantclient連線問題資料庫SQLDeveloperclient
- 關於SQL Serve資料庫r帳號被禁用的處理方法SQL資料庫
- 如何估算Oracle資料庫每日資料增長量Oracle資料庫
- Java訊號量實現程式同步問題:水果蘋果香蕉問題Java蘋果
- 3.3.1 關於關閉資料庫資料庫
- Android 資料庫綜述(二) 程式計算器與訊號量來處理多執行緒併發問題Android資料庫執行緒
- Oracle資料庫處理壞塊問題常用命令Oracle資料庫
- 幾種主要的oracle資料庫問題發生後資料恢復的成功概率分析Oracle資料庫資料恢復
- 關於 iconv 轉碼導致資料丟失的問題
- 談談關於設計資料管理/治理角色的問題
- 關於docker無法訪問倉庫的映象代理問題Docker
- 2.5.1 關於建立資料庫的子句資料庫
- 關於資料庫鎖的總結資料庫