Oracle和SUN Solaris內核參數
Oracle和SUN Solaris內核參數
一些預備知識
shared memory:共享內存段:
一個內存區域,可以被不同的進程讀取。Oracle使用它來構成SGA。Oracle使用以下三種方法來創建一個SGA區:
1. 使用單個共享內存段。
2. 使用連續多個共享內存段。
3. 使用多個不連續共享內存段。
Oracle優先使用的一種方法,如果成功,則繼續初始化,不成功則使用第二種方法,再不成功則使用第三種方法。如果再不成功,則初始化失敗,Oracle報告錯誤代碼。
Semaphore:
可以看作一個標記。可以有On和Off兩種狀態。Oracle使用semaphores來實現服務器進程對SGA區的存取控制。
Shared memory 和semaphore 是Oracle在Unix上運行的重要資源。如果Oracle 實例得不到所需要的資源,實例啓動就會失敗。
參數:
對於運行一個Oracle實例的Solaris系統,改變/etc/system文件中的一些關於共享內存的參數,以使Oracle實例可以正常運行。如果有多個實例的話,還需根據下面方法重新計算某些值。
shmmax
含義:這個設置並不決定究竟Oracle數據庫或者操作系統使用多少物理內存,只決定了最多可以使用的內存數目。這個設置也不影響操作系統的內核資源。
設置方法:0.5*物理內存
例子:Set shmsys:shminfo_shmmax=10485760
shmmin
含義:共享內存的最小大小。
設置方法:一般都設置成爲1。
例子:Set shmsys:shminfo_shmmin=1:
shmmni
含義:系統中共享內存段的最大個數。
例子:Set shmsys:shminfo_shmmni=100
shmseg
含義:每個用戶進程可以使用的最多的共享內存段的數目。
例子:Set shmsys:shminfo_shmseg=20:
semmni
含義:系統中semaphore identifierer的最大個數。
設置方法:把這個變量的值設置爲這個系統上的所有Oracle的實例的init.ora中的最大的那個processes的那個值加10。
例子:Set semsys:seminfo_semmni=100
semmns
含義:系統中emaphores的最大個數。
設置方法:這個值可以通過以下方式計算得到:各個Oracle實例的initSID.ora裏邊的processes的值的總和(除去最大的Processes參數)+最大的那個Processes×2+10×Oracle實例的個數。
例子:Set semsys:seminfo_semmns=200
semmsl:
含義:一個set中semaphore的最大個數。
設置方法:設置成爲10+所有Oracle實例的InitSID.ora中最大的Processes的值。
例子:Set semsys:seminfo_semmsl=-200
改變了/etc/system裏邊以上參數以後,重新啓動計算機:
$reboot
然後檢查當前的參數:
$sysdef -I
如果系統參數仍舊沒有改變得話,使用以下命令:
$modload /kernel/sys/shmsys。
一些預備知識
shared memory:共享內存段:
一個內存區域,可以被不同的進程讀取。Oracle使用它來構成SGA。Oracle使用以下三種方法來創建一個SGA區:
1. 使用單個共享內存段。
2. 使用連續多個共享內存段。
3. 使用多個不連續共享內存段。
Oracle優先使用的一種方法,如果成功,則繼續初始化,不成功則使用第二種方法,再不成功則使用第三種方法。如果再不成功,則初始化失敗,Oracle報告錯誤代碼。
Semaphore:
可以看作一個標記。可以有On和Off兩種狀態。Oracle使用semaphores來實現服務器進程對SGA區的存取控制。
Shared memory 和semaphore 是Oracle在Unix上運行的重要資源。如果Oracle 實例得不到所需要的資源,實例啓動就會失敗。
參數:
對於運行一個Oracle實例的Solaris系統,改變/etc/system文件中的一些關於共享內存的參數,以使Oracle實例可以正常運行。如果有多個實例的話,還需根據下面方法重新計算某些值。
shmmax
含義:這個設置並不決定究竟Oracle數據庫或者操作系統使用多少物理內存,只決定了最多可以使用的內存數目。這個設置也不影響操作系統的內核資源。
設置方法:0.5*物理內存
例子:Set shmsys:shminfo_shmmax=10485760
shmmin
含義:共享內存的最小大小。
設置方法:一般都設置成爲1。
例子:Set shmsys:shminfo_shmmin=1:
shmmni
含義:系統中共享內存段的最大個數。
例子:Set shmsys:shminfo_shmmni=100
shmseg
含義:每個用戶進程可以使用的最多的共享內存段的數目。
例子:Set shmsys:shminfo_shmseg=20:
semmni
含義:系統中semaphore identifierer的最大個數。
設置方法:把這個變量的值設置爲這個系統上的所有Oracle的實例的init.ora中的最大的那個processes的那個值加10。
例子:Set semsys:seminfo_semmni=100
semmns
含義:系統中emaphores的最大個數。
設置方法:這個值可以通過以下方式計算得到:各個Oracle實例的initSID.ora裏邊的processes的值的總和(除去最大的Processes參數)+最大的那個Processes×2+10×Oracle實例的個數。
例子:Set semsys:seminfo_semmns=200
semmsl:
含義:一個set中semaphore的最大個數。
設置方法:設置成爲10+所有Oracle實例的InitSID.ora中最大的Processes的值。
例子:Set semsys:seminfo_semmsl=-200
改變了/etc/system裏邊以上參數以後,重新啓動計算機:
$reboot
然後檢查當前的參數:
$sysdef -I
如果系統參數仍舊沒有改變得話,使用以下命令:
$modload /kernel/sys/shmsys。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.