国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
詳解數(shù)據庫進程LGWR\DBWn\CKPT\SMON\PMON\ARCn\RECO\的觸發(fā)條件

概述

Oracle有很多相關的后臺進程,如LGWR、DBWn、CKPT、SMON、PMON、ARCn、RECO等,那么這些進程主要是做什么呢?什么時候又會觸發(fā)這些進程呢?


Oracle進程

● 系統(tǒng)監(jiān)控進程(SMON) ,主要任務是實例啟動時執(zhí)行恢復性工作,對有故障數(shù)據庫實例進行恢復。

● 進程監(jiān)控進程(PMON) ,主要任務用于恢復失敗的用戶進程。

● 數(shù)據庫寫入進程(DBWn) ,將修改后的數(shù)據塊內容寫回數(shù)據文件。

● 日志寫入進程(LGWR) ,將內存中的日志內容寫入日志文件。

● 檢查點進程(CKPT) ,啟動檢查點,用于減少數(shù)據庫實例恢復所需要的時間。

● 歸檔進程(ARCn) ,當數(shù)據庫服務器以歸檔方式運行時調用該進程完成日志歸檔。

● 恢復進程(RECO) ,用于分布式數(shù)據庫中的失敗處理。

● 鎖進程(LCKn) ,在并行服務器模式下確保數(shù)據的一致性。

● 調度進程(Dnnn) ,負責把用戶進程分配到可用的服務進程進行處理。


LGWR(重做日志緩沖區(qū)--》日志文件)

當運行 DML 或 DDL 語句時,服務器進程首先要將事務的變化記載到重做日志緩沖區(qū),然后才會寫入數(shù)據高速緩沖區(qū),并且重做日志緩沖區(qū)的內容將會被寫入聯(lián)機重做日志文件,以避免系統(tǒng)出現(xiàn)意外帶來的數(shù)據損失(如果操作系統(tǒng)斷電,內存中的重做日志緩沖區(qū)的內容會丟失,而存在磁盤上的聯(lián)機日志文件則不會丟失) ,這項任務由 LGWR 來完成。

在出現(xiàn)以下情況時 LGWR 會開始工作:

● 在 DWBR 進程將臟緩沖區(qū)寫入數(shù)據文件之前。//預寫協(xié)議● 在重做日志記錄達到緩沖區(qū)的三分之一?!?日志緩沖區(qū)記錄的日志多于 1M?!?每隔 3 秒鐘。//重做日志緩沖區(qū)是循環(huán)使用的,要騰出足夠的空間給新的記錄使用● 提交事務(執(zhí)行 Commit) 。//提交事務相當于確定保存修改,不存入日志文件就有丟失的可能

Oracle 總是先記載數(shù)據變化到重做日志緩沖區(qū),然后才修改數(shù)據高速緩存。與之類似,在后臺進程 DBWn 將臟緩沖區(qū)寫入到數(shù)據文件之前, 首先要由后臺進程 LGWR 將重做日志緩沖區(qū)寫入到重做日志中。與數(shù)據高速緩存相比,重做日志緩沖區(qū)相對要小得多,但寫入頻率高的多,Oracle 必須要確保重做日志緩沖區(qū)總有足夠的空間容納新事務,因此每隔 3 秒鐘或重做日志緩沖區(qū)已有三分之一填滿時 LGWR 會自動工作。

另外,Oracle 采用了快速提交機制,當執(zhí)行 COMMIT 操作時,并不是將“臟緩沖區(qū)”數(shù)據寫入到數(shù)據文件中,而是將重做日志緩沖區(qū)的內容寫入到重做日志文件中,以確保數(shù)據庫完整性。此時即使系統(tǒng)出現(xiàn)意外情況(如掉電、系統(tǒng)崩潰等) ,因為被提交事務已經記載到了存放在磁盤上的聯(lián)機重做日志文件中,將來在重新啟動數(shù)據庫時系統(tǒng)會自動進行實例恢復,并將事務所修改數(shù)據寫入到數(shù)據文件中,從而避免了數(shù)據丟失。


DBWn(數(shù)據庫高速緩沖區(qū)--》數(shù)據文件)

一個數(shù)據庫寫進程( DBW0 )適用于大多數(shù)系統(tǒng),但數(shù)據庫管理員可以配置額外的進程(DBW0-DBW9,最多 10 個進程) ,以提高寫入性能,通過設置初始化參數(shù)DB_WRITER_PROCESSES 來完成。

當數(shù)據庫高速緩沖區(qū)的塊被修改,它被標記為臟緩沖區(qū)并添加到以 SCN(System Change Number,系統(tǒng)更改號,這里可以看做“時間”)為順序的 LRUW(LRUWriter)列表。

在出現(xiàn)以下情況時 DBWn 進程會開始工作:

● 系統(tǒng)發(fā)出檢查點指令。//同步數(shù)據,詳見檢查點進程(CKPT) ?!?臟緩沖區(qū)個數(shù)達到指定閥值?!?服務進程搜索一定數(shù)目的數(shù)據塊后,不能找到自由緩沖區(qū)?!?數(shù)據寫入計時時間到。//客戶端執(zhí)行 SELECT\INSERT\UPDATE\DELETE 語句時,都需要訪問數(shù)據庫高速緩沖區(qū)。如果是第一次訪問,必須要將數(shù)據由數(shù)據文件讀取到數(shù)據庫高速緩沖區(qū),所以 Oracle 必須要確保數(shù)據高速緩存總是存在足夠的“自由緩沖區(qū)”以容納新數(shù)據。當 DBWn 進程將臟緩沖區(qū)的數(shù)據塊寫入到數(shù)據文件后,Oracle 將把“臟緩沖區(qū)”標記為“自由緩沖區(qū)” 。因此,為了保證有足夠“自由緩沖區(qū)”來存放新的數(shù)據塊,需要 DBWn 進程工作?!?表空間脫機或進入只讀狀態(tài)?!?執(zhí)行刪除或截斷表操作?!?執(zhí)行 ALTER TABLESPACE … BEGIN BACKUP 命令//需要同步數(shù)據,原理同檢查點

CKPT(識別SCN,同步所有數(shù)據文件、控制文件和重做日志文件)

Oracle 數(shù)據庫在執(zhí)行涉及數(shù)據變化的語句時,會針對任何修改生成一個順序遞增 SCN值,并且會將 SCN 值連同事務的變化一起記載到重做日志緩沖區(qū)。在數(shù)據文件、控制文件頭部以及重做日志文件中都記載有該值。Oracle 通過比較各種文件的 SCN 值,確定文件是否損壞、系統(tǒng)是否異常,最終確定系統(tǒng)是需要進行實例恢復還是介質恢復。在發(fā)出檢查點時,數(shù)據文件、控制文件和重做日志的 SCN 值完全一致。

進程 CKPT 在以下情況下會開始工作:

● 發(fā)生日志切換?!?關閉實例(SHUTDOWN ABORT 除外)?!?手工執(zhí)行檢查點操作?!?由初始化參數(shù) LOG_CHECKPOINT_INTERVAL 和LOG_CHECKPOINT_TIMEOUT 強制發(fā)出。

假設現(xiàn)在有一張員工工資表, 員工號 7899 的員工張三工資為 8000, 由于工作表現(xiàn)良好,現(xiàn)在為其加薪到 10000。

1> 此時,第一次讀取,需要將數(shù)據從數(shù)據文件讀入數(shù)據庫高速緩沖區(qū)。

2> 數(shù)據讀入數(shù)據庫高速緩沖區(qū)后,我們修改數(shù)據的條目先記錄入重做日志緩沖區(qū):

3> 接著新數(shù)據被寫入數(shù)據庫高速緩沖區(qū)

4> 提交,LGWR 進程將條目從重做日志緩沖區(qū)寫入聯(lián)機重做日志文件

5> 執(zhí)行檢查點 CKPT,同步數(shù)據庫

發(fā)現(xiàn)聯(lián)機日志文件為最新,同步更新數(shù)據文件、控制文件,觸發(fā)了 DBWn 進程。


SMON(重做日志文件--》數(shù)據庫高速緩沖區(qū))

在實例啟動時,如果上一次數(shù)據庫是非正常關閉,并且重做日志文件和控制文件的 SCN 值是不同的,Oracle 將自動在重新打開數(shù)據庫之前,通過執(zhí)行重做日志文件的記錄,來同步所有數(shù)據文件、控制文件和重做日志文件,確保所有數(shù)據庫文件的一致性,然后才打開數(shù)據庫。

系統(tǒng)掉電,導致內存中的數(shù)據(數(shù)據庫高速緩沖區(qū))的數(shù)據丟失。那么自然上例中的第五步無法完成(無法從數(shù)據庫高速緩沖區(qū)寫入數(shù)據文件) ,但是由于此時已寫入聯(lián)機日志文件。因此,此時數(shù)據將從聯(lián)機日志文件中更新,而更新的數(shù)據量是多少,自然就是由 SCN 決定。

這一過程我們成為“實例恢復” 。該過程不需要數(shù)據庫管理員手工干預,由 SMON 進程自動完成。

該進程還負責在啟動實例時清理臨時段和合并區(qū)(Extent)碎片等工作。所以 SMON進程的工作歸納如下:

● 進行實例恢復● 合并數(shù)據文件的自由空間● 釋放數(shù)據文件的臨時段

PMON(對失敗的用戶進程或服務進程進行恢復,回收內存,回滾沒有完成的事務)

當 PMON 檢測到用戶進程失敗時,進行的工作歸納如下:

● 回滾當前用戶的事務● 釋放當前用戶加的表或行級鎖● 釋放用戶的其他資源● 重新啟動死掉的調度進程

ARCn(重做日志文件--》歸檔文件)

日志文件是循環(huán)使用的,當一個日志寫滿后,自動切換到另一個日志文件。ARCn 進程在重做日志文件進行切換時開始工作,將寫滿的重做日志文件寫入歸檔日志文件。根據歸檔任務量的大小,通過設置初始化參數(shù),可以同時啟動多個 ARCn 進程。Oracle 服務器默認的是非歸檔模式,通過修改初始化參數(shù)文件中的參數(shù)可以改變歸檔模式。生產數(shù)據庫通常都

會設置為歸檔模式。


RECO恢復進程

RECO 恢復進程負責在分布式數(shù)據庫(Distributed Database)環(huán)境下,自動恢復失敗的分布式事務。當某個分布式事務由于網絡連接故障或者其他原因失敗時,RECO 進程將會嘗試與該事物相關的所有數(shù)據庫進行聯(lián)系,已完成對失敗事物的處理工作。


Dnnnn 調度進程

Dnnnn 調度進程是多線程服務器體系結構的一部分,調度進程接受用戶進程的請求,將他們放入到請求隊列中,然后為請求隊列中的用戶進程分配一個服務進程


本站僅提供存儲服務,所有內容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
ORACLE各種對象、概念及關系整理(一文讀懂)
Oracle體系結構詳解
Oracle數(shù)據庫備份和恢復配置詳解
Oracle數(shù)據庫的后臺進程管理技術介紹
1.5.4 LGWR
案例分析Oracle數(shù)據庫中產生回滾與前退的原因 - 建站學
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服