Linux 中與 Oracle Database 相關的內核參數詳解

安裝Oracle的時候需要調整linux內核參數,但是各參數代表什麼含義呢,下面做詳細解析。

Oracle官方安裝文檔中給出的最小值:

fs.aio-max-nr = 1048576

fs.file-max = 6815744

kernel.shmall = 2097152

kernel.shmmax = 4294967295

kernel.shmmni = 4096

kernel.sem = 250 32000 100 128

net.ipv4.ip_local_port_range = 9000 65500

net.core.rmem_default = 262144

net.core.rmem_max = 4194304

net.core.wmem_default = 262144

net.core.wmem_max = 1048586


各參數詳解:

kernel.shmmax:

是核心參數中最重要的參數之一,用於定義單個共享內存段的最大值。設置應該足夠大,能在一個共享內存段下容納下整個的SGA ,設置的過低可能會導致需要創建多個共享內存段,這樣可能導致系統性能的下降。至於導致系統下降的主要原因爲在實例啓動以及ServerProcess創建的時候,多個小的共享內存段可能會導致當時輕微的系統性能的降低(在啓動的時候需要去創建多個虛擬地址段,在進程創建的時候要讓進程對多個段進行“識別”,會有一些影響),但是其他時候都不會有影響。

官方建議值:

32位linux系統:可取最大值爲4GB(4294967296bytes)-1byte,即4294967295。建議值爲多於內存的一半,所以如果是32爲系統,一般可取值爲4294967295。32位系統對SGA大小有限制,所以SGA肯定可以包含在單個共享內存段中。

64位linux系統:可取的最大值爲物理內存值-1byte,建議值爲多於物理內存的一半,一般取值大於SGA_MAX_SIZE即可,可以取物理內存-1byte。例如,如果爲12GB物理內存,可取12*1024*1024*1024-1=12884901887,SGA肯定會包含在單個共享內存段中。 

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)

kernel.shmmni:

該參數是共享內存段的最大數量。shmmni缺省值4096,一般肯定是夠用了。

fs.file-max:

該參數決定了系統中所允許的文件句柄最大數目,文件句柄設置代表linux系統中可以打開的文件的數量。

fs.aio-max-nr:

      此參數限制併發未完成的請求,應該設置避免I/O子系統故障。

kernel.sem:

以kernel.sem = 250 32000 100 128爲例:

       250是參數semmsl的值,表示一個信號量集合中能夠包含的信號量最大數目。

       32000是參數semmns的值,表示系統內可允許的信號量最大數目。

       100是參數semopm的值,表示單個semopm()調用在一個信號量集合上可以執行的操作數量。

       128是參數semmni的值,表示系統信號量集合總數。

net.ipv4.ip_local_port_range:

    表示應用程序可使用的IPv4端口範圍。

net.core.rmem_default:

表示套接字接收緩衝區大小的缺省值。

net.core.rmem_max:

表示套接字接收緩衝區大小的最大值。

net.core.wmem_default:

表示套接字發送緩衝區大小的缺省值。

net.core.wmem_max:表示套接字發送緩衝區大小的最大值。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章