Oracle系列之五 程序

2021-08-31 21:58:12 字數 1679 閱讀 9081

一、概述

oracle資料庫是乙個多程序伺服器,當然在windows上是多執行緒的。具體分為伺服器程序、後台程序和從屬程序。

二、伺服器程序

伺服器程序是指處理客戶請求的程序。伺服器程序又分為專用伺服器程序和共享伺服器程序。專用伺服器程序只處理乙個客戶連線的請求,跟客戶連線是一對一的關係。而共享伺服器程序每次只處理乙個請求,但是可以處理多個客戶的請求,乙個客戶連線的請求由多個伺服器程序處理,跟客戶連線是多對多的關係。

如果事務時間很長可以選用專用伺服器

如果可以控制併發數、控制記憶體占用、減少系統程序/執行緒數,可以考慮用共享伺服器。

三、後台程序

後台程序是協助伺服器程序完成請求的程序。

後台程序有包括:中心後台程序和工具後台程序

3.1)pmon程序監控器

· 客戶連線異常終止時,負責清理相關資源,如伺服器程序記憶體、鎖、閂等

· 負責監控其他後台程序,有必要時進行重啟

· 負責向tns listener註冊例項

3.2)smon系統監控器

· 臨時表空間清理,雖然在資料庫提供了真正的臨時表空間後,清理工作大大減少,但是有些時候也會用來清理臨時表空間。如建立索引的時候會分配臨時空間,這些就需要smon來清理。

· 收縮回滾段

· 離線回滾段,離線命令雖然很快返回,但是真正的離線動作是由smon程序後台完成的。

· 清理obj$表,刪除表、索引等的時候,obj$表中相應的條目會有smon清理。

· 合併空閒表空間,字典管理表空間時候用到。

· rac環境中失敗節點的恢復

· 負責原來不可用的檔案恢復活動的事務的恢復

3.3)dbwn資料庫塊寫入器

· 負責將被修改過的資料庫塊寫入磁碟

· 負責建立檢查點,檢查點就是將資料庫髒塊寫會記憶體。

3.4)lgwr日誌寫入器。把重做日誌從記憶體寫會磁碟,在以下三種情況下會把日誌從記憶體寫回磁碟:

· 每3s進行一次回寫

· 有客戶端提交事務

· 日誌檔案使用超過1/3或者大小超過1m

從上邊分析看,一般配置過大的重做日誌檔案大小是沒太多作用的。

3.5)ckpt檢查點程序。此程序並不真正的建立檢查點,只是更新資料庫塊首部。

3.6)arcn歸檔程序。負責在重做日誌檔案被重用之前,把日誌寫進歸檔日誌檔案。

3.7)fbda閃回資料歸檔程序。負責將閃回資料進行歸檔,在事務提交之後立即工作,讀取該事務生成的undo,並回滾事務做出的修改,然後將回滾的這些行(原來的值)記錄在閃回資料歸檔中。

3.8)其他程序如,reco分布式資料庫恢復、gen0、dbrm和lck、lms、lmd等rac環境才用到的程序。

3.9)工具後台程序,協助後台程序完成工作的程序。如cjq0、jnnn、qmnc、qnnn、rman、mmon、ctwr等

部分程序、檔案和記憶體的不完整協作圖:

四、從屬程序

協助伺服器程序和後台程序完成任務的程序。

4.1)i/o從屬程序

為了提高資料、日誌寫到磁碟的效率,可以用非同步寫功能,但是有些系統不支援非同步寫操作,這個時候資料庫提供了io從屬程序來模擬非同步寫入。

4.1)並行執行程序

sql查詢(插入?)可以並行的分成多個小任務來執行,並行執行程序就是來完成這個工作的。

oracle五大程序

dbwn的 n 意味著乙個例項是可以有多個資料庫寫入器的。作用簡而言之,dbwn的作用就是將變髒了的緩衝區從資料庫緩衝區快取中寫入到磁碟中的資料檔案中去。會話的更新,插入,刪除包括查詢等都是先作用到緩衝區上,隨後,dbwn會將其中的髒緩衝區轉儲到磁碟上去。沒有任何可用緩衝區 不得不寫啊 髒緩衝區過多...

Oracle系列之序列

涉及到表的處理請參看原表結構與資料 oracle建表插資料等等 create sequence sequence name start with numincrement byincrement maxvalue num nomaxvalue minvalue num nominvalue cycl...

Oracle常用函式系列之五 日期函式

本文將演示以下4個 oracle中的常用日期函式。函式功能 add months d,n 在某乙個日期d上,加上指定的月數n,返回計算後的新日期 last day d 返回指定日期當月的最後一天 round d fmt 返回乙個以fmt為格式的四捨五入日期值 extract fmt from d 返...