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
這個時就可能需要清理相關的訊號量(也可以增加訊號量值)
原文:https://blog.csdn.net/chinahuanghuajun/article/details/78143900
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31547066/viewspace-2285591/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 訊號量、訊息佇列、共享記憶體複習佇列記憶體
- oracle中的共享記憶體和訊號量的一個簡單解釋Oracle記憶體
- 使用訊號量進行同步的共享記憶體機制記憶體
- 程式間通訊——基於共享記憶體和訊號量實現共享佇列記憶體佇列
- 又是訊號量和共享記憶體沒有釋放的db待機記憶體
- oracle 共享記憶體Oracle記憶體
- 2.3.2 訊號量機制——作業系統筆記作業系統筆記
- Oracle Standby系統管理與維護Oracle
- SGA與共享記憶體記憶體
- 訊號課組(一) 訊號與系統 Part 0 MATLAB在訊號與系統中的使用Matlab
- 淺析 Linux 的共享記憶體與 tmpfs 檔案系統Linux記憶體
- linux作業系統修改共享記憶體的簡單方法(轉)Linux作業系統記憶體
- 計算機作業系統——虛擬記憶體與實體記憶體計算機作業系統記憶體
- 程式間通訊---共享記憶體記憶體
- 作業系統 訊號量vs互斥鎖作業系統
- SGA與共享記憶體2記憶體
- 程式間通訊機制(管道、訊號、共享記憶體/訊號量/訊息佇列)、執行緒間通訊機制(互斥鎖、條件變數、posix匿名訊號量)記憶體佇列執行緒變數
- Win10系統GPU共享記憶體怎麼關閉?Win10系統GPU共享記憶體的關閉方法Win10GPU記憶體
- 作業系統(八) -- 記憶體的分段與分頁作業系統記憶體
- Linux系統程式設計之命名管道與共享記憶體Linux程式設計記憶體
- SGA與共享記憶體的關係記憶體
- 程式間通訊之共享記憶體記憶體
- 程序間通訊(3)-共享記憶體記憶體
- oracle11g要求在作業系統層設定共享記憶體/dev/shm,且大於MEMORY_TARGETOracle作業系統記憶體dev
- 作業系統-記憶體管理作業系統記憶體
- 作業系統——記憶體管理作業系統記憶體
- 解決ORACLE共享記憶體不足的方法Oracle記憶體
- 各作業系統檢視HBA和WWN的方法作業系統
- 作業系統實驗6之訊號量的實現與應用作業系統
- 作業系統的虛擬記憶體作業系統記憶體
- 共享記憶體記憶體
- 訊號與系統
- 【記憶體管理】Oracle如何使用ASMM自動共享記憶體管理記憶體OracleASM
- system-v IPC共享記憶體通訊記憶體
- 作業系統記憶體管理概述作業系統記憶體
- 作業系統記憶體管理-原理作業系統記憶體
- 【作業系統】記憶體管理概述作業系統記憶體
- linux程式間的通訊(C): 共享記憶體Linux記憶體