您好,登錄后才能下訂單哦!
Oracle Study之案例--安裝Oracle內核參數配置
在Linux系統下,安裝Oracle之前,除了檢查操作系統的硬件和軟件是否滿足安裝需要之外,一個重點就是修改內核參數,其中最主要的是和內存相關的參數設置。
案例分析:
查看當前系統的內核參數配置:
[root@rh7 ~]# sysctl -p net.ipv4.ip_forward = 0 net.ipv4.conf.default.rp_filter = 1 net.ipv4.conf.default.accept_source_route = 0 kernel.sysrq = 0 kernel.core_uses_pid = 1 net.ipv4.tcp_syncookies = 1 error: "net.bridge.bridge-nf-call-ip6tables" is an unknown key error: "net.bridge.bridge-nf-call-iptables" is an unknown key error: "net.bridge.bridge-nf-call-arptables" is an unknown key fs.aio-max-nr = 1048576 fs.file-max = 6815744 kernel.shmall = 2097152 kernel.shmmax = 536870912 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
SHMMAX參數:
Linux進程可以分配的單獨共享內存段的最大值。一般設置為內存總大小的一半。這個值的設置應該大于SGA_MAX_TARGET或MEMORY_MAX_TARGET的值,因此對于安裝Oracle數據庫的系統,shmmax的值應該比內存的二分之一大一些。
# grep MemTotal /proc/meminfo
# cat /proc/sys/kernel/shmmax
上面的命令是檢查系統內存的大小,以及當前shmmax的設置。
# echo 21474836480 > /proc/sys/kernel/shmmax
# sysctl -w kernel.shmmax=21474836480
# echo "kernel.shmmax=21474836480" >> /etc/sysctl.conf
這是設置shmmax參數的幾種方法,這三種方式都可以將shmmax設置為20G。這個參數的修改可以不重啟數據庫。個人推薦使用第二種sysctl命令的方式。采用第三種方式需要執行sysctl –p操作或重啟,但是為了確保下次重啟后設置值仍然生效,第三種方式是必不可少的。前兩種方式類似alter system set scope = memory,而第三種方式則類似alter system set scope = spfile。
SHMMNI參數:
設置系統級最大共享內存段數量。Oracle10g推薦最小值為4096,可以適當比4096增加一些。
# cat /proc/sys/kernel/shmmni
# echo 4096 > /proc/sys/kernel/shmmni
# sysctl -w kernel.shmmni=4096
# echo "kernel.shmmni=4096" >> /etc/sysctl.conf
檢查和設置方法如上,這和shmmax的修改方式沒有區別,不在贅述。
SHMALL參數:
設置共享內存總頁數。這個值太小有可能導致數據庫啟動報錯。很多人調整系統內核參數的時候只關注SHMMAX參數,而忽略了SHMALL參數的設置。這個值推薦設置為物理內存大小除以分頁大小。
# getconf PAGE_SIZE
通過getconf獲取分頁的大小,用來計算SHMALL的合理設置值:
SQL> select 32*1024*1024*1024/4096 from dual;
32*1024*1024*1024/4096
----------------------
8388608
對于32G的內存,4K分頁大小的系統而言,SHMALL的值應該設置為8388608。
# cat /proc/sys/kernel/shmall
# echo 8388608 > /proc/sys/kernel/shmall
# sysctl -w kernel.shmall=8388608
# echo " kernel.shmall=8388608" >> /etc/sysctl.conf
查詢和設置方法如上。
信號燈semaphores是進程或線程間訪問共享內存時提供同步的計數器。
SEMMSL參數:
設置每個信號燈組中信號燈最大數量,推薦的最小值是250。對于系統中存在大量并發連接的系統,推薦將這個值設置為PROCESSES初始化參數加10。
SEMMNI參數:
設置系統中信號燈組的最大數量。Oracle10g和11g的推薦值為142。
SEMMNS參數:
設置系統中信號燈的最大數量。操作系統在分配信號燈時不會超過LEAST(SEMMNS,SEMMSL*SEMMNI)。事實上,如果SEMMNS的值超過了SEMMSL*SEMMNI是非法的,因此推薦SEMMNS的值就設置為SEMMSL*SEMMNI。Oracle推薦SEMMNS的設置不小于32000,假如數據庫的PROCESSES參數設置為600,則SEMMNS的設置應為:
SQL> select (600+10)*142 from dual;
(600+10)*142
------------
86620
SEMOPM參數:
設置每次系統調用可以同時執行的最大信號燈操作的數量。由于一個信號燈組最多擁有SEMMSL個信號燈,因此有推薦將SEMOPM設置為SEMMSL的值。Oracle驗證的10.2和11.1的SEMOPM的配置為100。
通過下面的命令可以檢查信號燈相關配置:
# cat /proc/sys/kernel/sem
250 32000 100 128
對應的4個值從左到右分別為SEMMSL、SEMMNS、SEMOPM和SEMMNI。修改方法為:
# echo 610 86620 100 142 > /proc/sys/kernel/sem
# sysctl -w kernel.sem="610 86620 100 142"
# echo "kernel.sem=610 86620 100 142" >> /etc/sysctl.conf
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。