您好,登錄后才能下訂單哦!
這篇文章主要介紹“solaris內(nèi)存參數(shù)有哪些”,在日常操作中,相信很多人在solaris內(nèi)存參數(shù)有哪些問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”solaris內(nèi)存參數(shù)有哪些”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!
一、solaris 內(nèi)存參數(shù)說明
shared memory:共享內(nèi)存段:
一個內(nèi)存區(qū)域,可以被不同的進(jìn)程讀取。Oracle使用它來構(gòu)成SGA。Oracle使用以下三種方法來創(chuàng)建一個SGA區(qū):
1. 使用單個共享內(nèi)存段。
2. 使用連續(xù)多個共享內(nèi)存段。
3. 使用多個不連續(xù)共享內(nèi)存段。
Oracle優(yōu)先使用第一種方法,如果成功,則繼續(xù)初始化,不成功則使用第二種方法,再不成功則使用第三種方法。如果再不成功,則初始化失敗,Oracle報(bào)告錯誤代碼。
Semaphore:
可以看作一個標(biāo)記??梢杂蠴n和Off兩種狀態(tài)。Oracle使用semaphores來實(shí)現(xiàn)服務(wù)器進(jìn)程對SGA區(qū)的存取控制。
Shared memory 和semaphore 是Oracle在Unix上運(yùn)行的重要資源。如果Oracle 實(shí)例得不到所需要的資源,實(shí)例啟動就會失敗。
參數(shù):
對于運(yùn)行一個Oracle實(shí)例的Solaris系統(tǒng),改變/etc/system文件中的一些關(guān)于共享內(nèi)存的參數(shù),以使Oracle實(shí)例可以正常運(yùn)行。如果有多個實(shí)例的話,還需根據(jù)下面方法重新計(jì)算某些值。
shmmax
含義:這個設(shè)置并不決定究竟Oracle數(shù)據(jù)庫或者操作系統(tǒng)使用多少物理內(nèi)存,只決定了最多可以使用的內(nèi)存數(shù)目。這個設(shè)置也不影響操作系統(tǒng)的內(nèi)核資源。
設(shè)置方法:0.5*物理內(nèi)存。如果物理內(nèi)存為20G,則 0.5×20G×1024×1024=10485760
例子: Set shmsys:shminfo_shmmax=10485760
shmmin
含義:共享內(nèi)存的最小大小。
設(shè)置方法:一般都設(shè)置成為1。
例子: Set shmsys:shminfo_shmmin=1
shmmni
含義:系統(tǒng)中共享內(nèi)存段的最大個數(shù)。 推薦值為100或者128。
例子:Set shmsys:shminfo_shmmni=100
shmseg
含義:每個用戶進(jìn)程可以使用的最多的共享內(nèi)存段的數(shù)目。 推薦值為20或者10。
例子:Set shmsys:shminfo_shmseg=20
semmni
含義:系統(tǒng)中semaphore identifierer的最大個數(shù)。推薦值為100或者128。
設(shè)置方法:把這個變量的值設(shè)置為這個系統(tǒng)上的所有Oracle的實(shí)例的init.ora中的最大的那個processes的那個值加10。
例子:Set semsys:seminfo_semmni=100
semmns
含義:系統(tǒng)中semaphores的最大個數(shù)。
設(shè)置方法:這個值可以通過以下方式計(jì)算得到:各個Oracle實(shí)例的initSID.ora里邊的processes的值的總和(除去最大的Processes參數(shù))+最大的那個Processes×2+10×Oracle實(shí)例的個數(shù)。 詳見下面“(semmns計(jì)算實(shí)例)”。
例子:Set semsys:seminfo_semmns=200
semmsl
含義:一個set中semaphore的最大個數(shù)。
設(shè)置方法:設(shè)置成為10+所有Oracle實(shí)例的InitSID.ora中最大的Processes的值。詳見下面“(SEMMSL 計(jì)算實(shí)例)” .
例子:Set semsys:seminfo_semmsl=200
改變了/etc/system里邊以上參數(shù)以后,重新啟動計(jì)算機(jī):
$reboot
然后檢查當(dāng)前的參數(shù):
$sysdef -I
如果系統(tǒng)參數(shù)仍舊沒有改變得話,使用以下命令:
$modload /kernel/sys/shmsys。
二、oracle在solaris下安裝時(shí)參數(shù)的計(jì)算
SHMMAX maximum size of a shared memory segment
(共享內(nèi)存段的最大字節(jié)數(shù))
SHMMIN minimum size of shared memory segment
(共享內(nèi)存段的最小尺寸)
SHMMNI maximum number of shared memory identifiers in the system
(系統(tǒng)中共享內(nèi)存標(biāo)識符的最大數(shù)目)
SHMSEG maximum number of shared memory segments a user process can attach
(每個用戶進(jìn)程可分配的最大共享內(nèi)存段數(shù)目)
SEMMNI maximum number of semaphore identifiers in the system
(系統(tǒng)中信號燈標(biāo)識符的最大數(shù)目)
SEMMSL maximum number of semaphores in a set
(每個(信號燈)集合中的信號燈的最大數(shù)目)
SEMMNS maximum number of semaphores in the system
(系統(tǒng)中信號燈的最大數(shù)目)
SEMOPM maximum number of operations per semop call
(每個semop調(diào)用的信號燈的最大數(shù)目)
SEMVMX semaphore maximum value
(信號燈最大值)
set semsys:seminfo_semmni 100
set semsys:seminfo_semmns 1024(semmns計(jì)算實(shí)例)
系統(tǒng)中各個Oracle實(shí)例的"init[SID].ora"文件中PROCESSES值的總和(不包括最大的那個PROCESSES值)+ 最大的那個PROCESSES值 * 2 + 10 * Oracle實(shí)例的個數(shù)。
注:[SID]即為具體的數(shù)據(jù)庫實(shí)例名
例如,一個有三個 Oracle實(shí)例的系統(tǒng),在各自的"initsid.ora"文件中的PROCESSES參數(shù)設(shè)置為下列值:
ORACLE_SID=A, PROCESSES=100
ORACLE_SID=B, PROCESSES=100
ORACLE_SID=C, PROCESSES=200
則 SEMMSL 值的計(jì)算方法如下(SEMMSL 計(jì)算實(shí)例):
SEMMSL = [(c=200) + 10] = 210
則 SEMMNS 值的計(jì)算方法如下:
SEMMNS = [(A=100) + (B=100)] + [(C=200) * 2] + [(# of instances=3) * 10] = 630
set semsys:seminfo_semmsl 256
SEMMSL 的值可以通過以下方式計(jì)算得到:
所有Oracle實(shí)例的"init[SID].ora"文件中最大的PROCESSES值 + 10
set semsys:seminfo_semvmx 32767
set semsys:seminfo_shmmax 12884901888
24G *0.5 * 1024*1024 (24G是物理內(nèi)存)
set semsys:seminfo_shmmin 100
三、solaris11 對內(nèi)存參數(shù)的設(shè)置
1、使用prctl調(diào)整
prctl -n project.max-shm-memory -v 10G -r -i project default
prctl -n project.max-sem-ids -v 256 -r -i project default
prctl -n project.max-shm-ids -v 256 -r -i project default
這樣所作的修改系統(tǒng)重啟后就失效了
2、創(chuàng)建project,調(diào)整會記錄到/etc/project里
可以使用下面的方法為oracle用戶創(chuàng)建單獨(dú)的project,然后修改相應(yīng)的值
projadd -U oracle user.oracle
projmod -a-K "project.max-shm-memory=(priv,10g,deny)" user.oracle
projmod -a-K "project.max-sem-ids=(priv,100,deny)" user.oracle
projmod -a-K "process.max-sem-nsems=(priv,500,deny)" user.oracle
projmod -a-K "project.max-shm-ids=(priv,100,deny)" user.oracle
修改之后只要切換到oracle用戶設(shè)置就生效了,重啟之后也不會丟失。更加詳細(xì)的關(guān)于project的操作請查看solaris相應(yīng)的手冊,以后修改/etc/system的方法應(yīng)該會被這種方式逐步取代
到此,關(guān)于“solaris內(nèi)存參數(shù)有哪些”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。