成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Oracle DB BUFFER寶典說明

數據庫 Oracle
這里介紹當Oracle DB BUFFER改寫之后,服務器進程在臟數據列表中建立一條指向此Oracle DB BUFFER緩沖塊的指針。

經過長時間學習Oracle,于是和大家分享一下,看完本文你肯定有不少收獲,希望本文能教會你更多東西。生成編譯代碼之后,接著下一步服務器進程要準備開始更新數據,服務器進程將到Oracle DB BUFFER中查找是否有相關對象的緩存數據,下面分兩個可能進行解釋:

如果沒有,服務器進程將在表頭部請求一些行鎖,如果成功加鎖,服務器進程將從數據文件中讀入這些行所在的***個數據塊(db block)(DB BLOCK是ORACLE的最小操作單元,即使你想要的數據只是DB BLOCK中很多行中的一行或幾行,ORACLE也會把這個DB BLOCK中的所有行都讀入Oracle DB BUFFER中)放入Oracle DB BUFFER中空閑的區域或者覆蓋已被擠出LRU列表的非臟數據塊緩沖區,并且排列在LRU列表的頭部,如果這些非臟數據緩沖區寫完也不能滿足新數據的請求時,會立即觸發DBWN進程將臟數據列表中指向的緩沖塊寫入數據文件,并且清洗掉這些緩沖區,來騰出空間緩沖新讀入的數據,也就是在放入Oracle DB BUFFER之前也是要先申請Oracle DB BUFFER中的鎖存器,成功鎖定后,再寫入Oracle DB BUFFER,然后把這個塊的頭部事務列表及SCN信息及被影響的行數據原值寫入回滾段中,以便ORACLE在ROLLBACK時可以利用當前數據塊和回滾段重構數據塊的"前映像"或遞歸重構出"前…前映像"來實現讀一致性。

然后在LOG BUFFER中生成日志,服務器程將該語句影響的被讀入Oracle DB BUFFER塊中的這些行的ROWID及將要更新的原值和新值及SCN等信息,以及回滾段的修改信息(即對某某回滾段地址進行了什么修改)逐條的寫入REDO LOG BUFFER,在寫入REDO LOG BUFFER之前也是先請求REDO LOG BUFFER塊的鎖存器,成功鎖定之后才開始把REDOLOG寫入REDOLOG BUFFER。當寫入達到REDO LOG BUFFER大小的三分之一或寫入量達到1M或超過三秒后或發生檢查點時或者COMMIT時或者DBWN之前觸發LGWR進程,LGWR將把REDO LOG BUFFER中的數據寫入磁盤上的重做日志文件,已被寫入重做日志文件的REDO LOG BUFFER中的塊上的鎖存器被釋放,并可被后來寫入的信息所覆蓋。

回滾段其實也有BUFFER(在Oracle DB BUFFER中開辟),回滾段BUFFER中的內容是最早向磁盤上回滾段中寫的,寫完這些才會生成日志BUFFER中的內容,原因是日志中必須要記錄回滾段的新舊變化以便在恢復時從日志中的記錄的回滾段新舊變化對回滾段再次重寫,記住,REDO不光是對數據文件依據日志文件重寫,也要依據日志文件對回滾段重寫,而且重寫回滾段要先于重寫數據文件,要理解REDO就是重來一遍,所謂重來一遍就要跟正常的的先后順利一樣重做一遍(正常的操作中的順序就是先讀入Oracle DB BUFFER,寫回滾段buffer,后寫回滾段,后寫日志BUFFER,后改寫Oracle DB BUFFER,后寫日志***寫數據文件)區別是REDO時不用再記日志了,這樣解釋后相信大家應該理解為什么日志中也必須要記錄回滾段的信息了,只有這樣才可以對正常操作中的一個ROLLBACK動作進行恢復,即在REDO過程中利用即時重寫的數據塊和回滾段重構出一個當時適用的前鏡像來rollback。當一個重做日志文件寫滿后,LGWR將切換到下一個重做日志文件,重做日志文件也是循環工作方式。如果是歸檔模式,歸檔進程還將前一個寫滿的重做日志進程寫入歸檔日志文件。

當Oracle DB BUFFER改寫之后,服務器進程在臟數據列表中建立一條指向此Oracle DB BUFFER緩沖塊的指針。接著服務器進程會從數據文件讀入第二個數據塊(db block)重復以上讀入,建立回滾段,寫LOG BUFFER,改寫Oracle DB BUFFER,放入臟列表的動作,當臟數據列表達到一定長度時,DBWN進程將臟數據列表中指向的緩沖塊全部寫入數據文件,也就是釋放加在這些DB BUFER塊上的鎖存器,并在修改相應塊的頭部的SCN號(一次UPDATE操作只對應一個SCN)。前面說過DBWN動作之前會先觸發LGWR,這用以確保寫入數據文件的改變首先會被記錄在日志文件中。實際上ORACLE可以從數據文件中一次讀入多個塊放入Oracle DB BUFFER,然后再對這些塊建回滾段、再記日志等等,也就是每次操作的對象是DB BLOCK的復數,而不僅限于一次操作一個DB BLOCK,可以通過參數DB_FILE_MULTIBLOCK_READ_COUNT來設置一次讀入的塊的個數。注意,不管是否提交,用戶的所有更改都會被記錄在日志文件中,用戶級回滾的動作(rollback)沒有對應的COMMIT SCN。

在密集事務的情況下,LGWR可以把多個COMMIT產生的REDO條目批量寫入REDO LOG FILE,但每個COMMIT之間有十分之一秒的間隔,且會產生不同的COMMIT SCN。LGWR正常情況下是一個休眠進程,會被一定的條件觸發,喚醒,比如COMMIT就是一個喚醒條件,一旦LGWR被喚醒,LGWR將把喚醒時間點之前LOG BUFFER中產生的所有內容(從上次LGWR喚醒后到本次喚醒前之間寫入LOG BUFFER的內容)寫入LOG FILE,直到LGWR完成后,LGWR才可以被再次觸發,在LGWR觸發到完成期間所有對數據庫的操作仍然可以不間斷的加入LOG BUFFER。在這段時間內,LGWR不再接收其它條件的觸發,比如緊跟前一個COMMIT之后的其它COMMIT(復數)都要等待LGWR完成后才可以再次觸發LGWR,并在LGWR下次被觸發時,將積累的REDO BUFFER條目一次性寫入REDO LOG,后繼的COMMIT不會單個單個的觸發LGWR。

如果要查找的數據已緩存,則根據用戶的SQL操作類型決定如何操作,如果是SELECT則查看Oracle DB BUFFER塊的頭部是否有事務,如果有,將利用回滾段進行重構出一致性塊再讀取,如果沒有則比較SELECT的SCN與Oracle DB BUFFER塊頭部的SCN如果比自己大,仍然同上,如果比自己小則認這是一個非臟緩存,可以直接從這個Oracle DB BUFFER塊中讀取。如果是UPDATE則即使在Oracle DB BUFFER中找到一個沒有事務,而且SCN比自己小的非臟緩存數據塊,服務器進程仍然要到表的頭部對這條記錄申請加鎖,加鎖成功則進行后續動作,如果不成功,則要等待前面的進程解鎖后才能進行動作。

【編輯推薦】

  1. 簡單描述Oracle物化視圖日志
  2. 簡要概述Oracle客戶端
  3. 五分鐘掌握Oracle調優
  4. 探討Oracle primary索引
  5. 高手討論Oracle物化視圖
責任編輯:佚名 來源: 博客園
相關推薦

2010-08-25 13:36:53

DB2Oracle

2011-07-18 18:01:34

buffer cach

2009-11-05 17:53:05

Oracle用戶表空間

2010-11-03 16:16:09

DB2目錄視圖

2010-04-29 16:15:06

Oracle flas

2010-05-07 19:15:18

Oracle flas

2009-11-18 11:02:40

Oracle對象特權

2009-11-20 10:40:33

Oracle SMON

2010-04-14 17:51:44

Oracle DB L

2010-08-31 09:54:37

DB2Oracle

2010-08-27 15:13:14

DB2命令AIX

2009-12-21 10:10:25

Oracle產品

2009-12-21 10:47:27

ORACLE .NET

2009-12-21 09:39:50

Oracle 存儲過程

2009-12-21 10:01:05

Oracle技術

2011-04-14 13:18:11

Oracle

2010-08-31 14:04:49

DB2驅動

2021-12-24 08:42:29

Oracle數據庫后端開發

2010-07-29 13:09:48

DB2 9.7 兼容

2010-04-27 14:33:44

Oracle SMON
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久久青草| 日韩欧美日韩在线 | 亚洲午夜精品视频 | 91视视频在线观看入口直接观看 | 免费在线成人 | 1000部精品久久久久久久久 | 日韩欧美理论片 | 欧美日韩久久 | 色资源在线观看 | 99这里只有精品视频 | www国产成人免费观看视频,深夜成人网 | 国产日韩一区二区三免费高清 | 日韩在线视频一区 | 日韩资源 | 天天操天天干天天爽 | 亚洲视频在线观看 | 国产永久免费 | 亚洲精品美女视频 | 久久青草av | 国产探花| 国产激情一区二区三区 | 第四色狠狠 | 91成人免费观看 | 国产精品成人一区二区 | 美女视频久久 | 亚洲精品乱码 | 日本三级电影免费 | 99re视频在线 | 国产成人免费视频网站高清观看视频 | 91福利网| 国产高清在线精品 | 中文字字幕一区二区三区四区五区 | 国产资源视频 | 深夜福利影院 | 欧美综合在线视频 | 狠狠躁天天躁夜夜躁婷婷老牛影视 | 狠狠综合久久av一区二区老牛 | 日韩精品在线视频免费观看 | 在线观看国产h | 亚洲一区二区三区免费视频 | 国产高清在线视频 |