Oracle 内核参数
安裝Oracle的時候,可以參考Oracle 的安裝文檔,來設置相關內(nèi)核參數(shù)的值,但是有些參數(shù)的值還是需要根據(jù)我們自己的情況來進行調(diào)整。注:不同系統(tǒng)的參數(shù)不同,本篇針對linux。
一。Linux 系統(tǒng)下的核心參數(shù)
1 # vi /etc/sysctl.conf 2 3 kernel.shmmax = 2147483648 4 kernel.shmall = 2097152 5 kernel.shmmni = 4096 6 kernel.sem = 250 32000 100 128 7 fs.file-max = 65536 8 net.ipv4.ip_local_port_range = 9000 65000 9 net.core.rmem_default = 4194304 10 net.core.rmem_max = 4194304 11 net.core.wmem_default = 262144 12 net.core.wmem_max = 262144 13 14 該參數(shù)保存在/etc/sysctl.conf 下,修改該文件不需要重啟OS,只需要使用如下命令: 15 # /sbin/sysctl -p在介紹各個參數(shù)之前,先來看一個概念:共享內(nèi)存?
共享內(nèi)存是在系統(tǒng)內(nèi)核分配的一塊緩沖區(qū),多個進程都可以訪問該緩沖區(qū)。由于進程可以直接讀寫內(nèi)存,避免了在內(nèi)核空間與用戶空間的切換,所以共享內(nèi)存讀寫效率很高。當一個進程改變了這塊地址中的內(nèi)容的時候,其它進程都會察覺到這個更改。共享內(nèi)存類似與windows環(huán)境編程中的內(nèi)存映像文件。通過使用共享內(nèi)存允許兩個或多個進程共享一定的存儲區(qū),因為不需要拷貝數(shù)據(jù)。Oracle SGA即是基于此方式來實現(xiàn)Oracle進程之間數(shù)據(jù)共享。因此SGA的合理設置對Oracle性能有重大的影響。可以通過ipcs -lm來查看所有的共享內(nèi)存設置。
? 共享內(nèi)存總大小=(每個共享內(nèi)存段*相應共享內(nèi)存段大小)總和
1.1 kernel.shmmax
Shmmax 是核心參數(shù)中最重要的參數(shù)之一,用于定義單個共享內(nèi)存段的最大值。shmmax 設置應該足夠大,能在一個共享內(nèi)存段下容納下整個的SGA ,設置的過低可能會導致需要創(chuàng)建多個共享內(nèi)存段,這樣可能導致系統(tǒng)性能的下降 。
Shmmax 僅僅是在共享內(nèi)存段被創(chuàng)建的時候用來比較的一個數(shù)字,當共享內(nèi)存段被一個進程(Process)創(chuàng)建,操作系統(tǒng)檢查是否被要求的共享內(nèi)存段的值大于shmmax 的值 ,如果是,那么將會拋出一個錯誤。這個時候系統(tǒng)會創(chuàng)建另外的一個或多個共享內(nèi)存段滿足進程的需求 。一般來說,共享內(nèi)存段個數(shù)和系統(tǒng)性能沒有太直接的關系,也不會對性能產(chǎn)生太大的影響。
Oralce 建議 SHMMAX > SGA(SGA_MAX_SIZE),這樣在任何時候都不會有甚至輕微的性能下降的隱患。
1.2 kernel.shmall
kernel.shmall 參數(shù)是控制共享內(nèi)存頁數(shù)。該參數(shù)大小為物理內(nèi)存除以pagesize;
1 查看os系統(tǒng)頁的大小 2 #getconf PAGESIZE 3 4096這里顯示的pagesize 是4k,假設一個共享內(nèi)存段的最大大小是16G,那么需要共享內(nèi)存頁數(shù)是 16GB/4KB=16777216KB/4KB=4194304(頁),也就是64Bit 系統(tǒng)下16GB 物理內(nèi)存,設置 kernel.shmall = 4194304 才符合要求,幾乎是原來設置2097152的兩倍。
?1.3 kernel.shmmni
Shmmni 內(nèi)核參數(shù)是共享內(nèi)存段的最大數(shù)量(注意:這個參數(shù)不是 shmmin,是shmmni, shmmin 表示內(nèi)存段最小大小 )。shmmni 缺省值 4096 ,一般肯定是夠用了。
1.4 kernel.sem = SEMMSL SEMMNS SEMOPM? SEMMNI?
共享資源提供并發(fā)同步的計數(shù)器(PV操作),避免競爭,一個時刻只能由一個進程操作共享資源,多人可能要操作共識資源,計數(shù)器提供計數(shù),排隊。
- SEMMSL:內(nèi)核參數(shù)用于控制每個信號集合的最大信號數(shù)。Oracle 建議將 SEMMSL 設置為 spfileXXX.ora文件(適用于Linux 系統(tǒng)上所有數(shù)據(jù)庫)中的最大 process實例參數(shù)設置再加上 10。此外,Oracle 建議將 SEMMSL 設置為不小于 100。
- SEMMNS:內(nèi)核參數(shù)用于控制整個Linux 系統(tǒng)中的信號(而非信號集)的最大數(shù)量。Oracle 建議將 SEMMNS 設置為系統(tǒng)上每個數(shù)據(jù)庫的 process實例參數(shù)設置之和,加上最大的 process的兩倍,最后為系統(tǒng)上的每個 Oracle 數(shù)據(jù)庫加上 10。
- SEMOPM: 內(nèi)核參數(shù)用于控制每個 semop 系統(tǒng)調(diào)用可以執(zhí)行的信號操作數(shù)。semop 系統(tǒng)調(diào)用(函數(shù))能夠使用一個 semop 系統(tǒng)調(diào)用完成多個信號的操作。一個信號集可以擁有每個信號集中最大數(shù)量的 SEMMSL,因此建議將 SEMOPM 設置為等于 SEMMSL。Oracle 建議將 SEMOPM 設置為不小于 100。
- SEMMNI: 內(nèi)核參數(shù)用于控制整個 Linux 系統(tǒng)中信號集的最大數(shù)量。 Oracle 建議將 SEMMNI 設置為不小于 100。使用以下計算式確定可以在 Linux 系統(tǒng)上分配的信號的最大數(shù)量。它將是以下兩者中較小的一個值:SEMMNS 或? (SEMMSL * SEMMNI) 。
1.5 fs.file-max
文件句柄數(shù),表示在Linux系統(tǒng)中可以打開的文件數(shù)量。Oracle 建議將整個系統(tǒng)的文件句柄值至少設置為 65536。建議設置:fs.file-max=512*processes。
1.6 網(wǎng)絡參數(shù)
net.ipv4.ip_local_port_range 應用程序可使用的IPv4端口范圍。net.core.rmem_default 套接字接收緩沖區(qū)大小的缺省值net.core.rmem_max 套接字接收緩沖區(qū)大小的最大值net.core.wmem_default 套接字發(fā)送緩沖區(qū)大小的缺省值net.core.wmem_max 套接字發(fā)送緩沖區(qū)大小的最大值1.7 fs.aio-max-nr
指同時可以擁有的的異步IO請求數(shù)目。建議設置為:1048576 其實它等于 1024*1024 也就是 1024K 個。
?
二. Oracle 參數(shù) SGA_TARGET
在Oracle 10g 中引入了一個新特性:自動共享內(nèi)存管理(Automatic Shared Memory Management ASMM)??刂七@一特性的,就是參數(shù)SGA_TARGE。當給SGA_TARGET 指定值后(默認為0,即沒有啟動ASMM),就自動啟動ASMM特性。啟動ASSM 特性之后:Oracle 可以自動為我們調(diào)整以下內(nèi)存池的大小:
1 * Buffer cache (DB_CACHE_SIZE) 2 * Shared pool (SHARED_POOL_SIZE) 3 * Large pool (LARGE_POOL_SIZE) 4 * Java pool (JAVA_POOL_SIZE) 5 * Streams pool (STREAMS_POOL_SIZE)需要手動調(diào)整的參數(shù):
1 log buffer 2 db_nk_cache_size 3 db_keep_cache_size 4 db_recycle_cache_sizeSGA_TARGET和SGA_MAX_SIZE 都是表示SGA 最大的大小,但SGA_TARGET不能大于SGA_MAX_SIZE 。Oracle10g 下, SGA_MAX_SIZE 仍然表示SGA 的大小的上限值,而SGA_TARGET 是SGA 的所有組件的大小的最大值之和,即當SGA_TARGET< SGA_MAX_SIZE 的時候,oracle 就會忽略SGA_MAX_SIZE 的值,SGA_TARGET 也就成了SGA 的在此實例中的上限制,它能動態(tài)改變大小,但是不能夠大于SGA_MAX_SIZE 的值。
當SGA_TARGET< SGA_MAX_SIZE 時,實例重啟以后SGA_MAX_SIZE 就變成SGA_TARGET 的大小了。
?
總結(jié)
以上是生活随笔為你收集整理的Oracle 内核参数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python flask面试题_Flas
- 下一篇: 添加永久路由的方法