伺服器程序與後台程序
伺服器程序與後台程序也是兩個不同的概念,伺服器程序也叫做前台程序,在oracle伺服器中負責與client端的連線。每當clinet端產生乙個使用者程序來連線資料庫,資料庫會產生相應的伺服器程序和埠號來與之進行連線,在專用伺服器中哦個這是一對一的關係,在共享伺服器中則會採用排程器的機制。
後台程序則是例項(instance)的一部分,在例項啟動的時候,sga被分配,後台程序也被分配,且分配需要使用的記憶體(pga),後台程序具體實施oracle伺服器中的操作,打個比方的話,類似於工地上幹活的工人,分工明確。後台程序僅僅占用pga很小的一部分,嚴謹的來說pga在例項啟動的時候就已經分配了一部分了(只不過佔比重很小),而其餘大部分都是在使用者進行連線的時候進行分配的,因為pga大部分都分配給進行客戶連線的伺服器程序。
後台程序簡單描述
之前已經對後台程序進行了簡單的介紹,接下來對常用的後台程序進行簡單的介紹:
smon:在例項啟動的時候執行恢復(如果需要),還負責清楚暫時不使用的臨時段。smon會定期的檢視是否需要該程序。其他程序在需要的時候也可以對smon進行呼叫。
pmon:在使用者程序失敗時進行程序恢復(在我理解是清除所有該使用者程序的資訊):1.清除buffer cache;2.釋放該使用者程序所占用的所有資源。pmon還負責監視是否發生空閒會話超時和將資料庫的服務動態監聽到監聽程式。
pmon會自動的重新啟用任何已經停止執行的分派程式和伺服器程序。(主要對伺服器程序進行管理)
dbwn:將buffer cache中修改過的資料寫入資料檔案。寫入磁碟有兩種方式:1.在執行其他處理的時候非同步寫入(先寫一部分)2.定期執行以推進檢查點。
回寫髒塊的操作會在以下情況發生:1.全域性檢查點; 2.關閉資料庫; 3.drop表;以及離線表空間的時候發生。
lgwr:這個程序的作用相對和dbwn程序的作用都相對單一而且易於理解,lgwr是將redo log buffer中的快取資訊寫入redo log file中,lgwr在以下條件中將會被觸發:1.redolog buffer被占用1/3; 2.切換日誌檔案; 3.每3s; 4.在dbwn將dirty block寫入資料檔案之前; 5使用者commit事務處理; 6.redo log buffer占用1m。
ckpt:將檢查點資訊寫入控制檔案和每個資料檔案頭。當系統發起全域性檢查點的時候,會通知dbwn將dirty block全部寫回資料檔案,這時如果大量累積了dirty block,這對dbwn將會是乙個非常大的工作量。為了減少這種工作量和減少例項恢復時所要通過redolog恢復的dirty block的數量以減少例項恢復時間,引入了增量檢查點。
發起增量檢查點僅僅會對控制檔案操作,ckpt定期觸發dbwn,ckpt通知dbwn將check point queue中的 dirty block寫回資料檔案,減小了dbwn的工作量也提高了io效率。
oracle體系結構理解(3)
完全檢查點可以通過手動觸發(執行alter system checkponit;),也會在切換日誌,shutdown immediate等條件下觸發。
reco:用於分布式資料庫的配置。
後台程序還有許多,這裡簡單介紹常用的幾種,很多程序的作用相對複雜,需要更深入的對體系結構進行理解和深入的探索。
oracle體系結構
oracle由例項和資料庫組成 例項是由sga system global area 和一系列後台程序組成的,其中sga最主要劃分為共享池 shared pool 資料緩衝區 db cache 和日誌緩衝區 log buffer 後台程序包括pmon smon lckn reco ckpt dbwr...
oracle體系結構
一.oracle資料庫的後台程序 dbwr 資料庫寫程序,負責將更改的資料從資料庫緩衝區寫入資料檔案 smon 系統監控,檢查資料庫的狀態,恢復資料庫的例項 pmon 程序監控,負責oracle程序失敗時資源清理釋放 chpt 檢查點程序,每當緩衝區資料寫入檔案時,更新控制檔案的資料庫狀態資訊 ar...
oracle體系結構
oracle體系結構圖 1.1 為什麼oracle資料庫管理系統要引進非常複雜的體系結構 更高效的使用記憶體,保證資料庫不丟失任何資料 1.2 常用術語 1.2.1 程序 一段記憶體正在執行的程式 1.2.2 後台程序 可以有多個後台程序 1.2.3 緩衝區 臨時儲存資料的記憶體區 1.3 orac...