IT貓撲網(wǎng):您身邊最放心的安全下載站! 最新更新|軟件分類|軟件專題|手機版|論壇轉(zhuǎn)貼|軟件發(fā)布

您當前所在位置:首頁數(shù)據(jù)庫Oracle → Oracle進程結(jié)構(gòu)和后臺進程功能介紹

Oracle進程結(jié)構(gòu)和后臺進程功能介紹

時間:2015/6/28來源:IT貓撲網(wǎng)作者:網(wǎng)管聯(lián)盟我要評論(0)

  進程結(jié)構(gòu)

  進程是操作系統(tǒng)中的一種機制,它可執(zhí)行一系列的操作步。在有些操作系統(tǒng)中使用作業(yè)(JOB)或任務(wù)(TASK)的術(shù)語。一個進程通常有它自己的專用存儲區(qū)。oracle進程的體系結(jié)構(gòu)設(shè)計使性能最大。

  ORACLE實例有兩種類型:單進程實例和多進程實例。

  單進程ORACLE(又稱單用ORACLE)是一種數(shù)據(jù)庫系統(tǒng),一個進程執(zhí)行全部ORACLE代碼。由于ORACLE部分和客戶應(yīng)用程序不能分別以進程執(zhí)行,所以O(shè)RACLE的代碼和用戶的數(shù)據(jù)庫應(yīng)用是單個進程執(zhí)行。

  在單進程環(huán)境下的ORACLE 實例,僅允許一個用戶可存取。例如在MS-DOS上運行ORACLE 。

  多進程ORACLE實例(又稱多用戶ORACLE)使用多個進程來執(zhí)行ORACLE的不同部分 ,對于每一個連接的用戶都有一個進程。

  在多進程系統(tǒng)中,進程分為兩類:用戶進程和ORACLE進程。當一用戶運行一應(yīng)用程序,如PRO*C程序或一個ORACLE工具(如SQL*PLUS),為用戶運行的應(yīng)用建立一個用戶進程。ORACLE進程又分為兩類:服務(wù)器進程和后臺進程。服務(wù)器進程用于

  處理連接到該實例的用戶進程的請求。當應(yīng)用和ORACELE是在同一臺機器上運行,而不再通過網(wǎng)絡(luò),一般將用戶進程和它相應(yīng)的服務(wù)器進程組合成單個的進程,可降低系統(tǒng)開銷。然而,當應(yīng)用和ORACLE運行在不同的機器上時,用戶進程經(jīng)過一個分離服務(wù)器進程與ORACLE通信。它可執(zhí)行下列任務(wù):

  對應(yīng)用所發(fā)出的SQL語句進行語法分析和執(zhí)行。

  從磁盤(數(shù)據(jù)文件)中讀入必要的數(shù)據(jù)塊到SGA的共享數(shù)據(jù)庫緩沖區(qū)(該塊不在緩沖區(qū)時)。

  將結(jié)果返回給應(yīng)用程序處理。

  系統(tǒng)為了使性能最好和協(xié)調(diào)多個用戶,在多進程系統(tǒng)中使用一些附加進程,稱為后臺進程。在許多操作系統(tǒng)中,后臺進程是在實例啟動時自動地建立。一個ORACLE實例可以有許多后臺進程,但它們不是一直存在。后臺進程的名字為:

  DBWR 數(shù)據(jù)庫寫入程序;

  LGWR 日志寫入程序;

  CKPT 檢查點;

  SMON 系統(tǒng)監(jiān)控;

  PMON 進程監(jiān)控;

  ARCH 歸檔;

  RECO 恢復(fù);

  LCKn 封鎖;

  Dnnn 調(diào)度進程;

  Snnn 服務(wù)器。

  每個后臺進程與ORACLE數(shù)據(jù)庫的不同部分交互。

  下面對后臺進程的功能作簡單介紹:

  DBWR進程:該進程執(zhí)行將緩沖區(qū)寫入數(shù)據(jù)文件,是負責緩沖存儲區(qū)管理的一個ORACLE后臺進程。當緩沖區(qū)中的一緩沖區(qū)被修改,它被標志為"弄臟",DBWR的主要任務(wù)是將"弄臟"的緩沖區(qū)寫入磁盤,使緩沖區(qū)保持"干凈"。由于緩沖存儲區(qū)的緩沖區(qū)填入數(shù)據(jù)庫或被用戶進程弄臟,未用的緩沖區(qū)的數(shù)目減少。當未用的緩沖區(qū)下降到很少,以致用戶進程要從磁盤讀入塊到內(nèi)存存儲區(qū)時無法找到未用的緩沖區(qū)時,DBWR將管理緩沖存儲區(qū),使用戶進程總可得到未用的緩沖區(qū)。

  ORACLE采用LRU(LEAST RECENTLY USED)算法(最近最少使用算法)保持內(nèi)存中的數(shù)據(jù)塊是最近使用的,使I/O最小。在下列情況預(yù)示DBWR 要將弄臟的緩沖區(qū)寫入磁盤:

  當一個服務(wù)器進程將一緩沖區(qū)移入"弄臟"表,該弄臟表達到臨界長度時,該服務(wù)進程將通知DBWR進行寫。該臨界長度是為參數(shù)DB-BLOCK-WRITE-BATCH的值的一半。

  當一個服務(wù)器進程在LRU表中查找DB-BLOCK-MAX-SCAN-CNT緩沖區(qū)時,沒有查到未用的緩沖區(qū),它停止查找并通知DBWR進行寫。出現(xiàn)超時(每次3秒),DBWR 將通知本身。當出現(xiàn)檢查點時,LGWR將通知DBWR.在前兩種情況下,DBWR將弄臟表中的塊寫入磁盤,每次可寫的塊數(shù)由初始化參數(shù)DB-BLOCK-WRITE-BATCH所指定。如果弄臟表中沒有該參數(shù)指定塊數(shù)的緩沖區(qū),DBWR從LUR表中查找另外一個弄臟緩沖區(qū)。

  如果DBWR在三秒內(nèi)未活動,則出現(xiàn)超時。在這種情況下DBWR對LRU表查找指定數(shù)目的緩沖區(qū),將所找到任何弄臟緩沖區(qū)寫入磁盤。每當出現(xiàn)超時,DBWR查找一個新的緩沖區(qū)組。每次由DBWR查找的緩沖區(qū)的數(shù)目是為寢化參數(shù)DB-BLOCK-WRITE-BATCH的值的二倍。如果數(shù)據(jù)庫空運轉(zhuǎn),DBWR最終將全部緩沖區(qū)存儲區(qū)寫入磁盤。

  在出現(xiàn)檢查點時,LGWR指定一修改緩沖區(qū)表必須寫入到磁盤。DBWR將指定的緩沖區(qū)寫入磁盤。

  在有些平臺上,一個實例可有多個DBWR。在這樣的實例中,一些塊可寫入一磁盤,另一些塊可寫入其它磁盤。參數(shù)DB-WRITERS控制DBWR進程個數(shù)。

  LGWR進程:該進程將日志緩沖區(qū)寫入磁盤上的一個日志文件,它是負責管理日志緩沖區(qū)的一個ORACLE后臺進程。LGWR進程將自上次寫入磁盤以來的全部日志項輸出,LGWR輸出:

  當用戶進程提交一事務(wù)時寫入一個提交記錄。

  每三秒將日志緩沖區(qū)輸出。

  當日志緩沖區(qū)的1/3已滿時將日志緩沖區(qū)輸出。

  當DBWR將修改緩沖區(qū)寫入磁盤時則將日志緩沖區(qū)輸出。

  LGWR進程同步地寫入到活動的鏡象在線日志文件組。如果組中一個文件被刪除或不可用,LGWR 可繼續(xù)地寫入該組的其它文件。

  日志緩沖區(qū)是一個循環(huán)緩沖區(qū)。當LGWR將日志緩沖區(qū)的日志項寫入日志文件后,服務(wù)器進程可將新的日志項寫入到該日志緩沖區(qū)。LGWR 通常寫得很快,可確保日志緩沖區(qū)總有空間可寫入新的日志項。

  注意:有時候當需要更多的日志緩沖區(qū)時,LWGR在一個事務(wù)提交前就將日志項寫出,而這些日志項僅當在以后事務(wù)提交后才永久化。

  ORACLE使用快速提交機制,當用戶發(fā)出COMMIT語句時,一個COMMIT記錄立即放入日志緩沖區(qū),但相應(yīng)的數(shù)據(jù)緩沖區(qū)改變是被延遲,直到在更有效時才將它們寫入數(shù)據(jù)文件。當一事務(wù)提交時,被賦給一個系統(tǒng)修改號(SCN),它同事務(wù)日志項一

  起記錄在日志中。由于SCN記錄在日志中,以致在并行服務(wù)器選項配置情況下,恢復(fù)操作可以同步。

  CKPT進程:該進程在檢查點出現(xiàn)時,對全部數(shù)據(jù)文件的標題進行修改,指示該檢查點。在通常的情況下,該任務(wù)由LGWR執(zhí)行。然而,如果檢查點明顯地降低系統(tǒng)性能時,可使CKPT進程運行,將原來由LGWR進程執(zhí)行的檢查點的工作分離出來,由CKPT進程實現(xiàn)。對于許多應(yīng)用情況,CKPT進程是不必要的。只有當數(shù)據(jù)庫有許多數(shù)據(jù)文件,LGWR在檢查點時明顯地降低性能才使CKPT運行。CKPT進程不將塊寫入磁盤,該工作是由DBWR完成的。

  初始化參數(shù)CHECKPOINT-PROCESS控制CKPT進程的使能或使不能。缺省時為FALSE,即為使不能。

  SMON進程:該進程實例啟動時執(zhí)行實例恢復(fù),還負責清理不再使用的臨時段。在具有并行服務(wù)器選項的環(huán)境下,SMON對有故障CPU或?qū)嵗M行實例恢復(fù)。SMON進程有規(guī)律地被呼醒,檢查是否需要,或者其它進程發(fā)現(xiàn)需要時可以被調(diào)用。

  PMON進程:該進程在用戶進程出現(xiàn)故障時執(zhí)行進程恢復(fù),負責清理內(nèi)存儲區(qū)和釋放該進程所使用的資源。例:它要重置活動事務(wù)表的狀態(tài),釋放封鎖,將該故障的進程的ID從活動進程表中移去。PMON還周期地檢查調(diào)度進程(DISPATCHER)和服務(wù)器進程的狀態(tài),如果已死,則重新啟動(不包括有意刪除的進程)。

  PMON有規(guī)律地被呼醒,檢查是否需要,或者其它進程發(fā)現(xiàn)需要時可以被調(diào)用。

  RECO進程:該進程是在具有分布式選項時所使用的一個進程,自動地解決在分布式事務(wù)中的故障。一個結(jié)點RECO后臺進程自動地連接到包含有懸而未決的分布式事務(wù)的其它數(shù)據(jù)庫中,RECO自動地解決所有的懸而不決的事務(wù)。任何相應(yīng)于已處理的懸而不決的事務(wù)的行將從每一個數(shù)據(jù)庫的懸掛事務(wù)表中刪去。

  當一數(shù)據(jù)庫服務(wù)器的RECO后臺進程試圖建立同一遠程服務(wù)器的通信,如果遠程服務(wù)器是不可用或者網(wǎng)絡(luò)連接不能建立時,RECO自動地在一個時間間隔之后再次連接。

  RECO后臺進程僅當在允許分布式事務(wù)的系統(tǒng)中出現(xiàn),而且DISTRIBUTED – TRANSACTIONS參數(shù)是大于0。

  ARCH進程:該進程將已填滿的在線日志文件拷貝到指定的存儲設(shè)備。當日志是為ARCHIVELOG使用方式、并可自動地歸檔時ARCH進程才存在。

  LCKn進程:是在具有并行服務(wù)器選件環(huán)境下使用,可多至10個進程(LCK0,LCK1……,LCK9),用于實例間的封鎖。

  Dnnn進程(調(diào)度進程):該進程允許用戶進程共享有限的服務(wù)器進程(SERVER PROCESS)。沒有調(diào)度進程時,每個用戶進程需要一個專用服務(wù)進程(DEDICATEDSERVER PROCESS)。對于多線索服務(wù)器(MULTI-THREADED SERVER)可支持多個用戶進程。如果在系統(tǒng)中具有大量用戶,多線索服務(wù)器可支持大量用戶,尤其在客戶_服務(wù)器環(huán)境中。

  在一個數(shù)據(jù)庫實例中可建立多個調(diào)度進程。對每種網(wǎng)絡(luò)協(xié)議至少建立一個調(diào)度進程。數(shù)據(jù)庫管理員根據(jù)操作系統(tǒng)中每個進程可連接數(shù)目的限制決定啟動的調(diào)度程序的最優(yōu)數(shù),在實例運行時可增加或刪除調(diào)度進程。多線索服務(wù)器需要SQL*NET版本2或更后的版本。在多線索服務(wù)器的配置下,一個網(wǎng)絡(luò)接收器進程等待客戶應(yīng)用連接請求,并將每一個發(fā)送到一個調(diào)度進程。如果不能將客戶應(yīng)用連接到一調(diào)度

  進程時,網(wǎng)絡(luò)接收器進程將啟動一個專用服務(wù)器進程。該網(wǎng)絡(luò)接收器進程不是ORACLE實例的組成部分,它是處理與ORACLE有關(guān)的網(wǎng)絡(luò)進程的組成部分。在實例啟動時,該網(wǎng)絡(luò)接收器被打開,為用戶連接到ORACLE建立一通信路徑,然后每一個調(diào)度進程把連接請求的調(diào)度進程的地址給予于它的接收器。當一個用戶進程作連

  接請求時,網(wǎng)絡(luò)接收器進程分析請求并決定該用戶是否可使用一調(diào)度進程。如果是,該網(wǎng)絡(luò)接收器進程返回該調(diào)度進程的地址,之后用戶進程直接連接到該調(diào)度進程。有些用戶進程不能調(diào)度進程通信(如果使用SQL*NET以前的版本的用戶),網(wǎng)絡(luò)接收器進程不能將如此用戶連接到一調(diào)度進程。在這種情況下,網(wǎng)絡(luò)接收器建立一個專用服務(wù)器進程,建立一種合適的連接。

關(guān)鍵詞標簽:Oracle進程結(jié)構(gòu)

相關(guān)閱讀

文章評論
發(fā)表評論

熱門文章 Oracle中使用alter table來增加,刪除,修改列Oracle中使用alter table來增加,刪除,修改列oracle中使用SQL語句修改字段類型-oracle修oracle中使用SQL語句修改字段類型-oracle修使用低權(quán)限Oracle數(shù)據(jù)庫賬戶得到管理員權(quán)限使用低權(quán)限Oracle數(shù)據(jù)庫賬戶得到管理員權(quán)限Oracle對user的訪問控制Oracle對user的訪問控制

相關(guān)下載

人氣排行 ORACLE SQL 判斷字符串是否為數(shù)字的語句Oracle中使用alter table來增加,刪除,修改列的語法ORACLE和SQL語法區(qū)別歸納(1)oracle grant 授權(quán)語句如何加速Oracle大批量數(shù)據(jù)處理Oracle刪除表的幾種方法ORACLE修改IP地址后如何能夠使用Oracle 10g創(chuàng)建表空間和用戶并指定權(quán)限