小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

認識Oracle數(shù)據庫System Global Area (SGA)-入門基礎

 krrish 2010-07-27

1 概述

  Oracle SGA區(qū)的監(jiān)控和管理,是數(shù)據庫日常維護的重要內容。本文詳細介紹SGA的基本概念,SGA運行情況檢查,以及SGA的參數(shù)設置原則,希望對大家的有所幫助。

  2 SGA的基本概念

  當啟動Oracle數(shù)據庫時,系統(tǒng)會先在內存內規(guī)劃一個固定區(qū)域,用來儲存用戶需要的數(shù)據,以及Oracle運行時必備的系統(tǒng)信息。我們稱此區(qū)域為系統(tǒng)全局區(qū)(System Global Area),簡稱SGA。

  SGA 包含數(shù)個重要區(qū)域,分別是:

  ■ Database Buffer Cache (數(shù)據庫緩沖區(qū))

  ■ Redo Log Buffer (重做日志緩沖區(qū))

  ■ Shared Pool (共享區(qū))

  ■ 其它,如Java pool, Large pool

  2.1 Database Buffer Cache (數(shù)據庫緩沖區(qū))

  數(shù)據庫緩沖區(qū)的作用主要是在內存中緩存從數(shù)據庫中讀取的數(shù)據塊。數(shù)據庫緩沖區(qū)越大,為用戶已經在內存里的共享數(shù)據提供的內存就越大,這樣可以減少所需要的磁盤物理讀。

  在9i以前數(shù)據庫緩沖區(qū)的大小是由db_block_buffers*db_block_size 來決定大小的。db_block_size參數(shù)是在創(chuàng)建數(shù)據庫時設置的,OLTP系統(tǒng)的db_block_size一般設置為8k。

  在9i中,數(shù)據庫緩沖區(qū)的大小由db_cache_size決定,8i中的db_block_buffers被取消。db_cache_size的單位是字節(jié),它直接決定了數(shù)據庫緩沖區(qū)的大小,而不再是塊的數(shù)量。

  2.2 Shared Pool (共享區(qū))

  共享區(qū)由三部分組成,分別是Dictionary cache(包括數(shù)據字典的定義,如表結構、權限等),Library cache(包括共享的sql游標,sql原代碼以及執(zhí)行計劃、存儲過程和會話信息)和Control structure。它的大小由初始化參數(shù)shared_pool_size控制,它的作用是緩存已經被解析過的SQL,使其能被重用,不用再解析。SQL的解析非常消耗CPU的資源,如果一條SQL在Shared pool中已經存在,則進行的僅是軟解析(在Shared pool中尋找相同SQL),這將大大提高數(shù)據庫的運行效率。當然,這部分內存也并非越大越好,太大的Shared pool,oracle為了維護共享結構,將付出更大的管理開銷。建議在150M-500M之間。如果系統(tǒng)內存為1G,該值可設為150M-200M;如果為2G,該值設為250M-300M;每增加1G內存,該值增加100M;但該值最大不應超過500M。

  2.3 Redo Log Buffer (重做日志緩沖區(qū))

  Log_buffer是重做日志緩沖區(qū),對數(shù)據庫的任何修改都按順序被記錄在該緩沖,然后由LGWR 進程將它寫入磁盤。LGWR的寫入條件是:用戶提交、有1/3 重做日志緩沖區(qū)未被寫入磁盤、有大于1M 重做日志緩沖區(qū)未被寫入磁盤、超時、DBWR需要寫入的數(shù)據的SCN 號大于LGWR 記錄的SCN 號,DBWR 觸發(fā)LGWR寫入。

  從中可以看出,大于1M的log buffer值意義并不大。重做日志緩沖區(qū)的大小由初始化參數(shù)log_buffer設定。

 

文章轉載自網管網:http://www./pdb/oracle/200904/160360.html

 
2.4 Large pool和Java pool
  Large pool:用于MTS、并行查詢和RMAN。如果使用了MTS或RMAN,large_pool特別有用,它可以降低用戶對share pool的爭用。
  如果應用系統(tǒng)不使用MTS,也不使用RMAN,large_pool_size的大小可設為1M。
  Java pool:Oracle8I以后,oracle數(shù)據庫內置了對java的支持,如果數(shù)據庫安裝時選擇了JServer組件,則這個值可以設置為20M-30M之間??梢圆樵僾$option動態(tài)視圖,如果java那一項值為true,則表示安裝了JServer,為false,表示未安裝。
  如果應用系統(tǒng)不使用PORTAL,APPS,也不使用RMAN,Java pool值的大小可設為1M。如果系統(tǒng)需要安裝補丁,建議先把Java pool值的大小臨時增加到50-150M。
  3 SGA運行情況檢查
  3.1 SGA整體檢查
  對于SGA部分,我們通過sqlplus查詢:
        SQL> show sga
  Total System Global Area 316899848 bytes
  Fixed Size 741896 bytes
  Variable Size 150994944 bytes
  Database Buffers 163840000 bytes
  Redo Buffers 1323008 bytes
 
  或者
        SQL> select * from v$sga;
  NAME VALUE
  -------------------- ----------
  Fixed Size 741896
  Variable Size 150994944
  Database Buffers 163840000
  Redo Buffers 1323008
 
  Show sga的結果和SGA的初始化參數(shù)配置并不是完全一一對應的,下面是每一個部分的具體解釋:
  Fixed Size
  oracle 的不同平臺和不同版本下可能不一樣,但對于確定環(huán)境是一個固定的值,里面存儲了SGA各部分組件的信息,可以看作引導建立SGA的區(qū)域。
  Variable Size
  包含了shared_pool_size、java_pool_size、large_pool_size等內存設置和用于管理數(shù)據緩沖區(qū)等內存結構的hash table、塊頭信息等。
 
 
Database Buffers
  指數(shù)據緩沖區(qū),在8i中包含default pool、buffer_pool_keep、buffer_pool_recycle三部分內存。在9i中包含db_cache_size、db_keep_cache_size、db_recycle_cache_size、db_nk_cache_size。這里要注意在8i中三部分內存總和為db_block_buffers*db_block_size。
  Redo Buffers
  指重做日志緩沖區(qū)的實際大小,和log_buffer的值可能稍有不同。
  3.2 Data buffer 命中率檢查
  檢查語句:
        SQL>select 1 - (phy.value / (cur.value + con.value)) "HIT RATIO"
  from v$sysstat cur, v$sysstat con, v$sysstat phy where cur.name = 'db block gets'
  and con.name = 'consistent gets'
  and phy.name = 'physical reads';
 
  調整原則:
  命中率不應該低于90%.
  如果該值過低,應該調高初始化參數(shù)。8i調整db_block_buffer,9i調整db_cache_size。
  3.3 Dictionary cache命中率檢查
  檢查語句:
        SQL>SELECT 1 - (SUM(getmisses)/SUM(gets)) "Data Dictionary Hit Ratio" FROM v$rowcache;
  調整原則:
  命中率不應該低于95%.
  如果該值過低,應調高shared_pool_size的大小。
  3.4 Library cache命中率檢查
  檢查語句:
        SQL>SELECT 1-(SUM(reloads)/SUM(pins)) "Library cache Hit Ratio" FROM v$librarycache;
  調整原則:
  命中率不應該低于99%.
  如果該值過低,應調高shared_pool_size的大小。
3.5 Log buffer命中率檢查

  檢查語句:

  

     SQL>select (req.value*5000)/entries.value "Ratio"

  from v$sysstat req, v$sysstat entries

  where req.name = 'redo log space requests'

  and entries.name = 'redo entries';

  調整原則:

  命中率不應該高于1.

  如果該值過高,應調高log_buffer的大小。

  4 SGA 的參數(shù)設置原則

  在 Oracle8i 時,SGA 的大小是由初始化參數(shù)文件內的某些參數(shù)所設定,最麻煩的是每次調整參數(shù)之后必須等重新激活數(shù)據庫才生效。從Oracle9i 開始,DBA 可以動態(tài)配置內存的大小;這樣的技術我們稱為「dynamicSGA」。有了dynamic SGA ,SGA的各組成區(qū)域都可以動態(tài)地進行規(guī)劃與調整,而不需先關閉數(shù)據庫。

  在Oracle9i中,SGA_MAX_SIZE可設定 SGA 所占用的最大內存空間。需要注意的是:SGA_MAX_SIZE 盡量不要超過物理內存大小,否則將會使用到硬盤上的虛擬內存,反而導致性能低下。如果 SGA_MAX_SIZE 之設定值小于其它 SGA 相關參數(shù)設定值的總和,或是小于各相關參數(shù)默認值的總和,則 SGA_MAX_SIZE 之設定值無效。

  在SGA的基本概念部分,已經介紹了各個部分大小設置的原則,這里再用一句話來總結:

  1)數(shù)據庫緩沖區(qū)建議占物理內存的20%-30%。物理內存在1G以內,可以占20%,1G-2G之間可占25%,物理內存在2G以上,可以占30%,甚至更高。

  2)共享區(qū)建議在150M-500M之間。如果系統(tǒng)內存為1G,該值可設為150M-200M;如果為2G,該值設為250M-300M;每增加1G內存,該值增加100M;但該值最大不應超過500M。

  3)重做日志緩沖區(qū)建議設為1M。

  4)如果應用系統(tǒng)不使用MTS,也不使用RMAN,Large pool的大小可設為1M。否則設為16M。

  5)如果應用系統(tǒng)不使用RMAN,Java pool值的大小可設為1M。否則設為50M。如果系統(tǒng)需要安裝補丁,建議先把Java pool值的大小臨時增加到50-150M。

  調整完上述參數(shù)后,一定要計算SGA的尺寸,總原則是SGA的尺寸應小于物理內存的一半。SGA的計算方法如下:SGA=DB_BLOCK_BUFFERS*DB_BLOCK_SIZE+SHARED_POOL_SIZE+LOG_BUFFER。同時還要保證(SGA+sort_area_size*sesson數(shù)量)不大于物理內存的70%。

    本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多