oracle SGA配置和管理

chenfengwww發表於2012-07-10

Oracle對記憶體的管理的 最佳化從未間斷,從8i到11g不斷地提出新的管理概念。每個本版都對記憶體管理進行了簡化:

  8i->9i:PGA的自動管理;

  9i->10g:SGA的自動管理;

  10g->11g:MEMORY(SGA+PGA)的自動管理。

  在11g中oracle引入了自動化記憶體管理(Automatic Memory Management)概念,僅用兩個引數就能完成oracle的記憶體管理工作。

自動記憶體管理:
從9i開始,sga_max_size引數設定SGA 的記憶體大小,不能動態修改
從10g開始,指定了sga_target引數後,所有的SGA元件如:shared pool、 data buffer、 large pool都不用手工指定了,Oracle會自動管理。這一特性就是自動共享記憶體管理ASMM。如果設定了sga_target=0,就自動關閉自動共享內 存管理功能。Sga_target大小不能超過sga_max_size的大小。
手動管理SGA:
Alter system set sga_target=2000m;
Alter system set db_cache_size=1000m;
Alter system set shared_pool=200m;
Alter system set sga_target=0---------關閉自動共享記憶體管理ASMM
11G以後sga+pga整個記憶體可以自動管理AMM,相關 引數memory_max_target memory_target.設定好這兩個引數後就不用關心SGA和PGA了
11g手動記憶體管理:
Alter system set memory_target=3000m;
Alter system set sga_target=2000m;
Alter system set pga_aggregate_target=1000m;
Alter system set memory_target=0;---------關閉自動記憶體管理AMM
SGA+PGA最好不要超過總記憶體的70%

[@more@]

檢視SGA區剩餘可用記憶體的方法

SQL> col OBJECT_NAME format a20
  SQL> col 自由空間百分比(%) format 90.99   --格式化,把小數點對齊為兩位
  
  SQL> select name,
        sgasize/1024/1024        "Allocated(M)",
        bytes/1024            "自由空間(K)",
        round(bytes/sgasize*100, 2)   "自由空間百分比(%)"
     from (select sum(bytes) sgasize from sys.v_$sgastat) s, sys.v_$sgastat f
     where f.name = 'free memory';
  
  NAME Allocated(M) 自由空間(K) 自由空間百分比(%)
  -------------------------- ------------ ----------- -----------------
  free memory 54.4491119 11619.457 20.84
  free memory 54.4491119 600 1.08
  free memory 54.4491119 17788 31.90
  
在考慮設定oracle會話數的時候,有一個基本原則,oracle支援CPU個數的5-10倍的活動會話(Active)
這樣情況下oracle的處理能力比較理想
需要根據觀察oracle的活動會話情況調整應用服務的JDBC連線設定
如weblogic中JDBC的連線數設定並不是大越好,最好不要初始值等於最大值,初始值太大會造成oracle的活動會話多,會影響oracle的效能,合適的JDBC初始連線數是較好的

shared_pool_size=135000000
db_cache_size=400000000
large_pool_size=70000000
java_pool_size=16000000
sort_area_size=1048576
SGA_MAX_SIZE=750000000
SGA_TARGET=750000000
pga_aggregate_target=360000000
hash_area_size=1100000
processes=400
open_cursors=3000


主要是SGA、PGA、共享池(shared_pool_size)、緩衝池(db_cache_size)、大型池(large_pool_size)、JAVA池(java_pool_size)
還有processes、open_cursors
SGA=30%-40%實體記憶體
PGA=50%SGA
共享池=20%SGA
緩衝池=50%SGA
大型池=10%SGA
JAVA池=2%SGA
緩衝池>共享池

設定為歸檔模式
SQL> shutdown immediate
SQL> startup mount
SQL> alter database archivelog;
SQL> alter database open;

調整引數
SQL> alter system set processes=800 scope=spfile;
系統已更改。
SQL> alter system set open_cursors=5000 scope=spfile;
系統已更改。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22036495/viewspace-1058784/,如需轉載,請註明出處,否則將追究法律責任。

相關文章