oracle安裝linux時的核心引數解釋

tonyzhou_cn發表於2012-06-20
cat >>/etc/sysctl.conf <
kernel.shmall = 2097152
kernel.shmmax = 536870912
kernel.shmmni = 4096
kernel.sem = 250 32000100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default=262144
net.core.rmem_max=262144
net.core.wmem_default=262144
net.core.wmem_max=262144
EOF
/sbin/sysctl -p
----------------------------
kernel.shmmax =2147483648
//該引數定義了共享記憶體段的最大尺寸(以位元組為單位)。
   kernel.shmmax ----SHMMAXAvailable physical memory Defines the maximum allowable sizeof one sharedmemory segment. The SHMMAX setting should be largeenoughto hold the entire SGA in one shared memory segment. A low settingcancause creation of multiple shared memory segments which may leadtoperformance degradation.
Shmmax是核心引數中最重要的引數之一,用於定義單個共享記憶體段的最大值,
shmmax設定應該足夠大,能在一個共享記憶體段下容納下整個的SGA ,設定的過低可能會導致需要建立多個共享記憶體段,這樣可能導致系統效能的下降。
SHMMAX僅僅是在共享記憶體段被建立的時候用來比較的一個數字,當共享記憶體段被一個程式(Process)建立,作業系統檢查是否被要求的共享記憶體段的值大於 shmmax 的值,如果是,那麼將會丟擲一個錯誤。這個時候系統會建立另外的一個或多個共享記憶體段滿足程式的需求。一般來說,共享記憶體段個數和系統效能沒有太直接的關係,也不會對效能產生太大的影響。
    Steve Adams 在他的小冊子中說過,在例項啟動以及Server Process 建立的時候,多個小的共享記憶體段可能會導致當時輕微的系統效能的降低(在啟動的時候需要去建立多個虛擬地址段,在程式建立的時候要讓程式對多個段進行“識別”,會有一些影響),但是其他時候都不會有影響。這意味著如果你的程式不是經常 CreateProcesses(以及Destroy Them),效能方面就不是考慮的問題。
     當然Oralce 的建議是希望一個大的共享記憶體段能容納整個SGA,其值應>=sag_max_size初始化引數的大小,還要不小於實體記憶體的一半,這樣在任何時候都不會有甚至輕微的效能下降的隱患。Oracle 安裝文件建議 32BitLinux 系統設定shmmax 為32Bit 最大的限制值(setting shmmax to the 32-bit number limit),也就是4G 。
       所以一般來說,1-4G 的實體記憶體,可以直接設定shmmax為最大實體記憶體即可,那麼SGA 肯定在一個共享記憶體段中,32Bit Linux 系統實體記憶體大於4G 的設定為4G 即可 。
總之,一般設定shmmax >=SGA(32Bit 系統是否支援到1.7G 以上SGA 需要注意) ,預設為32M,
如果是64Bit 的Linux 作業系統,shmmax 設定為大於SGA_MAX_SIZE即可。
Ipcs  -sa 可以看到共享記憶體段個數

kernel.shmmni =4096                     
//這個核心引數用於設定系統範圍內共享記憶體段的最大數量。
kernel.shmmni----shmmni 核心引數是共享記憶體段的最大數量(注意這個引數不是shmmin,是shmmni, shmmin 表示記憶體段最小大小 ) 。shmmni 預設值4096 。
此值也是在系統中可以啟動的Oracle例項的最大數量,通常不需要更改,
因為顯然在生產環境下,一個伺服器上同時啟動的例項個數達不到這個數量.
kernel.shmall = 2097152
//該參數列示系統任意時刻可以分配的所有共享記憶體段的總和的最大值(以頁為單位).
kernel.shmall----kernel.shmall 引數是控制共享記憶體頁數 。Linux共享記憶體頁大小為4KB,共享記憶體段的大小都是共享記憶體頁大小的整數倍。一個共享記憶體段的最大大小是16G,那麼需要共享記憶體頁數是16GB/4KB=16777216KB/4KB=4194304 (頁),也就是64Bit 系統下16GB 實體記憶體,設定 kernel.shmall = 4194304才符合要求(幾乎是原來設定2097152的兩倍)。這時可以將shmmax 引數調整到 16G 了,同時可以修改SGA_MAX_SIZE 和SGA_TARGET為 12G(您想設定的SGA 最大大小,當然也可以是2G~14G 等,還要協調PGA引數及OS 等其他記憶體使用,不能設定太滿,比如16G)。
其值應不小於shmmax/page_size.預設值就是2097152,如果伺服器上執行的所有例項的
SGA總和不超過8GB(通常系統可分配的共享記憶體的和最大值為8GB),通常不需要修改.
kernel.sem = 250 32000100 128      // 表示設定的訊號量
fs.file-max =65536                // 表示一個程式可以開啟的檔案控制程式碼的最大數量.
net.ipv4.ip_local_port_range = 1024 65000//專用伺服器模式下與使用者程式通訊時分配給使用者的埠區間
net.core.rmem_default=262144       // 預設接收緩衝區大小
net.core.rmem_max=262144           // 接收緩衝區最大值
net.core.wmem_default=262144       // 預設的傳送緩衝區大小
net.core.wmem_max=262144           // 傳送緩衝區最大值
以上四個值的設定是Oracle安裝時推薦的.(應在安裝完後把最大值改為524288)
修改好核心引數後,執行如下命令使新的設定生效
/sbin/sysctl -p

 

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

相關文章