日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

由于问题引起信号ORA-27154无法启动数据库

發布時間:2025/4/14 数据库 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 由于问题引起信号ORA-27154无法启动数据库 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

測試庫運行startup當系統提示(11.2.0.1):


查詢ORA-27154的錯誤

Error: ORA-27154 Text: post/wait create failed --------------------------------------------------------------------------- Cause: internal error, multiple post/wait creates attempted simultaneously Action: check errno and contact Oracle Support
提示是一個內部錯誤,多個post/wait同一時候請求。


df查看磁盤空間還有非常多。不存在占滿的情況。


查看報錯中的semget含義

提示segmet的含義是get a semaphore set identifier,即獲取一個信號量集標識符。說明此錯誤可能和未獲得信號量有關No space left on device不是指存儲空間,而是指信號量資源。


從MOS的介紹看(949468.1),一系列的報錯出現10.1.0.2到11.2.0.2的范圍內。給出了演示樣例:

$ ipcs -ls

------ Semaphore Limits --------

max number of arrays = 128

max semaphores per array = 250

max semaphores system wide = 32000

max ops per semop call = 100

semaphore max value = 32767

產生的原因是,從原理上看。32000信號量可用。一個信號量標識符能包括最大250個信號量??墒莍pcs命令展示每一個信號量標識符僅能讓Oracle包括最大156個信號量。

$ ipcs << 這個演示樣例中沒有啟動額外實例的前提下,大約包括100個信號量字符集

..

------ Semaphore Arrays --------

key semid owner perms nsems

0x450e15bd 0 root 666 1

0x0000cace 32769 root 666 1

0x358b172c 327683 oracle 660 104

0x9053d038 11075588 oracle 660 156

0x9053d039 11108357 oracle 660 156

0x9053d03a 11141126 oracle 660 156

0x9053d03b 11173895 oracle 660 156

..

那么可用的最大信號量就是156*128=19968。不是32000。

解決方法添加可包括的信號量,這里依據SEMMNI參數來調整設置。

1. 查詢當前kernel的信號量參數值。

# /sbin/sysctl -a | grep sem

2. 改動/etc/sysctl.conf文件的SEMMNI參數。

kernel.sem = 250 32000 100 128改動為kernel.sem = 250 32000 100 200

3. 使用# /sbin/sysctl -p讓改動生效。


結合到我這里的情況。首先查看ipcs的結果:


數據庫啟動后。須要從操作系統上分配共享內存和信號量。信號量就相當于OS的內存鎖,類似于Oracle的latch(注意Oracle的鎖和latch的差別)。每一個進程須要獲取操作系統內存時,須要先獲得信號量才干申請內存。

從上述指令能夠看到最大可用的信號量是100。信號量標識符集最大是128,呃,這里失誤,當時沒有查看到ipcs實際的信號量標識符集。

這里4個參數的含義:

SEMMSL???????? 100??????? Defines the minimum recommended value,for initial installation only
The maximum number of sempahores that can be in one semaphore set. It should be same size as maximum number of Oracle processes. 一個信號量集中同意的最大信號量數。須要和Oracleprocess個數同樣。
SEMMNS????????100 ??????? Defines the maximum semaphores on the system.
This setting is a minimum recommended value, for initial installation only. The SEMMNS parameter should be set to the sum of the PROCESSES parameterfor each Oracle database, adding the largest one twice, and then adding an additional 10 for each database.
系統同意的最大信號量數。SEMMNS參數應設置為最大的PROCESSES再加上額外的10,算出來的總和。(注意這里說明該值是最小的建議值)
SEMOPM????????32????????? Defines the maximum number of operations for each semop call
每次信號量調用的最大操作數。
SEMMNI????????128 ??????? Defines the maximum number of semaphore sets in the entire system
系統中信號量集的最大值。
能夠猜測SEMMNS=SEMMSL * SEMMNI。

但上述演示樣例中:100<>100 * 128。SEMMNS最大同意的信號量(建議最小值)僅僅有100。顯然不能滿足計算結果的數量。

并且從Oracle官方文檔看到的對于這幾個參數的推薦值

Configuring Kernel Parameters

Verify that the kernel parameters shown in the following table are set to values greater than or equal to the recommended value shown. The procedure following the table describes how to verify and set the values.

ParameterValueFile
semmsl

semmns

semopm

semmni

250

32000

100

128

/proc/sys/kernel/sem
SEMMNS是32000。即SEMMSI(250)*SEMMNI(128)的結果。



進而能夠判斷報錯提示的sskgpcreates可能和process數量有關,kernel中和該值有關的參數是SEMMNS,和上述猜測的結論同樣。即PROCESS過多,但同意的最大信號量過少。兩者不匹配,導致No space left on device提示信號量資源不足。



解決方法如MOS指點的。改動信號量參數值,能夠用:

這樣的方式僅僅是暫時改動,機器重新啟動后失效。若須要持久生效,能夠改動/etc/sysctl.conf相應的參數值。


總結

1. 錯誤提示No space left on device未必表示存儲空間不足,本例中就是指的信號量資源。

2. kernel.sem中四個參數的含義,以及SEMMNS(同意的最大信號量)=SEMMSL(一個信號量集同意包括的信號量) * SEMMNI(系統同意包括的最大信號量集)的計算關系。還有就是SEMMNS定義的是Defines the maximum semaphores on the system. This setting is a minimum recommended value,for initial installation only. 即同意的最大信號量,但這個值是用于初始安裝的最小推薦值。

3. 借助baidu或google甚至MOS查找問題,可能找到解決方式,但更重要的是可以知道原因。進而了解問題出現的場景。結合自己的問題。確定是同一類之后,再運行操作,一句話:要慎重。

版權聲明:本文博主原創文章。博客,未經同意不得轉載。

轉載于:https://www.cnblogs.com/mengfanrong/p/4851619.html

總結

以上是生活随笔為你收集整理的由于问题引起信号ORA-27154无法启动数据库的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。