Oracle後台程序結構簡介

2021-04-15 03:21:37 字數 4319 閱讀 1220

程序結構

程序是作業系統中的一種機制,它可執行一系列的操作步。在有些作業系統中使用作業(job)或任務(task)的術語。乙個程序通常有它自己的專用儲存區。oracle程序的體系結構設計使效能最大。

oracle例項有兩種型別:單程序例項和多程序例項。

單程序oracle(又稱單用oracle)是一種資料庫系統,乙個程序執行全部oracle**。由於oracle部分和客戶應用程式不能分別以程序執行,所以oracle的**和使用者的資料庫應用是單個程序執行。

在單程序環境下的oracle 例項,僅允許乙個使用者可訪問。例如在ms-dos上執行oracle 。

多程序oracle例項(又稱多使用者oracle)使用多個程序來執行oracle的不同部分 ,對於每乙個連線的使用者都有乙個程序。

在多程序系統中,程序分為兩類:使用者程序和oracle程序。當一使用者執行一應用程式,如pro*c程式或乙個oracle工具(如sql*plus),為使用者執行的應用建立乙個使用者程序。oracle程序又分為兩類:伺服器程序和後台程序。伺服器程序用於

處理連線到該例項的使用者程序的請求。當應用和oracele是在同一臺機器上執行,而不再通 過網路,一般將使用者程序和它相應的伺服器程序組合成單個的程序,可降低系統開銷。然而,當應用和oracle執行在不同的機器上時,使用者程序經過乙個分離 伺服器程序與oracle通訊。它可執行下列任務:

對應用所發出的sql語句進行語法分析和執行。

從磁碟(資料檔案)中讀入必要的資料塊到sga的共享資料庫緩衝區(該塊不在緩衝區時)。

將結果返回給應用程式處理。

系統為了使效能最好和協調多個使用者,在多程序系統中使用一些附加程序,稱為後台程序。在許多作業系統中,後台程序是在例項啟動時自動地建立。乙個oracle例項可以有許多後台程序,但它們不是一直存在。後台程序的名字為:

dbwr 資料庫寫入程式;

lgwr 日誌寫入程式;

ckpt 檢查點;

**on 系統監控;

pmon 程序監控;

arch 歸檔;

reco 恢復;

lckn 封鎖;

dnnn 排程程序;

snnn 伺服器。

每個後台程序與oracle資料庫的不同部分互動。

下面對後台程序的功能作簡單介紹:

dbwr程序:該程序執行將緩衝區寫入資料檔案,是負責緩衝儲存區管理的乙個oracle後 臺程序。當緩衝區中的一緩衝區被修改,它被標誌為「弄髒」,dbwr的主要任務是將「弄髒」的緩衝區寫入磁碟,使緩衝區保持「乾淨」。由於緩衝儲存區的緩 沖區填入資料庫或被使用者程序弄髒,未用的緩衝區的數目減少。當未用的緩衝區下降到很少,以致使用者程序要從磁碟讀入塊到記憶體儲存區時無法找到未用的緩衝區 時,dbwr將管理緩衝儲存區,使使用者程序總可得到未用的緩衝區。

oracle採用lru(least recently used)演算法(最近最少使用演算法)保持記憶體中的資料塊是最近使用的,使i/o最小。在下列情況預示dbwr 要將弄髒的緩衝區寫入磁碟:

當乙個伺服器程序將一緩衝區移入「弄髒」表,該弄髒表達到臨界長度時,該服務程序將通知dbwr進行寫。該臨界長度是為引數db-block-write-batch的值的一半。

當乙個伺服器程序在lru表中查詢db-block-max-scan-cnt緩衝區時,沒 有查到未用的緩衝區,它停止查詢並通知dbwr進行寫。出現超時(每次3秒),dbwr 將通知本身。當出現檢查點時,lgwr將通知dbwr.在前兩種情況下,dbwr將弄髒表中的塊寫入磁碟,每次可寫的塊數由初始化引數db-block- write-batch所指定。如果弄髒表中沒有該引數指定塊數的緩衝區,dbwr從lur表中查詢另外乙個弄髒緩衝區。

如果dbwr在三秒內未活動,則出現超時。在這種情況下dbwr對lru表查詢指定數目的緩 沖區,將所找到任何弄髒緩衝區寫入磁碟。每當出現超時,dbwr查詢乙個新的緩衝區組。每次由dbwr查詢的緩衝區的數目是為寢化引數db-block- write-batch的值的二倍。如果資料庫空運轉,dbwr最終將全部緩衝區儲存區寫入磁碟。

在出現檢查點時,lgwr指定一修改緩衝區表必須寫入到磁碟。dbwr將指定的緩衝區寫入磁碟。

在有些平台上,乙個例項可有多個dbwr。在這樣的例項中,一些塊可寫入一磁碟,另一些塊可寫入其它磁碟。引數db-writers控制dbwr程序個數。

lgwr程序:該程序將日誌緩衝區寫入磁碟上的乙個日誌檔案,它是負責管理日誌緩衝區的乙個oracle後台程序。lgwr程序將自上次寫入磁碟以來的全部日誌項輸出,lgwr輸出:

當使用者程序提交一事務時寫入乙個提交記錄。

每三秒將日誌緩衝區輸出。

當日誌緩衝區的1/3已滿時將日誌緩衝區輸出。

當dbwr將修改緩衝區寫入磁碟時則將日誌緩衝區輸出。

日誌緩衝區是乙個迴圈緩衝區。當lgwr將日誌緩衝區的日誌項寫入日誌檔案後,伺服器程序可將新的日誌項寫入到該日誌緩衝區。lgwr 通常寫得很快,可確保日誌緩衝區總有空間可寫入新的日誌項。

oracle使用快速提交機制,當使用者發出commit語句時,乙個commit記錄立即放入日誌緩衝區,但相應的資料緩衝區改變是被延遲,直到在更有效時才將它們寫入資料檔案。當一事務提交時,被賦給乙個系統修改號(scn),它同事務日誌項一

起記錄在日誌中。由於scn記錄在日誌中,以致在並行伺服器選項配置情況下,恢復操作可以同步。

ckpt程序:該程序在檢查點出現時,對全部資料檔案的標題進行修改,指示該檢查點。在通常 的情況下,該任務由lgwr執行。然而,如果檢查點明顯地降低系統效能時,可使ckpt程序執行,將原來由lgwr程序執行的檢查點的工作分離出來,由 ckpt程序實現。對於許多應用情況,ckpt程序是不必要的。只有當資料庫有許多資料檔案,lgwr在檢查點時明顯地降低效能才使ckpt執行。 ckpt程序不將塊寫入磁碟,該工作是由dbwr完成的。

初始化引數checkpoint-process控制ckpt程序的使能或使不能。預設時為false,即為使不能。

**on程序:該程序例項啟動時執行例項恢復,還負責清理不再使用的臨時段。在具有並行伺服器選項的環境下,**on對有故障cpu或例項進行例項恢復。**on程序有規律地被呼醒,檢查是否需要,或者其它程序發現需要時可以被呼叫。

pmon程序:該程序在使用者程序出現故障時執行程序恢復,負責清理內儲存區和釋放該程序所使 用的資源。例:它要重置活動事務表的狀態,釋放封鎖,將該故障的程序的id從活動程序表中移去。pmon還週期地檢查排程程序(dispatcher)和 伺服器程序的狀態,如果已死,則重新啟動(不包括有意刪除的程序)。

pmon有規律地被呼醒,檢查是否需要,或者其它程序發現需要時可以被呼叫。

reco程序:該程序是在具有分布式選項時所使用的乙個程序,自動地解決在分布式事務中的故 障。乙個結點reco後台程序自動地連線到包含有懸而未決的分布式事務的其它資料庫中,reco自動地解決所有的懸而不決的事務。任何相應於已處理的懸而 不決的事務的行將從每乙個資料庫的懸掛事務表中刪去。

當一資料庫伺服器的reco後台程序試圖建立同一遠端伺服器的通訊,如果遠端伺服器是不可用或者網路連線不能建立時,reco自動地在乙個時間間隔之後再次連線。

reco後台程序僅當在允許分布式事務的系統中出現,而且distributed – transactions引數是大於0。

lckn程序:是在具有並行伺服器選件環境下使用,可多至10個程序(lck0,lck1……,lck9),用於例項間的封鎖。

dnnn程序(排程程序):該程序允許使用者程序共享有限的伺服器程序(server process)。沒有排程程序時,每個使用者程序需要乙個專用服務程序(dedicatedserver process)。對於多線索伺服器(multi-threaded server)可支援多個使用者程序。如果在系統中具有大量使用者,多線索伺服器可支援大量使用者,尤其在客戶_伺服器環境中。

在乙個資料庫例項中可建立多個排程程序。對每種網路協議至少建立乙個排程程序。資料庫管理員根據操作

系統中 每個程序可連線數目的限制決定啟動的排程程式的最優數,在例項執行時可增加或刪除排程程序。多線索伺服器需要sql*net版本2或更後的版本。在多線索 伺服器的配置下,乙個網路接收器程序等待客戶應用連線請求,並將每乙個傳送到乙個排程程序。如果不能將客戶應用連線到一排程

程序時,網路接收器程序將啟動乙個專用伺服器程序。該網路接收器程序不是oracle例項的 組成部分,它是處理與oracle有關的網路程序的組成部分。在例項啟動時,該網路接收器被開啟,為使用者連線到oracle建立一通訊路徑,然後每乙個調 度程序把連線請求的排程程序的位址給予於它的接收器。當乙個使用者程序作連

接請求時,網路接收器程序分析請求並決定該使用者是否可使用一排程程序。如果是,該網路接收器 程序返回該排程程序的位址,之後使用者程序直接連線到該排程程序。有些使用者程序不能排程程序通訊(如果使用sql*net以前的版本的使用者),網路接收器進 程不能將如此使用者連線到一排程程序。在這種情況下,網路接收器建立乙個專用伺服器程序,建立一種合適的連線。

關於Oracle程序結構及後台程序簡介

程序結構 程序是作業系統中的一種機制,它可執行一系列的操作步。在有些作業系統中使用作業 job 或任務 task 的術語。乙個程序通常有它自己的專用儲存區。oracle程序的體系結構設計使效能最大。oracle例項有兩種型別 單程序例項和多程序例項。單程序oracle 又稱單用oracle 是一種資...

Oracle後台程序

後台程序主要完成以下任務 在記憶體與外存之間進行i o操作 監視各個程序的狀態 協調各個程序的任務 維護系統的效能 保證系統的可靠性 當oracle資料庫鏈結非正常終止,oracle將通過pmon程序來啟動 清除中斷或失敗的使用者程序,包括清除非正常中斷的使用者程序留下的會話,回退未提交的事務,釋放...

oracle後台程序

後台程序負責保證資料庫的穩定工作,每當資料庫啟動時,這些後台程序會自動啟動,並且持續整 個例項的生命週期,每個程序負責乙個獨特的任務,表2 4 是一些最重要的後台程序。進 程縮 寫 描 述database writer dbwn 負責把髒資料寫回磁碟 log writer lgwr 負責把日誌資料寫...