您好,登錄后才能下訂單哦!
這篇文章主要講解了“怎么維護ORACLE在各操作系統信號量與共享內存”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“怎么維護ORACLE在各操作系統信號量與共享內存”吧!
1.LIUNX
cat /etc/sysctl.conf
共享內存:
kernel.shmall = 2097152 # 可以使用的共享內存的總量,單位:頁。 取值:推薦大于shmmax/page_size(getconf PAGE_SIZE 一般4096)
kernel.shmmax = 2147483648 # 最大單個共享內存段大小。 取值:推薦大于sag_max_size
kernel.shmmni = 4096 # 整個系統共享內存段的最大數目。 取值:默認值
信號量:
kernel.sem = 5010 641280 5010 128 #SEMMSL, SEMMNS, SEMOPM, SEMMNI
每個信號對象集的最大信號對象數;系統范圍內最大信號對象數;每個信號對象支持的最大操作數;系統范圍內最大信號對象集數。
SEMMSL
設置:最小250;對于processes參數設置較大的系統建議設置為processes+10
SEMMNS
設置:至少32000;SEMMSL * SEMMNI
SEMOPM
設置:至少100;或者等于SEMMSL
SEMMNI
含義:linux系統信號量set最大個數
設置:最少128
2.HPUX
信號量:
kctune -h -B semmni="4096" 全系統的最大信號量 Default: nproc(全系統進程的最大數)
kctune -h -B semmns="16384" 全系統內,用戶可訪問的最大信號量 Default: semmni*2
kctune -h -B semmnu="4092" 每個信號量的最大數 Maximum: nproc-4
kctune -h -B semvmx="32767" 所允許的信號量值的最大數 Maximum: 65535
共享內存:
kctune -h -B shmmax="34359738368" 最大共享內存段大小
kctune -h -B shmem=1 啟動/關閉共享內存 1(開啟)
kctune -h -B shmmni="4096" 系統上的最大段
kctune -h -B shmseg="512" 每個進程的最大段 Maximum: shmmni
3.AIX
AIX一般不用手工調整,而是系統動態的,如果運行后報共享內存或信號量不足,將maxuproc單個用戶允許的最大進程數 調大即可(用命令smitty system或chdev)。
$su – root
#chdev –l sys0 –a maxuproc=1000
4.Solaris
修改Solaris 9里/etc/system,參考值如下所示:
信號量:
set semsys:seminfo_semmni=20000 指定最大信號標識符數
set semsys:seminfo_semmsl=29000 指定每個信號標識符的最大 System V 信號數
set semsys:seminfo_semmns=30000 系統上的最大 System V 信號數。
set semsys:seminfo_semopm=31000 指定每個 semop 調用的最大 System V 信號操作數。
set semsys:seminfo_semmnu=32000 System V 信號系統支持的撤消結構總數。
set semsys:seminfo_semume=10 可以由任一進程使用的最大 System V 信號撤消結構數
set semsys:seminfo_semvmx=32767 可以設置的最大信號值
共享內存:
shmsys:shminfo_shmmni 對可以創建的共享內存段數設置的系統范圍限制。
shmsys:shminfo_shmmax 可以創建的 System V 共享內存段的最大大小。
----------
信號量與共享內存管理
----------
1.ORACLE提供了sysresv工具管理共享內存以及信號量
$ sysresv -l "ORCL" 查看實例對應的信號量與共享內存
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參數可以移除共享段(僅適用于實例不存在,操作系統共享段不釋放條件)
$ export ORACLE_SID=orcl
$ sysresv -f orcl
2.操作系統級別可以通過ipcs/ipcrm管理(多實例下可以結合sysresv確定)
ipcs -a或ipcs 顯示當前系統中共享內存段、信號量集、消息隊列的使用情況;
ipcs -m 顯示共享內存段的使用情況;
ipcs -s 顯示信號量集的使用情況;
ipcs -q 顯示消息隊列的使用情況;
清理相關共享內存、信號量,隊列等共享信息命令如下:
ipcrm -s semid 刪除對應的信號量集
ipcrm -m shmid 刪除對應的共享內存段
ipcrm -q msqid 刪除對應的消息隊列
3.經常有因為共享內存、信號量,隊列等共享信息沒有干凈地清理而引起一些問題
比如:
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在各操作系統信號量與共享內存”的內容了,經過本文的學習后,相信大家對怎么維護ORACLE在各操作系統信號量與共享內存這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。