Oracle初始安裝內存設置參考


 

預備知識
shared memory:共享內存段:
  一個內存區域,可以被不同的進程讀取。oracle使用它來構成sga。oracle使用以下三種方法來創建一個sga區:
  1. 使用單個共享內存段。
  2. 使用連續多個共享內存段。
  3. 使用多個不連續共享內存段。
  oracle優先使用的一種方法,如果成功,則繼續初始化,不成功則使用第二種方法,再不成功則使用第三種方法。如果再不成功,則初始化失敗,oracle報告錯誤代碼。

  semaphore:
  可以看作一個標記。可以有on和off兩種狀態。oracle使用semaphores來實現服務器進程對sga區的存取控制。
shared memory 和semaphore 是oracle在unix上運行的重要資源。如果oracle 實例得不到所需要的資源,實例啟動就會失敗。


PGA+SGA=ORACLE占用的內存。

PGA: 每個oracle用戶占用的內存,一般設為內存的10%,官方建議:
Oracle recommends initially setting this parameter to 16% of your server’s physical memory for OLTP systems and 40% of your server’s physical memory for DSS systems

PGA需要登陸oracle的客戶端,在例程里修改,或者
對於ora9i,在32位平台上 9i的sga默認最多只能擴展到1.7G,如果想突破這個限制,需要重新link Oracle軟件。以下為sga為900M的例子:
alter system set db_cache_size = 700m scope = spfile;
alter system set shared_pool_size = 200m scope=spfile;
alter system set pga_aggregate_target = 100m scope=spfile;

對於oracle10G,sga默認最多只能擴展到2.5G,如果想突破這個限制,需要重新link Oracle軟件。有4G內存的情況下,可以這樣分配:
10g 不用 設置 db_cache_size 和 shared_pool_size ,它是自動管理的,你只要 給他個最大內存就行
alter system set sga_target = 2g scope=spfile;
alter system set pga_aggregate_target = 500m scope=spfile ;

察看oracle連接數

select   count(*)   from   sys.v_$session

 

查看oracle最大連接數

SQL〉show parameter processes ,看最后一行。

修改 SQL〉alter system set processes=1000 scope=spfile;

scope=spfile 用於重起生效




 

服務器物理內存×(0.16 至 0.40) = 要分配給所有PGA的內存總量
初始SGA大小:
服務器物理內存×0.55 = 要分配給所有SGA的內存總量(TSGA)
注意:TSGA要小於已分配給oracle的共享內存段大小 共享內存段echo "2147483648" > /proc/sys/kernel/shmmax
TSGA/服務器上Oracle實例個數=每個實例的總SGA大小(TSGAI)
TSGAI×0.4=已分配給SHARED POOL的總內存
TSGAI×0.6=已分配給 DATABASE BUFFER CACHE的總內存
####TSGAI×0.10=已分配給 REDO LOG BUFFER 的總內存
以上原則在內存小於1GB的服務器上非常適用。
在內存大於1GB的服務器上 :
要分配給所有SGA的內存總量(TSGA)=服務器物理內存×(0.60至0.75)

共享內存通過將通用的結構和數據放在共享內存段中,使得進程可以對它們進行訪問。這是現有最快的進程間通信(IPC)方式 主要是因為數據在進程之間傳遞時沒有涉及到內核的操作。在進程之間不需要復制數據。
Oracle 將共享內存用於它的系統全局區 (SGA),這是一個由所有的 Oracle 備份進程及前台進程所共享的內存區域。為 SGA 分配足夠的容量對於 Oracle 的性能非常重要,因為它負責保存數據庫緩沖區高速緩存、共享 SQL、訪問路徑以及更多。

shmmax
共享內存段的最大大小(以字節為單位)
  含義:這個設置並不決定究竟oracle數據庫或者操作系統使用多少物理內存,只決定了最多可以使用的內存數目。這個設置也不影響操作系統的內核資源。
  設置方法:0.5*物理內存
通過直接更改 /proc 文件系統,你無需重新啟動計算機便可以改變 SHMMAX 的缺省設置。可以使用以下方法動態設置 SHMMAX 的值。通過將此命令置於 /etc/rc.local 啟動文件中可以使它永久有效:
 echo "2147483648" > /proc/sys/kernel/shmmax

shmmni
  這個內核參數用於設置系統范圍內共享內存段的最大數量。該參數的缺省值是 4096。該值足以滿足需要,因此通常無需更改。
可以通過執行以下命令來確定 SHMMNI 的值:
# cat /proc/sys/kernel/shmmni
4096

shmall
該參數控制系統一次可以使用的共享內存總量(以頁為單位)
shmall 的默認大小為 2097152,並可以使用以下命令進行查詢:
# cat /proc/sys/kernel/shmall
2097152
shmall 的默認設置足以滿足 Oracle RAC 10g 安裝的需要。
(注意:i386 平台上的 Red Hat Linux 中的頁面大小為 4,096 字節。但您可以使用 bigpages,它支持配置更大的內存頁面大小。)

設置信號
對信號的最佳描述是,它是用於在共享資源(如共享內存)的進程(或進程中的線程)之間提供同步的計數器。Unix System V 支持信號集,其中的每個信號都是一個信號計數。當應用程序請求信號時,它使用“集合”來完成此工作。
要確定所有信號限制,可使用以下命令:
# ipcs -ls
------ Semaphore Limits --------
max number of arrays = 128
max semaphores per array = 250
max semaphores system wide = 32000
max ops per semop call = 32
semaphore max value = 32767

您還可以使用以下命令:
# cat /proc/sys/kernel/sem
250 32000 32 128

semmsl
內核參數用於控制每個信號集合的最大信號數。
系統所占用信號量可用下列命令查出:#ipcs –sb ,其中列NSEMS顯示系統已占用信號量
Oracle 建議將 SEMMSL 設置為 init.ora 文件(適用於 Linux 系統上所有數據庫)中的最大 PROCESS 實例參數設置再加上 10。此外,Oracle 建議將 SEMMSL 設置為不小於 100。
  例子:set semsys:seminfo_semmsl=-200

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

semmns

內核參數用於控制整個 Linux 系統中的信號(而非信號集)的最大數量
每個process會占用一個信號量,Oracle 建議將 SEMMNS 設置為系統上每個數據庫的 PROCESSES 實例參數設置之和,加上最大的 PROCESSES 的兩倍,最后為系統上的每個 Oracle 數據庫加上 10。
設置方法:這個值可以通過以下方式計算得到:各個oracle實例的initsid.ora里邊的processes的值的總和(除去最大的processes參數)+最大的那個processes×2+10×oracle實例的個數。

shmseg
  含義:每個用戶進程可以使用的最多的共享內存段的數目。
  例子:set shmsys:shminfo_shmseg=20:
 

如何增加ORACLE連接數
ORACLE的連接數(sessions)與其參數文件中的進程數(process)有關,它們的關系如下:
sessions=(1.1*process+5)
但是我們增加process數時,往往數據庫不能啟動了。這因為我們還漏調了一個unix系統參數:它是/etc/system/ 中semmns,這是unix系統的信號量參數。每個process會占用一個信號量。semmns調整后,需要重新啟動unix操作系統,參數才能生效。不過它的大小會受制於硬件的內存或ORACLE SGA。范圍可從200——2000不等。
semmns的計算公式為:SEMMNS>processes+instance_processes+system
processes=數據庫參數processes的值 instance_processes=5(smon,pmon,dbwr,lgwr,arch)
system=系統所占用信號量。系統所占用信號量可用下列命令查出:#ipcs -sb
其中列NSEMS顯示系統已占用信號量。


有關oracle的基本參數的調整:
/oracle/admin/ora9i/pfile/initora9i.ora.10202007144030為安裝時創建,一幫用於還原時使用,oracle正常啟動時使用的是
product/9.2/dbs/spfileora9i.ora這個2進制文件,不能修改,當對oracle進行調整時,修改被記錄到這個文件中,當修改導致oracle不能正常啟動時,可以使用pfile文件進行恢復啟動
startup pfile='/oracle/admin/ora9i/pfile/initora9i.ora.10202007144030' (正常啟動為 startup)
但是oracle的參數將變為初始安裝的狀態。
可以使用以下的命令生成pfile文件:
create spfile from pfile='/oracle/admin/ora9i/pfile/initora9i.ora.10202007144030'
調整的參數


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM