1. 程式人生 > >總結Oracle系統內核參數優化設置

總結Oracle系統內核參數優化設置

初始 file-max 導致 文件中 linux共享內存 擁有 sysctl pro oracle db

Oracle系統內核參數設置優化 :

Oracle內核參數配置文件在 /etc/sysctl.conf路徑下:

vi /etc/sysctl.conf

# System default settings live in /usr/lib/sysctl.d/00-system.conf.
# To override those settings, enter new settings here, or in an /etc/sysctl.d/<name>.conf file
#
# For more information, see sysctl.conf(5) and sysctl.d(5).

#ORACLE SETTING

kernel.shmmax = 64424509440
kernel.shmmni = 4096
kernel.shmall = 15728640
kernel.sem = 5010 641280 5010 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
fs.aio-max-nr = 1048576
fs.file-max = 6815744


1、kernel.shmall: 共享內存頁數的最大值

Linux共享內存頁大小為4KB, 共享內存段的大小都是共享內存頁大小的整數倍。一個共享內存段的最大可以設置16G,對應需要共享內存頁數為16GB/4KB=16777216KB/4KB=4194304(頁) 參數數值根據系統內存大小對應設置優化。

2、kernel.shmmax:單個共享內存段的最大值
shmmax是核心參數中最重要的參數之一,用於定義單個共享內存段的最大值,shmmax設置應足夠大,設置過低可能會導致需要創建多個共享內存段,導致系統性能下降 ,一般情況下可以設置最大共享內存為物理內存的一半,如物理內存是 1G,則可以設置最大共享內存為 512 1024 1024 = 536870912;以此類推,在redhat上最大共享內存不建議超過41024

1024*1024-1=4294967295。

3、kernel.shmmni:共享內存段的最小數量
shmmni缺省值4096 足夠

4、kernel.sem:對應4個值
SEMMSL、SEMMNS、SEMOPM、SEMMNI

(1)SEMMSL: 每個信號集的最大信號數量
當oracle DB初始化參數文件中PROCESSES參數設置較大時,需要調整SEMAPHORES設置SEMMSL應該設置為服務器中各個實例中最大的PROCESSES參數+10,例如,當最大的PROCESSES參數為5000時,SEMMSL應設置為5010。 Oracle 建議將 SEMMSL 的值設置為不少於 100 。
查看oracle 的最大連接數命令:select * from v$license;

(2)SEMMNS:用於控制整個 Linux 系統中信號(而不是信號集)的最大數。
Oracle 建議將 SEMMNS 設置為:系統中每個數據庫的 PROCESSES 實例參數設置值的總和,加上最大 PROCESSES 值的兩倍,最後根據系統中 Oracle 數據庫的數量,每個加 10 。
SEMMNS參數應設置為SEMMSLSEMMNI,接上例SEMMSL為5010,SEMMNS參數應為(5010128)=641280

(3)SEMOPM: 內核參數用於控制每個 semop 系統調用可以執行的信號操作的數量。semop 系統調用(函數)提供了利用一個 semop 系統調用完成多項信號操作的功能。一個信號集能夠擁有每個信號集中最大數量的SEMMSL 信號,因此建議設置 SEMOPM 等於SEMMSL ,Oracle 建議將 SEMOPM 的值設置為不少於 100 。

(4)SEMMNI :內核參數用於控制整個 Linux 系統中信號集的最大數量。
Oracle 建議將 SEMMNI 的值設置為不少於 100 。

配置完這些之後使用 sysctl -p 重新加載生效!!

總結Oracle系統內核參數優化設置