<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-109  評論-187  文章-25  trackbacks-0

    檢查點(checkpoint)的工作機制

    檢查點是一個數據庫事件,它把修改數據從高速緩存寫入磁盤,并更新控制文件和數據文件。

    檢查點分為三類:
    1)局部檢查點:單個實例執行數據庫所有數據文件的一個檢查點操作,屬于此實例的全部臟緩存區寫入數據文件。
    觸發命令:
    svmrgrl>alter system checkpoint local;
    這條命令顯示的觸發一個局部檢查點。
    2)全局檢查點:所有實例(對應并行數據服務器)執行數據庫所有所有數據文件的一個檢查點操作,屬于此實例的全部臟緩存區寫入數據文件。
    觸發命令
    svrmgrl>alter system checkpoint global;
    這條命令顯示的觸發一個全局檢查點。
    3)文件檢查點:所有實例需要執行數據文件集的一個檢查點操作,如使用熱備份命令alter tablespace USERS begin backup,或表空間脫機命令alter tablespace USERS offline,將執行屬于USERS表空間的所有數據文件的一個檢查點操作。

    檢查點處理步驟:
    1)獲取實例狀態隊列:實例狀態隊列是在實例狀態轉變時獲得,ORACLE獲得此隊列以保證檢查點執行期間,數據庫處于打開狀態;
    2)獲取當前檢查點信息:獲取檢查點記錄信息的結構,此結構包括當前檢查點時間、活動線程、進行檢查點處理的當前線程、日志文件中恢復截止點的地址信息;
    3)緩存區標識:標識所有臟緩存區,當檢查點找到一個臟緩存區就將其標識為需進行刷新,標識的臟緩存區由系統進程DBWR進行寫操作,將臟緩存區的內容寫入數據文件;
    4)臟緩存區刷新:DBWR進程將所有臟緩存區寫入磁盤后,設置一標志,標識已完成臟緩存區至磁盤的寫入操作。系統進程LGWR與CKPT進程將繼續進行檢查,直至DBWR進程結束為止;
    5)更新控制文件與數據文件。
    注:控制文件與數據文件頭包含檢查點結構信息。
    在兩種情況下,文件頭中的檢查點信息(獲取當前檢查點信息時)將不做更新:
    1)數據文件不處于熱備份方式,此時ORACLE將不知道操作系統將何時讀文件頭,而備份拷貝在拷貝開始時必須具有檢查點SCN;
    ORACLE在數據文件頭中保留一個檢查點的記數器,在正常操作中保證使用數據文件的當前版本,在恢復時防止恢復數據文件的錯誤版本;即使在熱備份方式下,計數器依然是遞增的;每個數據文件的檢查點計數器,也保留在控制文件相對應數據文件項中。
    2)檢查SCN小于文件頭中的檢查點SCN的時候,這表明由檢查點產生的改動已經寫到磁盤上,在執行全局檢查點的處理過程中,如果一個熱備份快速檢查點在更新文件頭時,則可能發生此種情況。應該注意的是,ORACLE是在實際進行檢查點處理的大量工作之前捕獲檢查SCN的,并且很有可能被一條象熱備份命令 alter tablespace USERS begin backup進行快速檢查點處理時的命令打斷。
    ORACLE在進行數據文件更新之前,將驗證其數據一致性,當驗證完成,即更新數據文件頭以反映當前檢查點的情況;未經驗證的數據文件與寫入時出現錯誤的數據文件都被忽略;如果日志文件被覆蓋,則這個文件可能需要進行介質恢復,在這種情況下,ORACLE系統進程DBWR將此數據文件脫機。

    檢查點算法描述:
    臟緩存區用一個新隊列鏈接,稱為檢查點隊列。對緩存區的每一個改動,都有一個與其相關的重做值。檢查點隊列包含臟的日志緩存區,這些緩存區按照它們在日志文件中的位置排序,即在檢查點隊列中,緩存區按照它們的低重做值進行排序。需要注意的是,由于緩存區是依照第一次變臟的次序鏈接到隊列中的,所以,如果在緩存區寫出之前對它有另外的改動,鏈接不能進行相應變更,緩存區一旦被鏈接到檢查點隊列,它就停留在此位置,直到將它被寫出為止。

    ORACLE系統進程DBWR在響應檢查點請求時,按照這個隊列的低重做值的升序寫出緩存區。每個檢查點請求指定一個重做值,一旦DBWR寫出的緩存區重做值等于或大雨檢查點的重做值,檢查點處理即完成,并將記錄到控制文件與數據文件。
    由于檢查點隊列上的緩存區按照低重做值進行排序,而DBWR也按照低重做值順序寫出檢查點緩存區,故可能有多個檢查點請求處于活動狀態,當DBWR寫出緩存區時,檢查位于檢查點隊列前端的緩存區重做值與檢查點重做值的一致性,如果重做值小于檢查點隊列前緩存區的低重做值的所有檢查點請求,即可表示處理完成。當存在未完成的活動檢查點請求時,DBWR繼續寫出檢查點緩存區。

    算法特點:
    1)DBWR能確切的知道為滿足檢查點請求需要寫那些緩存區;
    2)在每次進行檢查點寫時保證指向完成最早的(具有最低重做值的)檢查點;
    3)根據檢查點重做值可以區別多個檢查點請求,然后按照它們的順序完成處理。


    SQL> show parameter log_check;

    NAME???????????????????????????????? TYPE??????? VALUE
    ------------------------------------ ----------- ------------------------------
    log_checkpoint_interval????????????? integer???? 0
    log_checkpoint_timeout?????????????? integer???? 1800
    log_checkpoints_to_alert???????????? boolean???? FALSE
    SQL> select checkpoint_change# from v$database;

    CHECKPOINT_CHANGE#
    ------------------
    ??????????? 928767

    ?

    ##########################

    今天學習過程中遇到一下問題

    SQL> alter database open;
    alter database open
    *
    ERROR 位于第 1 行:
    ORA-01113: 文件 1 需要介質恢復
    ORA-01110: 數據文件 1: 'E:\ORACLE\ORADATA\TESTABC\SYSTEM01.DBF'


    #################################
    改為非歸檔模式
    archive log stop;

    #################################


    SQL> recover database;
    完成介質恢復。
    SQL> alter database open;

    數據庫已更改。

    可以OPERN了,


    #################################
    查看數據文件的狀態

    SQL> select name,status from v$datafile;?????


    ##################################


    ?

    posted on 2006-07-20 15:56 小小程序程序員混口飯吃 閱讀(481) 評論(0)  編輯  收藏 所屬分類: oracle
    主站蜘蛛池模板: 亚洲综合免费视频| 一级日本高清视频免费观看| 日韩成人免费aa在线看| 亚洲免费日韩无码系列| 亚洲高清中文字幕综合网| 日韩毛片免费在线观看| 免费网站观看WWW在线观看| 亚洲国产精品免费观看 | 免费人妻av无码专区| 在线观看免费视频一区| 国产亚洲福利在线视频| 亚洲中文字幕无码久久精品1 | 免费中文字幕在线| 青青草无码免费一二三区| 亚洲国产成人AV在线播放| 国产亚洲精品a在线观看app| 最近最好的中文字幕2019免费| 最近免费中文字幕中文高清| 亚洲色精品VR一区区三区| 亚洲大尺度无码专区尤物| 国产免费资源高清小视频在线观看| 免费91最新地址永久入口 | 久久99免费视频| 婷婷亚洲综合一区二区| 亚洲精品在线免费观看| 狠狠色婷婷狠狠狠亚洲综合| 日本精品人妻无码免费大全| 最好免费观看高清在线| 羞羞的视频在线免费观看| 亚洲一区中文字幕在线观看| 亚洲国产精品国自产拍AV| 亚洲国产成人久久综合区| 日韩免费一区二区三区| 永久在线观看www免费视频| 中文字幕乱码系列免费| 暖暖免费中文在线日本| 午夜亚洲WWW湿好爽 | 69视频免费观看l| 久久99免费视频| 丝袜捆绑调教视频免费区| 美女视频黄a视频全免费网站色 |