• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
    問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
    當前位置: 首頁 - 科技 - 知識百科 - 正文

    Oracleblockcleanout

    來源:懂視網 責編:小采 時間:2020-11-09 07:18:47
    文檔

    Oracleblockcleanout

    Oracleblockcleanout:簡單點說,在oracle的block上都有活動事務的標志的,如果一個事務commit后,由于某些block在commit之前已經寫回datafile,或者事務影響到的block數過多,則commit的時候只會清理undo segment header中的事務表信息,data block上的事務標志不
    推薦度:
    導讀Oracleblockcleanout:簡單點說,在oracle的block上都有活動事務的標志的,如果一個事務commit后,由于某些block在commit之前已經寫回datafile,或者事務影響到的block數過多,則commit的時候只會清理undo segment header中的事務表信息,data block上的事務標志不

    簡單點說,在oracle的block上都有活動事務的標志的,如果一個事務commit后,由于某些block在commit之前已經寫回datafile,或者事務影響到的block數過多,則commit的時候只會清理undo segment header中的事務表信息,data block上的事務標志不會清除,在否則代

    簡單點說,在oracle的block上都有活動事務的標志的,如果一個事務commit后,由于某些block在commit之前已經寫回datafile,或者事務影響到的block數過多,則commit的時候只會清理undo segment header中的事務表信息,data block上的事務標志不會清除,在否則代價過高。那么在一些讀取這些block時,需要將這些事務標志進行清除,就是延遲塊清除


    塊清除即清除數據塊上與“鎖定”有關的信息。Oracle的鎖機制是一種輕量級的鎖定機制,不是通過構建鎖列表來進行數據的鎖定管理,而是直接將鎖作為數據的屬性,存儲在數據塊首部。因此,每次訪問數據時都要去看數據塊頭部的鎖,如果數據已經提交,則可能需要清理這個塊,換句話說,要將這些事務信息刪除。因此這個動作就會生成redo。


    Cleanout有2種,一種是fast commit cleanout(提交清除),另一種是delayed block cleanout(延遲清除).


    提交清楚是如何工作的?Oracle會記錄已修改的塊列表,這些列表可以有20個塊,Oracle根據需要分配多個這樣的列表,但是如果這些修改的塊加起來超過buffer_cache的10%,oracle就停止分配這樣的列表,因此當提交時就只會清理最多10%buffer_cache的數據塊,其余的部分就延遲清除,這樣也是為了提高commit的效率。


    還有一種情況,就是當事務還未commit時,修改的數據塊已經寫入硬盤,當發生commit時oracle并不會把block重新讀入做cleanout,而是把cleanout留到下一次對此塊的訪問是完成。

    Cleanout有2種,一種是fast commit cleanout,

    另一種是delayed block cleanout.Oracle的每個事務(transaction)修改不超過10%buffer cache的數據塊時,oracle做的是fast commit cleanout。如果一個事務(transaction)修改的塊超過10% buffer cache,那么超過的塊就執行delayed block cleanout,還有一種情況,就是當事務還未commit時,修改的數據塊已經寫入硬盤,當發生commit時oracle并不會把block重新讀入做cleanout,而是把cleanout留到下一次對此塊的訪問是完成。

    當我們update 數據之后,并且沒有commit,此時我們flush buffer cache,將修改的數據塊,flush 到硬盤,那么此時發生的就是delay block cleanout
    正常情況下,會去修改block里的相關SCN。 但是實際上此時Oracle 并沒有回去修改這些block,因為再次調用成本太大。 Oracle只更新了undo segment header slot。 當下次再次訪問這個block時,在根據undo segment 來更新block scn 和 itl 上的scn。 如果此時對應的undo segment 已經不存在,就會出發ORA-01555,快照過舊的錯誤。
    做了delayed block cleanout之后,itl 變成了SCN。 此時lck,lb標志為都被清零,scn也是從undo segment header transactiontable slot里面得到。如果undosegment header 上的slot被覆蓋了,那么會把undo segment 上的control scn拿來當作upper bound scn
    當delayed block cleanout 發生時,依賴與undo segment來保證,如果undo segment 被刪除了,那么會Oracle 會使用system 表空間下的undo$ 基表來保證delayed block cleanout。
    一般來說,select 是不會產生redo的。 但如果發生了delayed block cleanout,那么就會產生redo。 當然這只是一種情況,開啟審計等,也會造成select 產生redo。

    聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    Oracleblockcleanout

    Oracleblockcleanout:簡單點說,在oracle的block上都有活動事務的標志的,如果一個事務commit后,由于某些block在commit之前已經寫回datafile,或者事務影響到的block數過多,則commit的時候只會清理undo segment header中的事務表信息,data block上的事務標志不
    推薦度:
    標簽: 鯊魚 oracle 單點
    • 熱門焦點

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 日韩精品无码久久一区二区三| 国产精品极品| 四虎精品影院永久在线播放| 亚洲精品乱码久久久久久中文字幕| 999国产精品视频| 国产精品久久久久久久| 日产精品99久久久久久| 欧美日韩精品| 精品多毛少妇人妻AV免费久久| 久久精品国产影库免费看| 久久夜色精品国产网站| 老司机精品影院91| 国产精品单位女同事在线| 精品一区二区在线观看| 国产精品国产三级国产AV主播| 一级做a爰黑人又硬又粗免费看51社区国产精品视 | 久久香综合精品久久伊人| 九九线精品视频在线观看| 91自慰精品亚洲| 日韩精品在线看| 久久精品视频网| 麻豆精品久久久一区二区| 99免费精品视频| 国产精品熟女高潮视频| 精品久久人妻av中文字幕| 精品人妻码一区二区三区| 亚洲国产精品成人精品无码区在线| 完整观看高清秒播国内外精品资源| 九九精品在线视频| 久久午夜无码鲁丝片午夜精品| 国产精品无码免费播放| 四虎影永久在线观看精品| 国产成人精品久久免费动漫| 2020亚洲男人天堂精品| 国产亚洲福利精品一区| 国产精品成人在线| 亚洲精品在线观看视频| 国产精品性爱| 欧美黑人巨大videos精品| 亚洲精品国产高清嫩草影院| 亚洲愉拍99热成人精品热久久|