程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> Oracle SGA設置的詳細介紹

Oracle SGA設置的詳細介紹

編輯:Oracle數據庫基礎

沒有通用的Oracle SGA設置,那麼所有Oracle SGA設置都需要根據系統的負載、相關的業務需求與某些硬件環境來對其進行調整。這裡只是總結出大體的設定,避免因SGA設置不當引起的問題。

1,自動SGA內存管理

在Oracle 10g中引入了自動SGA內存管理特性,DBA可以設定SGA_TARGET告訴Oracle可用的SGA內存為多大,由Oracle根據系統負載來動態調整各組件大小,相應的數定會保存在控制文件中,使數據庫重啟後也記得各組件大小。

需要注意一下幾點:

要使用自動SGA內存管理,STATISTICS_LEVEL參數必須設為TYPICAL或ALL,系統自動收集相應的信息用來動態調整SGA設定。

可以設定某個組件的值,Oracle SGA使用此值為該組件的最小大小

可動態調整的參數:

DB_CACHE_SIZE,SHARED_POOL_SIZE,LARGE_POOL_SIZE,Java_POOL_SIZE。

需手動設置的參數:

LOG_BUFFER,STREAMS_POOL,DB_NK_CACHE_SIZE,DB_KEEP_CACHE_SIZE,DB_RECYCLE_CACHE_SIZE。

2,手動SGA內存管理

1) 32bit和64bit限制

在32位的操作系統中,Oracle最大可用內存為1.75g,也就是說SGA+PGA<=1.75g,超過這一限制的內存將不會被Oracle用到。

32位的Oracle可以裝到64位的操作系統上,64位的Oracle SGA不可以裝到32位的操作系統上。

2) 查看Oracle版本:

SQL> select * from v$version;

BANNER

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod

PL/SQL Release 10.2.0.1.0 - Production

CORE 10.2.0.1.0 Production

TNS for 32-bit Windows: Version 10.2.0.1.0 - Production

NLSRTL Version 10.2.0.1.0 – Production

3) 各組件設置:

JAVA_POOL_SIZE:如果沒用到數據庫端Java的系統,30MB足夠。

LOG_BUFFER:默認為MAX(512KB,128KB*CPU個數)。一般系統1MB足夠,運行大型事務的系統可以設為2MB,讓1/3滿寫入日志文件時可以繼續寫入緩沖,再大也沒有意義。

SHARED_POOL_SIZE:過大過小都會嚴重影響系統性能,1GB內存可以設為100MB,2GB內存可設為150MB,4GB內存可設為300MB。共享池命中過低首先要調整的是應用程序而不是擴大共享池。使用綁定變量可以減少共享池需求、提高命中率,減少共享池管理負擔和LATCH競爭。

LARGE_POOL_SIZE:使用專用服務模式可設為30MB,除非必要,不然不建議使用共享服務器模式。

DB_CACHE_SIZE:除去上述內存外其他可用內存都分配給該區域。

總結

32位Oracle SGA:

1G內存:SHARED_POOL_SIZE=100MB,DB_CACHE_SIZE=0.5GB;

2G內存:SHARED_POOL_SIZE=150MB,DB_CACHE_SIZE=1.25GB;

64位Oracle

4G內存:SHARED_POOL_SIZE=200MB,DB_CACHE_SIZE=2.5GB;

8G內存:SHARED_POOL_SIZE=400MB,DB_CACHE_SIZE=5GB;

12G內存:SHARED_POOL_SIZE=500MB,DB_CACHE_SIZE=8GB

再次強調,以上只是避免因SGA設置不當引起問題的大體設置,需要根據具體的系統負載和業務邏輯結合Stackpack等工具細調。
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved