日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

Oracle 內(nèi)存結(jié)構(gòu)和進程結(jié)構(gòu)

 guolijiegg 2012-01-18

Oracle 內(nèi)存結(jié)構(gòu)和進程結(jié)構(gòu)

分類: Oracle 171人閱讀 評論(0) 收藏 舉報

Oracle 內(nèi)存結(jié)構(gòu)如下圖:

1:實例(Instance)        
  在一個中,每一個運行的Oracle數(shù)據(jù)庫都與一個數(shù)據(jù)庫實例相聯(lián)系,實例是我們
 訪問數(shù)據(jù)庫的手段。
  實例在操作系統(tǒng)中用ORACLE_SID來標(biāo)識,在Oracle中用參數(shù)INSTANCE_NAME來標(biāo)識,
 它們兩個的值是相同的。數(shù)據(jù)庫啟動時,系統(tǒng)首先在內(nèi)存中分配系統(tǒng)全局區(qū)(SGA),
 構(gòu)成了Oracle的內(nèi)存結(jié)構(gòu),然后啟動若干個常駐內(nèi)存的操作系統(tǒng)進程,即組成了Oracle的
 進程結(jié)構(gòu),內(nèi)存區(qū)域和后臺進程合稱為一個Oracle實例。

數(shù)據(jù)庫與實例之間是1對1/n的關(guān)系,在非并行的數(shù)據(jù)庫系統(tǒng)中每個Oracle數(shù)據(jù)庫與一個
 實例相對應(yīng);在并行的數(shù)據(jù)庫系統(tǒng)中,一個數(shù)據(jù)庫會對應(yīng)多個實例,同一時間用戶只與一個
 實例相聯(lián)系,當(dāng)某一個實例出現(xiàn)故障時,其他實例自動服務(wù),保證數(shù)據(jù)庫正常運行。在任何
 情況下,每個實例都只可以對應(yīng)一個數(shù)據(jù)庫。

 2:Oracle 10g動態(tài)內(nèi)存管理
  內(nèi)存是影響數(shù)據(jù)庫性能的重要因素,Oracle8i使用靜態(tài)內(nèi)存管理,Oracle 10g使用動態(tài)
 內(nèi)存管理。所謂靜態(tài)內(nèi)存管理,就是在數(shù)據(jù)庫系統(tǒng)中,無論是否有用戶連接,也無論并發(fā)用
 量大小,只要數(shù)據(jù)庫服務(wù)在運行,就會分配固定大小的內(nèi)存;動態(tài)內(nèi)存管理允許在數(shù)據(jù)庫服
 務(wù)運行時對內(nèi)存的大小進行修改,讀取大數(shù)據(jù)塊時使用大內(nèi)存,小數(shù)據(jù)塊時使用小內(nèi)存,讀
 取標(biāo)準(zhǔn)內(nèi)存塊時使用標(biāo)準(zhǔn)內(nèi)存設(shè)置。


  按照系統(tǒng)對內(nèi)存使用方法的不同,Oracle數(shù)據(jù)庫的內(nèi)存可以分為以下幾個部分:
  系統(tǒng)全局區(qū):SGA(System Global Area)
  程序全局區(qū):PGA(Programe Global Area)
  排序池:(Sort Area)
  大池:(Large Pool)
  池:( Pool)

 2-1:系統(tǒng)全局區(qū)SGA(System Global Area)
   SGA是一組為系統(tǒng)分配的共享的內(nèi)存結(jié)構(gòu),可以包含一個數(shù)據(jù)庫實例的數(shù)據(jù)或控制信
  息。如果多個用戶連接到同一個數(shù)據(jù)庫實例,在實例的SGA中,數(shù)據(jù)可以被多個用戶共享。
  當(dāng)數(shù)據(jù)庫實例啟動時,SGA的內(nèi)存被自動分配;當(dāng)數(shù)據(jù)庫實例關(guān)閉時,SGA內(nèi)存被回收。
  SGA是占用內(nèi)存最大的一個區(qū)域,同時也是影響數(shù)據(jù)庫性能的重要因素。
  SGA的有關(guān)信息可以通過下面的語句查詢,sga_max_size的大小是不可以動態(tài)調(diào)整的。
   =====================================
   SQL> show parameter sga
   NAME                                 TYPE        VALUE
   ------------------------------------ ----------- --------
   lock_sga                             boolean     FALSE
   pre_page_sga                         boolean     FALSE
   sga_max_size                         big integer 164M
   sga_target                           big integer 0
   
   SQL> alter system set sga_max_size=100m;
   alter system set sga_max_size=100m
                 *
   ERROR at line 1:
   ORA-02095: specified initialization parameter cannot be modified
   ======================================  
  

系統(tǒng)全局區(qū)按作用不同可以分為:
   數(shù)據(jù)緩沖區(qū)
   日志緩沖區(qū)
   共享池

  2-1-1:數(shù)據(jù)緩沖區(qū)(Database Buffer Cache)
    如果每次執(zhí)行一個操作時,Oracle都必須從磁盤讀取所有數(shù)據(jù)塊并在改變它之后
   又必須把每一塊寫入磁盤,顯然效率會非常低。數(shù)據(jù)緩沖區(qū)存放需要經(jīng)常訪問的數(shù)據(jù),
   供所有用戶使用。修改數(shù)據(jù)時,首先從數(shù)據(jù)文件中取出數(shù)據(jù),在數(shù)據(jù)緩沖區(qū)中,
   修改/插入數(shù)據(jù)也在緩沖區(qū)中,commit或DBWR(下面有詳細(xì)介紹)進程的其他條
   件引發(fā)時,數(shù)據(jù)被寫入數(shù)據(jù)文件。
    數(shù)據(jù)緩沖區(qū)的大小是可以動態(tài)調(diào)整的,但是不能超過sga_max_size的限制。
   ======================================
   SQL> show parameter db_cache_size
   NAME                                 TYPE        VALUE
   ------------------------------------ ----------- -----------------
   db_cache_size                        big integer 24M
   
   SQL> alter system set db_cache_size=128m;
   alter system set db_cache_size=128m
   *
   ERROR at line 1:
   ORA-02097: parameter cannot be modified because specified value is invalid
   ORA-00384: Insufficient memory to grow cache

   SQL> alter system set db_cache_size=20m;
   System altered.
   
   SQL> show parameter db_cache_size;
   NAME                                 TYPE        VALUE
   ------------------------------------ ----------- -----------------
   db_cache_size                        big integer 20M
   
   #此處我僅增加了1M都不行?
   SQL> alter system set db_cache_size=25m;
   alter system set db_cache_size=25m
   *
   ERROR at line 1:
   ORA-02097: parameter cannot be modified because specified value is invalid
   ORA-00384: Insufficient memory to grow cache

   #修改顯示格式,方便查看。
   SQL> column name format a40 wrap
   SQL> column value format a20 wrap
   
   #下面語句可以用來查看內(nèi)存空間分配情況,注意SGA各區(qū)大小總和。
   SQL> select name,value from v$parameter where name like '%size' and value <> '0';
   
   #先將java_pool_size調(diào)小,然后再修改db_cache_size
   SQL> show parameter java_pool_size;
   NAME                                 TYPE        VALUE
   ------------------------------------ ----------- -----
   java_pool_size                       big integer 48M

   SQL> alter system set java_pool_size=20m;
   System altered.

   SQL> alter system set java_pool_size=30m;
   System altered.
   #上面說明SGA中各區(qū)大小總和不能超過sga_max_size。
   =====================================
    數(shù)據(jù)緩沖區(qū)的大小對數(shù)據(jù)庫的存區(qū)速度有直接影響,多用戶時尤為明顯。有些應(yīng)
   用對速度要求很高,一般要求數(shù)據(jù)緩沖區(qū)的命中率在90%以上。
    下面給出一種計算數(shù)據(jù)緩沖區(qū)命中率的方法:
    使用數(shù)據(jù)字典v$sysstat
    =====================================
    SQL> select name, value from v$sysstat
         2  where name in('session logical reads',
         3  'physical reads',
         4  'physical reads direct',
         5  'physical reads direct (lob)')
    NAME                              VALUE
    ------------------------------- ----------
    session logical reads               895243
    physical reads                       14992
    physical reads direct                   34
    physical reads direct (lob)              0
    ======================================
    命中率=1-(14992-34-0)/895243

    可以讓Oracle給出數(shù)據(jù)緩沖區(qū)大小的建議:
    ======================================
    SQL> alter system set db_cache_advice=on;#打開該功能
    System altered.

    SQL> alter system set db_cache_advice=off;#關(guān)閉該功能
    System altered.
    ======================================

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

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多