共計 2609 個字符,預計需要花費 7 分鐘才能閱讀完成。
這篇文章主要講解了“怎么維護 ORACLE 在各操作系統(tǒng)信號量與共享內(nèi)存”,文中的講解內(nèi)容簡單清晰,易于學習與理解,下面請大家跟著丸趣 TV 小編的思路慢慢深入,一起來研究和學習“怎么維護 ORACLE 在各操作系統(tǒng)信號量與共享內(nèi)存”吧!
1.LIUNX
cat /etc/sysctl.conf
共享內(nèi)存:
kernel.shmall = 2097152 # 可以使用的共享內(nèi)存的總量, 單位:頁。取值:推薦大于 shmmax/page_size(getconf PAGE_SIZE 一般 4096)
kernel.shmmax = 2147483648 # 最大單個共享內(nèi)存段大小。 取值:推薦大于 sag_max_size
kernel.shmmni = 4096 # 整個系統(tǒng)共享內(nèi)存段的最大數(shù)目。 取值:默認值
信號量:
kernel.sem = 5010 641280 5010 128 #SEMMSL, SEMMNS, SEMOPM, SEMMNI
每個信號對象集的最大信號對象數(shù);系統(tǒng)范圍內(nèi)最大信號對象數(shù);每個信號對象支持的最大操作數(shù);系統(tǒng)范圍內(nèi)最大信號對象集數(shù)。
SEMMSL
設置:最小 250;對于 processes 參數(shù)設置較大的系統(tǒng)建議設置為 processes+10
SEMMNS
設置:至少 32000;SEMMSL * SEMMNI
SEMOPM
設置:至少 100;或者等于 SEMMSL
SEMMNI
含義:linux 系統(tǒng)信號量 set 最大個數(shù)
設置:最少 128
2.HPUX
信號量:
kctune -h -B semmni= 4096 全系統(tǒng)的最大信號量 Default: nproc(全系統(tǒng)進程的最大數(shù))
kctune -h -B semmns= 16384 全系統(tǒng)內(nèi),用戶可訪問的最大信號量 Default: semmni*2
kctune -h -B semmnu= 4092 每個信號量的最大數(shù) Maximum: nproc-4
kctune -h -B semvmx= 32767 所允許的信號量值的最大數(shù) Maximum: 65535
共享內(nèi)存:
kctune -h -B shmmax= 34359738368 最大共享內(nèi)存段大小
kctune -h -B shmem=1 啟動 / 關閉共享內(nèi)存 1(開啟)
kctune -h -B shmmni= 4096 系統(tǒng)上的最大段
kctune -h -B shmseg= 512 每個進程的最大段 Maximum: shmmni
3.AIX
AIX 一般不用手工調(diào)整,而是系統(tǒng)動態(tài)的,如果運行后報共享內(nèi)存或信號量不足,將 maxuproc 單個用戶允許的最大進程數(shù) 調(diào)大即可 (用命令 smitty system 或 chdev)。
$su – root
#chdev –l sys0 –a maxuproc=1000
4.Solaris
修改 Solaris 9 里 /etc/system,參考值如下所示:
信號量:
set semsys:seminfo_semmni=20000 指定最大信號標識符數(shù)
set semsys:seminfo_semmsl=29000 指定每個信號標識符的最大 System V 信號數(shù)
set semsys:seminfo_semmns=30000 系統(tǒng)上的最大 System V 信號數(shù)。
set semsys:seminfo_semopm=31000 指定每個 semop 調(diào)用的最大 System V 信號操作數(shù)。
set semsys:seminfo_semmnu=32000 System V 信號系統(tǒng)支持的撤消結構總數(shù)。
set semsys:seminfo_semume=10 可以由任一進程使用的最大 System V 信號撤消結構數(shù)
set semsys:seminfo_semvmx=32767 可以設置的最大信號值
共享內(nèi)存:
shmsys:shminfo_shmmni 對可以創(chuàng)建的共享內(nèi)存段數(shù)設置的系統(tǒng)范圍限制。
shmsys:shminfo_shmmax 可以創(chuàng)建的 System V 共享內(nèi)存段的最大大小。
----------
信號量與共享內(nèi)存管理
----------
1.ORACLE 提供了 sysresv 工具管理共享內(nèi)存以及信號量
$ sysresv -l ORCL 查看實例對應的信號量與共享內(nèi)存
IPC Resources for ORACLE_SID ORCL :
Shared Memory:
ID KEY
65537 0x3b751258
Semaphores:
ID KEY
98304 0xe21c75d0
Oracle Instance alive for sid ORCL
sysresv - f 參數(shù)可以移除共享段(僅適用于實例不存在,操作系統(tǒng)共享段不釋放條件)
$ export ORACLE_SID=orcl
$ sysresv -f orcl
2. 操作系統(tǒng)級別可以通過 ipcs/ipcrm 管理(多實例下可以結合 sysresv 確定)
ipcs - a 或 ipcs 顯示當前系統(tǒng)中共享內(nèi)存段、信號量集、消息隊列的使用情況;
ipcs -m 顯示共享內(nèi)存段的使用情況;
ipcs -s 顯示信號量集的使用情況;
ipcs -q 顯示消息隊列的使用情況;
清理相關共享內(nèi)存、信號量,隊列等共享信息命令如下:
ipcrm -s semid 刪除對應的信號量集
ipcrm -m shmid 刪除對應的共享內(nèi)存段
ipcrm -q msqid 刪除對應的消息隊列
3. 經(jīng)常有因為共享內(nèi)存、信號量,隊列等共享信息沒有干凈地清理而引起一些問題
比如:
SQL startup
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
這個時就可能需要清理相關的信號量(也可以增加信號量值)
感謝各位的閱讀,以上就是“怎么維護 ORACLE 在各操作系統(tǒng)信號量與共享內(nèi)存”的內(nèi)容了,經(jīng)過本文的學習后,相信大家對怎么維護 ORACLE 在各操作系統(tǒng)信號量與共享內(nèi)存這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是丸趣 TV,丸趣 TV 小編將為大家推送更多相關知識點的文章,歡迎關注!