Oracle和SUN Solaris核心引數

edwardking888發表於2010-06-29

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資料庫或者作業系統使用多少實體記憶體,只決定了最多可以使用的記憶體數目。這個設定也不影響作業系統的核心資源。max shared memory segment size (SHMMAX) bytes
設定方法: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
含義:系統範圍內設定訊號量集的最大數目. UNIX將訊號量分配到個訊號量集.分配的訊號量數目的範圍為1到semmsl引數所設定的值.
設定方法:固定
例子:Set semsys:seminfo_semmni=100

semmsl:
含義:一個set中semaphore的最大個數。系統範圍內訊號量集中訊號量的數目.
設定方法:設定成為10+所有Oracle例項的InitSID.ora中最大的Processes的值。
例子:Set semsys:seminfo_semmsl=200

semmns
含義:系統中semaphores的最大個數。
設定方法:這個值可以通過以下方式計算得到:各個Oracle例項的initSID.ora裡邊的processes的值的總和(除去最大的Processes引數)+最大的那個Processes×2+10×Oracle例項的個數。
例子:Set semsys:seminfo_semmns=200

semopm
set semsys:seminfo_semopm=100

semvmx
set semsys:seminfo_semvmx=32767

改變了/etc/system裡邊以上引數以後,重新啟動計算機:
$reboot
然後檢查當前的引數:
$sysdef -I
如果系統引數仍舊沒有改變得話,使用以下命令:
$modload /kernel/sys/shmsys。

 

如果你的檔案系統選用了ZFS檔案系統

請使用

kstat zfs

命令檢查ZFS CACHE引數

如果

 c_max                           32364298240

很大,有可能導致系統效能問題。(比如SWAP很高)

可以在/etc/system

檔案中加入

set zfs:zfs_arc_max=4294967296    #zfs最大CACHE是4GB

來限制FILE CACHE

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8183550/viewspace-666602/,如需轉載,請註明出處,否則將追究法律責任。

相關文章