oracle體系結構梳理----各種程式

lff1530983327發表於2015-01-23
 

oracle 體系中的程式主要三類:

系統程式

後臺程式

服務程式

----後臺程式

SELECT NAME,DESCRIPTION FROM V$BGPROCESS GROUP BY NAME ,DESCRIPTION

資料寫入程式(DBWndb writer process

日誌寫入程式(LGWRRedo etc.

檢查點程式(CKPTcheckpoint

系統監控程式(SMONSystem Monitor Process

程式監控程式(PMONprocess cleanup

恢復程式(RECOdistributed recovery

作業佇列程式(Job Queue Processes

歸檔程式(ARC0Archival Process 0

佇列監控程式(QMNnAQ Coordinator

其他後臺程式 DMON DG Broker Monitor Process

LNS0 Network Server 0

--LGWR程式的觸發條件:

日誌寫入程式log writer process (LGWR)負責管理日誌緩衝區,將日誌緩衝區寫入磁碟上的日誌檔案。LGWR將從上次之後才複製到buffer中的重做條目寫入磁碟。

1.commit 提交資料時,在oracle中只保證redo日誌檔案是完整的,而資料檔案可能是未被更改的

2.when it is 1/3 full redo log buffer 達到1/3慢的時候

3. 1 meg of data appears in the log buffer :達到1M 的時候

4. every 3 seconds

5. dbwr寫資料檔案之前

日誌檔案首先會寫入redo log buffer 後寫入redolog file 後來再寫入歸檔日誌檔案,一般會寫入這三個位置

--DBWR的觸發條件如下:

資料庫寫入程式database writer process (DBWn),將buffer中的內容寫入資料檔案中。DBWn程式負責將在buffer cache中的那些修改的buffer,也就是髒資料寫入磁碟中

1. 檢查點發生時

2. 髒緩衝量達到一定量

髒塊:已經被修改但未被寫入資料檔案的塊

操作均在database buffer cache

3. 沒有空閒的空間填充髒塊了

4. DBWR時間超時了

5. RACPING 

6. 表空間OFFLINE(normal)

7. 表空間設定成只讀時

8. DROP表和TRUNCATE表時 在執行droptrunctate之前會將資料寫入資料檔案,因為假如原來t1表所在的塊在t1表被droptruncate後被t2表佔用了,

如果沒有將t1表在記憶體中的髒塊寫入資料檔案,那麼在t2表寫資料進入資料檔案時可能會出現t1表和t2表髒資料混亂的情況。

9.表空間BEGIN BACKUP

SMON在例項恢復過程中較重要,巡檢的,系統監控

1.例項恢復/崩潰恢復(RAC/單例項)是oracle自動完成的

--SMON是系統監控

例項啟動時如有需要,系統監控程式(system monitor processSMON)將負責進行恢復(recovery)工作。

此外,SMON 還負責清除系統中不再使用的臨時段(temporary segment),以及為資料字典管理的表空間(dictionary managed tablespace)合併相鄰的可用資料擴充套件(extent)。

在例項恢復過程中,如果由於檔案讀取錯誤或所需檔案處於離線狀態而導致某些異常終止的事務未被恢復,SMON 將在表空間或檔案恢復聯機狀態後再次恢復這些事務。

SMON程式定期檢查自己是否被需要,系統內的其他程式發覺需要時也能夠呼叫SMON 程式。

1. 例項恢復:前滾,開啟資料庫,回滾 ,前滾是redo,回滾是undo

例項恢復

介質恢復

例項恢復 --- 崩潰恢復

2.整理區碎片:字典管理表空間才用,本地管理表空間由點陣圖自動整理 --只有資料字典表空間還要管理

3.清理臨時空間 :事務提交或則是資料清理了都是smon來清理

---PMON事務監控

當一個使用者程式(user process)失敗後,程式監控程式(process monitorPMON)將對其進行恢復。

PMON 程式負責清理資料緩衝區(database buffer cache)並釋放使用者程式使用的資源。例如,它可以重置活動事務表(active transaction table)的狀態,

釋放鎖,將某個程式ID從活動程式列表中移除。

1. 回滾沒提交的事務。這裡是指rollback,釋放鎖資源

2. 釋放程式相關的鎖資源。

3. 釋放其他資源,比如程式號等資訊,v$process可以看到的一些資訊。

4. 監視Oracle 後臺程式,必要時(如果可能的話)重啟這些後臺程式,甚至關閉例項

5. PMON還有一個任務,它可以實現服務註冊
動態註冊過程中,由PMON每隔60秒,去看一下監聽有沒有啟動,如果啟動了,將資訊註冊到監聽

---歸檔程式ARCn

1)當設定成歸檔模式的時候,自動歸檔. 

2) 儲存所有改變資料庫的記錄

MMAN:記憶體管理器(Memory Manager

MMONMMNLMnnn

---事務的生命週期

1、事務開始;(insert,update,delete,select ... for update)

2、在buffer cache中找需要的資料塊,如果沒有找到,則從資料檔案中載入buffer cache;

3、事務修改buffer cache的資料塊,該資料被標識為髒資料,並把相關的redo資訊寫入log buffer.

4、事務提交,LGWR程式將log buffer中的日誌寫入redo log file;

5、當發生checkpointCKPT程式更新控制檔案和所有資料檔案的檔案頭中的資訊,DBWn程式則負責將Buffer Cache中的髒資料寫入到資料檔案中。

oracle體系結構梳理----各種程式

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30018455/viewspace-1412611/,如需轉載,請註明出處,否則將追究法律責任。

相關文章