linux中與Oracle有關的核心引數詳解

2021-09-06 16:28:12 字數 2792 閱讀 1842

工作當中遇到oracle執行時cpu佔用率達到90%以上,調小以下引數值後恢復正常。

fs.file-max = 65536      

net.core.rmem_default=262144

net.core.rmem_max=262144

net.core.wmem_default=262144

net.core.wmem_max=262144

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

linux安裝文件中給出的最小值:

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.shmall = 2097152  就是 2097152*4k/1024/1024 = 8g 就是說可用共享記憶體一共 8g

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()呼叫在乙個訊號量集合上可以執行的運算元量。q

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

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

linux中與Oracle有關的核心引數詳解

在安裝oracle的時候需要調整linux的核心引數,但是各引數代表什麼含義呢,下面做詳細解析。linux安裝文件中給出的最小值 fs.aio max nr 1048576 fs.file max 6815744 kernel.shmall 2097152 kernel.shmmax 4294967...

linux中與Oracle有關的核心引數詳解

在安裝 oracle 的時候需要調整 linux 的核心引數,但是各引數代表什麼含義呢,下面做詳細解析。linux 安裝文件中給出的最小值 fs.aio max nr 1048576 fs.file max 6815744 kernel.shmall 2097152 kernel.shmmax 42...

linux中與Oracle有關的核心引數詳解

linux中與oracle有關的核心引數詳解 在安裝oracle 的時候需要調整 linux 的核心引數 但是各引數代表什麼含義呢,下面做詳細解析。linux 安裝文件中給出的最小值 fs.aio max nr 1048576 fs.file max 6815744 kernel.shmall 20...