本文描述了Sun Solaris上運行Oracle數據庫所需要設置的一些內核參數
一些預備知識
shared memory(共享內存段)
一個內存區域可以被不同的進程讀取Oracle使用它來構成SGAOracle使用以下三種方法來創建一個SGA區
使用單個共享內存段
使用連續多個共享內存段
使用多個不連續共享內存段
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
設置方法*物理內存
例子Set shmsys:shminfo_shmmax=
shmmin
含義共享內存的最小大小
設置方法一般都設置成為
例子Set shmsys:shminfo_shmmin=
shmmni
含義系統中共享內存段的最大個數
例子Set shmsys:shminfo_shmmni=
shmseg
含義每個用戶進程可以使用的最多的共享內存段的數目
例子Set shmsys:shminfo_shmseg=
信號量:
semmni
含義系統范圍內設置信號量集的最大數目 UNIX將信號量分配到個信號量集分配的信號量數目的范圍為到semmsl參數所設置的值
設置方法固定
例子Set semsys:seminfo_semmni=
semmsl:
含義一個set中semaphore的最大個數系統范圍內信號量集中信號量的數目
設置方法設置成為+所有Oracle實例的InitSIDora中最大的Processes的值
例子Set semsys:seminfo_semmsl=
semmns
含義系統中semaphores的最大個數
設置方法這個值可以通過以下方式計算得到各個Oracle實例的initSIDora裡邊的processes的值的總和(除去最大的Processes參數)+最大的那個Processes×+×Oracle實例的個數
例子Set semsys:seminfo_semmns=
semopm
set semsys:seminfo_semopm=
semvmx
set semsys:seminfo_semvmx=
改變了/etc/system裡邊以上參數以後重新啟動計算機
$reboot
然後檢查當前的參數
$sysdef I
如果系統參數仍舊沒有改變得話使用以下命令
$modload /kernel/sys/shmsys
From:http://tw.wingwit.com/Article/program/Oracle/201311/18009.html