Oracle 學習之--Buffer Cache深入解析

來源:互聯網
上載者:User

標籤:oracle

Oracle 學習之--Buffer Cache深入解析

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/40/BE/wKioL1PPVxOwPpjTAAL_LJN_ltc591.jpg" title="1.png" alt="wKioL1PPVxOwPpjTAAL_LJN_ltc591.jpg" />

伺服器處理序和資料庫緩衝區快取:

   當伺服器需要塊時,需要按系列步驟讀取塊:

1、首先,伺服器使用散列函數檢查是否可以從緩衝區快取中獲得所需要的塊。如果找到緩衝區,則將它移動到LRU列表中遠離LRU末尾的另一端。這是邏輯讀取,因為沒有發生實際的I/O。如果在緩衝區快取中找不到緩衝區,則伺服器處理序(Server)必須從資料檔案中讀取。

2、對資料檔案進行讀取之前,伺服器處理序將搜尋LRU列表,以獲得閒置緩衝區。所有被伺服器處理序修改的緩衝區都放在檢查點隊列中。以便在檢查點期間寫出到磁碟。

3、如果檢查點的大小超出了其閾值,伺服器會發出訊號通知DBWn重新整理資料緩衝區快取中的髒資料緩衝區。如果伺服器在搜尋閾值內找不到閒置緩衝區,將發出訊號通知DBWn進行重新整理。

4、找到空閑緩衝區後,伺服器將塊從資料檔案中讀入到資料庫緩衝區快取中過的空閑緩衝區。Oracle伺服器處理序把緩衝區移動到LRU列表中遠離LRU末尾的位置。

5、如果對塊的讀取不一致,伺服器會由當前塊和復原段重建塊的早期版本。

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/40/C2/wKiom1PPWf3QxLHpAAKvpcChYLg906.jpg" title="bu2.png" alt="wKiom1PPWf3QxLHpAAKvpcChYLg906.jpg" />

DBWn進程和資料庫緩衝區快取:

    DBWn將髒資料區塊寫入資料檔案,以確保伺服器有空閑塊,並以此來管理緩衝區快取。DBWn響應執行個體中不同的事件:

1、Checkpoint Queue Exceeds Threshold:如果伺服器處理序發現檢查點隊列的大小超出其閾值,就會發出訊號通知DBWn進行重新整理。DBWn則將檢查點隊列中的緩衝區全部寫出。

當檢查點隊列25%滿就會觸發DBWn的寫操作:

SQL> desc x$kvit           Name                                      Null?    Type ----------------------------------------- -------- ---------------------------- ADDR                                               RAW(8) INDX                                               NUMBER INST_ID                                            NUMBER KVITVAL                                            NUMBER KVITTAG                                            VARCHAR2(64) KVITDSC                                            VARCHAR2(64)SQL> col KVITTAG for a20SQL> col KVITDSC for a50SQL> set linesize 120SQL> select KVITTAG,KVITVAL,KVITDSC,INST_ID from x$kvit where KVITTAG=‘kcbldq‘;KVITTAG                 KVITVAL KVITDSC                                               INST_ID-------------------- ---------- -------------------------------------------------- ------kcbldq                       25 large dirty queue if kcbclw reaches this             1

2、Search Threshold Exceeded:如果在搜尋閾值範圍內,伺服器處理序在LRU列表中找不到空閑緩衝區,就會發出訊號通知DBWn重新整理檢查點隊列。DBWn則直接將檢查點隊列中的髒資料緩衝區全部寫出。


SQL> select KVITTAG,KVITVAL,KVITDSC,INST_ID from x$kvit where KVITTAG=‘kcbfsp‘;KVITTAG                 KVITVAL KVITDSC                                             INST_ID-------------------- ---------- -------------------------------------------------- ------kcbfsp                       40 Max percentage of LRU list foreground can scan for      1

3、LGWR Singals a Checkpoint:當LGWR發出訊號,指示檢查點已經發生時,DBWn將髒資料緩衝區從檢查點寫入到磁碟上。

SQL> select * from v$log;    GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIM---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ---------         5          1        952   10485760          2 YES INACTIVE               1360633 23-JUL-14         6          1        953   10485760          2 NO  CURRENT                1360669 23-JUL-14SQL> alter system switch logfile;System altered.SQL> alter system switch logfile;System altered.SQL> select * from v$log;    GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIM---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ---------         5          1        954   10485760          2 YES INACTIVE               1360952 23-JUL-14         6          1        955   10485760          2 NO  CURRENT                1360962 23-JUL-14日誌:Completed checkpoint up to RBA [0x3b9.2.10], SCN: 1360669Wed Jul 23 15:08:08 2014Beginning log switch checkpoint up to RBA [0x3ba.2.10], SCN: 1360952Thread 1 advanced to log sequence 954  Current log# 5 seq# 954 mem# 0: +DG1/prod/onlinelog/group_5.263.848858213  Current log# 5 seq# 954 mem# 1: +RCY1/prod/onlinelog/group_5.256.848858217Wed Jul 23 15:08:25 2014Thread 1 cannot allocate new log, sequence 955Checkpoint not complete  Current log# 5 seq# 954 mem# 0: +DG1/prod/onlinelog/group_5.263.848858213  Current log# 5 seq# 954 mem# 1: +RCY1/prod/onlinelog/group_5.256.848858217Wed Jul 23 15:08:33 2014Completed checkpoint up to RBA [0x3ba.2.10], SCN: 1360952Wed Jul 23 15:08:34 2014Beginning log switch checkpoint up to RBA [0x3bb.2.10], SCN: 1360962Thread 1 advanced to log sequence 955  Current log# 6 seq# 955 mem# 0: +DG1/prod/onlinelog/group_6.264.848858253  Current log# 6 seq# 955 mem# 1: +RCY1/prod/onlinelog/group_6.257.848858259Wed Jul 23 15:08:36 2014Completed checkpoint up to RBA [0x3bb.2.10], SCN: 1360962

4、Alter Tablespace offline Temporary or Alter Tablespace Begin Backup:如果資料表空間被臨時離線更改,或者啟動了他的聯機備份,則DBWn會將資料表空間的髒資料緩衝區從檢查點隊列寫出到磁碟上。

5、Drop Object:刪除某個對象後,DBWn會首先將該對象髒資料緩衝區重新整理到磁碟上。

6、Clean Shutdown:(正常、立即或交易處理)

本文出自 “天涯客的blog” 部落格,請務必保留此出處http://tiany.blog.51cto.com/513694/1445105

Oracle 學習之--Buffer Cache深入解析

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.