第四章Oracle 體系結(jié)構(gòu)_第1頁
第四章Oracle 體系結(jié)構(gòu)_第2頁
第四章Oracle 體系結(jié)構(gòu)_第3頁
第四章Oracle 體系結(jié)構(gòu)_第4頁
第四章Oracle 體系結(jié)構(gòu)_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、第四章Oracle 體系結(jié)構(gòu)ORACLE數(shù)據(jù)庫體系結(jié)構(gòu)決定了oracle如何使用網(wǎng)絡(luò)、磁盤和內(nèi)存。包括實(shí)例(instance),文件(file)和進(jìn)程(process不包括后臺進(jìn)程)三部分。實(shí)例:每一個(gè)運(yùn)行的ORACLE數(shù)據(jù)庫與一個(gè)ORACLE實(shí)例(INSTANCE)相聯(lián)系。每一次在數(shù)據(jù)庫服務(wù)器上啟動一數(shù)據(jù)庫時(shí),稱為系統(tǒng)全局區(qū)(SYSTEM GLOBAL AREA)的一內(nèi)存區(qū)(簡稱SGA)被分配,有一個(gè)或多個(gè)ORACLE進(jìn)程被啟動。該SGA 和 ORACLE進(jìn)程的結(jié)合稱為一個(gè)ORACLE數(shù)據(jù)庫實(shí)例。一個(gè)實(shí)例的SGA和進(jìn)程為管理數(shù)據(jù)庫數(shù)據(jù)、為該數(shù)據(jù)庫一個(gè)或多個(gè)用戶服務(wù)而工作。在ORACLE系統(tǒng)中

2、,首先是實(shí)例啟動,然后由實(shí)例裝配(MOUNT)一數(shù)據(jù)庫。在松耦合系統(tǒng)中,在具有ORACLE PARALLEL SERVER 選項(xiàng)時(shí),單個(gè)數(shù)據(jù)庫可被多個(gè)實(shí)例裝配,即多個(gè)實(shí)例共享同一物理數(shù)據(jù)庫。Oracle 體系結(jié)構(gòu)password數(shù)據(jù)庫實(shí)例后臺進(jìn)程Control fileRedo log fileparameterArchive log fileData file nData file 1ARCHLGWRPNONSMONDBWRShared pool Data dictionaryDatabase buffer poolRedo buffer1 ORACLE實(shí)例的進(jìn)程結(jié)構(gòu)和內(nèi)存結(jié)構(gòu)1) 進(jìn)程結(jié)構(gòu)

3、進(jìn)程是操作系統(tǒng)中的一種機(jī)制,它可執(zhí)行一系列的操作步。在有些操作系統(tǒng)中使用作業(yè)(JOB)或任務(wù)(TASK)的術(shù)語。一個(gè)進(jìn)程通常有它自己的專用存儲區(qū)。ORACLE進(jìn)程的體系結(jié)構(gòu)設(shè)計(jì)使性能最大。ORACLE實(shí)例有兩種類型:單進(jìn)程實(shí)例和多進(jìn)程實(shí)例。單進(jìn)程ORACLE(又稱單用戶ORACLE)是一種數(shù)據(jù)庫系統(tǒng),一個(gè)進(jìn)程執(zhí)行全部ORACLE代碼。由于ORACLE部分和客戶應(yīng)用程序不能分別以進(jìn)程執(zhí)行,所以O(shè)RACLE的代碼和用戶的數(shù)據(jù)庫應(yīng)用是單個(gè)進(jìn)程執(zhí)行。在單進(jìn)程環(huán)境下的ORACLE 實(shí)例,僅允許一個(gè)用戶可存取。例如在MS-DOS上運(yùn)行ORACLE 。多進(jìn)程ORACLE實(shí)例(又稱多用戶ORACLE)使用多個(gè)

4、進(jìn)程來執(zhí)行ORACLE的不同部分,對于每一個(gè)連接的用戶都有一個(gè)進(jìn)程。在多進(jìn)程系統(tǒng)中,進(jìn)程分為兩類:用戶進(jìn)程和ORACLE進(jìn)程。當(dāng)一用戶運(yùn)行一應(yīng)用程序,如PRO*C程序或一個(gè)ORACLE工具(如SQL*PLUS),為用戶運(yùn)行的應(yīng)用建立一個(gè)用戶進(jìn)程。ORACLE進(jìn)程又分為兩類:服務(wù)器進(jìn)程和后臺進(jìn)程。服務(wù)器進(jìn)程用于處理連接到該實(shí)例的用戶進(jìn)程的請求。當(dāng)應(yīng)用和ORACELE是在同一臺機(jī)器上運(yùn)行,而不再通過網(wǎng)絡(luò),一般將用戶進(jìn)程和它相應(yīng)的服務(wù)器進(jìn)程組合成單個(gè)的進(jìn)程,可降低系統(tǒng)開銷。然而,當(dāng)應(yīng)用和ORACLE運(yùn)行在不同的機(jī)器上時(shí),用戶進(jìn)程經(jīng)過一個(gè)分離服務(wù)器進(jìn)程與ORACLE通信。它可執(zhí)行下列任務(wù):l 對應(yīng)用所

5、發(fā)出的SQL語句進(jìn)行語法分析和執(zhí)行。l 從磁盤(數(shù)據(jù)文件)中讀入必要的數(shù)據(jù)塊到SGA的共享數(shù)據(jù)庫緩沖區(qū)(該塊不在緩沖區(qū)時(shí))。l 將結(jié)果返回給應(yīng)用程序處理。系統(tǒng)為了使性能最好和協(xié)調(diào)多個(gè)用戶,在多進(jìn)程系統(tǒng)中使用一些附加進(jìn)程,稱為后臺進(jìn)程。在許多操作系統(tǒng)中,后臺進(jìn)程是在實(shí)例啟動時(shí)自動地建立。一個(gè)ORACLE實(shí)例可以有許多后臺進(jìn)程,但它們不是一直存在。后臺進(jìn)程的名字為:DBWR 數(shù)據(jù)庫寫入程序LGWR 日志寫入程序CKPT 檢查點(diǎn)SMON 系統(tǒng)監(jiān)控PMON 進(jìn)程監(jiān)控ARCH 歸檔RECO 恢復(fù)LCKn 封鎖Dnnn 調(diào)度進(jìn)程Snnn 服務(wù)器每個(gè)后臺進(jìn)程與ORACLE數(shù)據(jù)庫的不同部分交互。下面對后臺進(jìn)程

6、的功能作簡單介紹:DBWR進(jìn)程:該進(jìn)程執(zhí)行將緩沖區(qū)寫入數(shù)據(jù)文件,是負(fù)責(zé)緩沖存儲區(qū)管理的一個(gè)ORACLE后臺進(jìn)程。當(dāng)緩沖區(qū)中的一緩沖區(qū)被修改,它被標(biāo)志為“弄臟”,DBWR的主要任務(wù)是將“弄臟”的緩沖區(qū)寫入磁盤,使緩沖區(qū)保持“干凈”。由于緩沖存儲區(qū)的緩沖區(qū)填入數(shù)據(jù)庫或被用戶進(jìn)程弄臟,未用的緩沖區(qū)的數(shù)目減少。當(dāng)未用的緩沖區(qū)下降到很少,以致用戶進(jìn)程要從磁盤讀入塊到內(nèi)存存儲區(qū)時(shí)無法找到未用的緩沖區(qū)時(shí),DBWR將管理緩沖存儲區(qū),使用戶進(jìn)程總可得到未用的緩沖區(qū)。ORACLE采用LRU(LEAST RECENTLY USED)算法(最近最少使用算法)保持內(nèi)存中的數(shù)據(jù)塊是最近使用的,使I/O最小。在下列情況預(yù)示

7、DBWR 要將弄臟的緩沖區(qū)寫入磁盤:l 當(dāng)一個(gè)服務(wù)器進(jìn)程將一緩沖區(qū)移入“弄臟”表,該弄臟表達(dá)到臨界長度時(shí),該服務(wù)進(jìn)程將通知DBWR進(jìn)行寫。該臨界長度是為參數(shù)DB-BLOCK-WRITE-BATCH的值的一半。l 當(dāng)一個(gè)服務(wù)器進(jìn)程在LRU表中查找DB-BLOCK-MAX-SCAN-CNT緩沖區(qū)時(shí),沒有查到未用的緩沖區(qū),它停止查找并通知DBWR進(jìn)行寫。l 出現(xiàn)超時(shí)(每次3秒),DBWR 將通知本身。l 當(dāng)出現(xiàn)檢查點(diǎn)時(shí),LGWR將通知DBWR在前兩種情況下,DBWR將弄臟表中的塊寫入磁盤,每次可寫的塊數(shù)由初始化參數(shù)DB-BLOCK-WRITE-BATCH所指定。如果弄臟表中沒有該參數(shù)指定塊數(shù)的緩沖區(qū)

8、,DBWR從LUR表中查找另外一個(gè)弄臟緩沖區(qū)。如果DBWR在三秒內(nèi)未活動,則出現(xiàn)超時(shí)。在這種情況下DBWR對LRU表查找指定數(shù)目的緩沖區(qū),將所找到任何弄臟緩沖區(qū)寫入磁盤。每當(dāng)出現(xiàn)超時(shí),DBWR查找一個(gè)新的緩沖區(qū)組。每次由DBWR查找的緩沖區(qū)的數(shù)目是為寢化參數(shù)DB-BLOCK-WRITE-BATCH的值的二倍。如果數(shù)據(jù)庫空運(yùn)轉(zhuǎn),DBWR最終將全部緩沖區(qū)存儲區(qū)寫入磁盤。在出現(xiàn)檢查點(diǎn)時(shí),LGWR指定一修改緩沖區(qū)表必須寫入到磁盤。DBWR將指定的緩沖區(qū)寫入磁盤。在有些平臺上,一個(gè)實(shí)例可有多個(gè)DBWR。在這樣的實(shí)例中,一些塊可寫入一磁盤,另一些塊可寫入其它磁盤。參數(shù)DB-WRITERS控制DBWR進(jìn)程個(gè)

9、數(shù)。LGWR進(jìn)程:該進(jìn)程將日志緩沖區(qū)寫入磁盤上的一個(gè)日志文件,它是負(fù)責(zé)管理日志緩沖區(qū)的一個(gè)ORACLE后臺進(jìn)程。LGWR進(jìn)程將自上次寫入磁盤以來的全部日志項(xiàng)輸出,LGWR輸出:l 當(dāng)用戶進(jìn)程提交一事務(wù)時(shí)寫入一個(gè)提交記錄。l 每三秒將日志緩沖區(qū)輸出。l 當(dāng)日志緩沖區(qū)的1/3已滿時(shí)將日志緩沖區(qū)輸出。l 當(dāng)DBWR將修改緩沖區(qū)寫入磁盤時(shí)則將日志緩沖區(qū)輸出。LGWR進(jìn)程同步地寫入到活動的鏡象在線日志文件組。如果組中一個(gè)文件被刪除或不可用,LGWR可繼續(xù)地寫入該組的其它文件。日志緩沖區(qū)是一個(gè)循環(huán)緩沖區(qū)。當(dāng)LGWR將日志緩沖區(qū)的日志項(xiàng)寫入日志文件后,服務(wù)器進(jìn)程可將新的日志項(xiàng)寫入到該日志緩沖區(qū)。LGWR 通

10、常寫得很快,可確保日志緩沖區(qū)總有空間可寫入新的日志項(xiàng)。注意:有時(shí)候當(dāng)需要更多的日志緩沖區(qū)時(shí),LWGR在一個(gè)事務(wù)提交前就將日志項(xiàng)寫出,而這些日志項(xiàng)僅當(dāng)在以后事務(wù)提交后才永久化。ORACLE使用快速提交機(jī)制,當(dāng)用戶發(fā)出COMMIT語句時(shí),一個(gè)COMMIT記錄立即放入日志緩沖區(qū),但相應(yīng)的數(shù)據(jù)緩沖區(qū)改變是被延遲,直到在更有效時(shí)才將它們寫入數(shù)據(jù)文件。當(dāng)一事務(wù)提交時(shí),被賦給一個(gè)系統(tǒng)修改號(SCN),它同事務(wù)日志項(xiàng)一起記錄在日志中。由于SCN記錄在日志中,以致在并行服務(wù)器選項(xiàng)配置情況下,恢復(fù)操作可以同步。CKPT進(jìn)程:該進(jìn)程在檢查點(diǎn)出現(xiàn)時(shí),對全部數(shù)據(jù)文件的標(biāo)題進(jìn)行修改,指示該檢查點(diǎn)。在通常的情況下,該任務(wù)由

11、LGWR執(zhí)行。然而,如果檢查點(diǎn)明顯地降低系統(tǒng)性能時(shí),可使CKPT進(jìn)程運(yùn)行,將原來由LGWR進(jìn)程執(zhí)行的檢查點(diǎn)的工作分離出來,由CKPT進(jìn)程實(shí)現(xiàn)。對于許多應(yīng)用情況,CKPT進(jìn)程是不必要的。只有當(dāng)數(shù)據(jù)庫有許多數(shù)據(jù)文件,LGWR在檢查點(diǎn)時(shí)明顯地降低性能才使CKPT運(yùn)行。CKPT進(jìn)程不將塊寫入磁盤,該工作是由DBWR完成的。初始化參數(shù)CHECKPOINT-PROCESS控制CKPT進(jìn)程的使能或使不能。缺省時(shí)為FALSE,即為使不能。SMON進(jìn)程:該進(jìn)程實(shí)例啟動時(shí)執(zhí)行實(shí)例恢復(fù),還負(fù)責(zé)清理不再使用的臨時(shí)段。在具有并行服務(wù)器選項(xiàng)的環(huán)境下,SMON對有故障CPU或?qū)嵗M(jìn)行實(shí)例恢復(fù)。SMON進(jìn)程有規(guī)律地被呼醒,檢

12、查是否需要,或者其它進(jìn)程發(fā)現(xiàn)需要時(shí)可以被調(diào)用。PMON進(jìn)程:該進(jìn)程在用戶進(jìn)程出現(xiàn)故障時(shí)執(zhí)行進(jìn)程恢復(fù),負(fù)責(zé)清理內(nèi)存儲區(qū)和釋放該進(jìn)程所使用的資源。例:它要重置活動事務(wù)表的狀態(tài),釋放封鎖,將該故障的進(jìn)程的ID從活動進(jìn)程表中移去。PMON還周期地檢查調(diào)度進(jìn)程(DISPATCHER)和服務(wù)器進(jìn)程的狀態(tài),如果已死,則重新啟動(不包括有意刪除的進(jìn)程)。PMON有規(guī)律地被呼醒,檢查是否需要,或者其它進(jìn)程發(fā)現(xiàn)需要時(shí)可以被調(diào)用。RECO進(jìn)程:該進(jìn)程是在具有分布式選項(xiàng)時(shí)所使用的一個(gè)進(jìn)程,自動地解決在分布式事務(wù)中的故障。一個(gè)結(jié)點(diǎn)RECO后臺進(jìn)程自動地連接到包含有懸而未決的分布式事務(wù)的其它數(shù)據(jù)庫中,RECO自動地解決所

13、有的懸而不決的事務(wù)。任何相應(yīng)于已處理的懸而不決的事務(wù)的行將從每一個(gè)數(shù)據(jù)庫的懸掛事務(wù)表中刪去。當(dāng)一數(shù)據(jù)庫服務(wù)器的RECO后臺進(jìn)程試圖建立同一遠(yuǎn)程服務(wù)器的通信,如果遠(yuǎn)程服務(wù)器是不可用或者網(wǎng)絡(luò)連接不能建立時(shí),RECO自動地在一個(gè)時(shí)間間隔之后再次連接。RECO后臺進(jìn)程僅當(dāng)在允許分布式事務(wù)的系統(tǒng)中出現(xiàn),而且DISTRIBUTED TRANSACTIONS參數(shù)是大于0。ARCH進(jìn)程:該進(jìn)程將已填滿的在線日志文件拷貝到指定的存儲設(shè)備。當(dāng)日志是為ARCHIVELOG使用方式、并可自動地歸檔時(shí)ARCH進(jìn)程才存在。LCKn進(jìn)程:是在具有并行服務(wù)器選件環(huán)境下使用,可多至10個(gè)進(jìn)程(LCK0,LCK1,LCK9),用

14、于實(shí)例間的封鎖。Dnnn進(jìn)程(調(diào)度進(jìn)程):該進(jìn)程允許用戶進(jìn)程共享有限的服務(wù)器進(jìn)程(SERVER PROCESS)。沒有調(diào)度進(jìn)程時(shí),每個(gè)用戶進(jìn)程需要一個(gè)專用服務(wù)進(jìn)程(DEDICATEDSERVER PROCESS)。對于多線索服務(wù)器(MULTI-THREADED SERVER)可支持多個(gè)用戶進(jìn)程。如果在系統(tǒng)中具有大量用戶,多線索服務(wù)器可支持大量用戶,尤其在客戶_服務(wù)器環(huán)境中。在一個(gè)數(shù)據(jù)庫實(shí)例中可建立多個(gè)調(diào)度進(jìn)程。對每種網(wǎng)絡(luò)協(xié)議至少建立一個(gè)調(diào)度進(jìn)程。數(shù)據(jù)庫管理員根據(jù)操作系統(tǒng)中每個(gè)進(jìn)程可連接數(shù)目的限制決定啟動的調(diào)度程序的最優(yōu)數(shù),在實(shí)例運(yùn)行時(shí)可增加或刪除調(diào)度進(jìn)程。多線索服務(wù)器需要SQL*NET版本2或

15、更后的版本。在多線索服務(wù)器的配置下,一個(gè)網(wǎng)絡(luò)接收器進(jìn)程等待客戶應(yīng)用連接請求,并將每一個(gè)發(fā)送到一個(gè)調(diào)度進(jìn)程。如果不能將客戶應(yīng)用連接到一調(diào)度進(jìn)程時(shí),網(wǎng)絡(luò)接收器進(jìn)程將啟動一個(gè)專用服務(wù)器進(jìn)程。該網(wǎng)絡(luò)接收器進(jìn)程不是ORACLE實(shí)例的組成部分,它是處理與ORACLE有關(guān)的網(wǎng)絡(luò)進(jìn)程的組成部分。在實(shí)例啟動時(shí),該網(wǎng)絡(luò)接收器被打開,為用戶連接到ORACLE建立一通信路徑,然后每一個(gè)調(diào)度進(jìn)程把連接請求的調(diào)度進(jìn)程的地址給予于它的接收器。當(dāng)一個(gè)用戶進(jìn)程作連接請求時(shí),網(wǎng)絡(luò)接收器進(jìn)程分析請求并決定該用戶是否可使用一調(diào)度進(jìn)程。如果是,該網(wǎng)絡(luò)接收器進(jìn)程返回該調(diào)度進(jìn)程的地址,之后用戶進(jìn)程直接連接到該調(diào)度進(jìn)程。有些用戶進(jìn)程不能調(diào)度

16、進(jìn)程通信(如果使用SQL*NET以前的版本的用戶),網(wǎng)絡(luò)接收器進(jìn)程不能將如此用戶連接到一調(diào)度進(jìn)程。在這種情況下,網(wǎng)絡(luò)接收器建立一個(gè)專用服務(wù)器進(jìn)程,建立一種合適的連接。2)、ORACLE內(nèi)存結(jié)構(gòu)ORACLE在內(nèi)存存儲下列信息:l 執(zhí)行的程序代碼。l 連接的會話信息l 程序執(zhí)行期間所需數(shù)據(jù)和共享的信息l 存儲在外存儲上的緩沖信息。ORACLE具有下列基本的內(nèi)存結(jié)構(gòu):l 軟件代碼區(qū)l 系統(tǒng)全局區(qū),包括數(shù)據(jù)庫緩沖存儲區(qū)、日志緩沖區(qū)和共享池.l 程序全局區(qū),包括棧區(qū)和數(shù)據(jù)區(qū).l 排序區(qū)軟件代碼區(qū)用于存儲正在執(zhí)行的或可以執(zhí)行的程序代碼。軟件區(qū)是只讀,可安裝成共享或非共享。ORACLE系統(tǒng)程序是可共享的,以

17、致多個(gè)ORACLE用戶可存取它,而不需要在內(nèi)存有多個(gè)副本。用戶程序可以共享也可以不共享。系統(tǒng)全局區(qū)為一組由ORACLE分配的共享的內(nèi)存結(jié)構(gòu),可包含一個(gè)數(shù)據(jù)庫實(shí)例的數(shù)據(jù)或控制信息。如果多個(gè)用戶同時(shí)連接到同一實(shí)例時(shí),在實(shí)例的SGA中數(shù)據(jù)可為多個(gè)用戶所共享,所以又稱為共享全局區(qū)。當(dāng)實(shí)例起動時(shí),SGA的存儲自動地被分配;當(dāng)實(shí)例關(guān)閉時(shí),該存儲被回收。所有連接到多進(jìn)程數(shù)據(jù)庫實(shí)例的全部用戶可自動地被分配;當(dāng)實(shí)例關(guān)閉時(shí),該存儲被回收。所有連接到多進(jìn)程數(shù)據(jù)庫實(shí)例的全部用戶可使用其SGA中的信息,但僅僅有幾個(gè)進(jìn)程可寫入信息。在SGA中存儲信息將內(nèi)存劃分成幾個(gè)區(qū):數(shù)據(jù)庫緩沖存儲區(qū)、日志緩沖區(qū)、共享池、請求和響應(yīng)隊(duì)列

18、、數(shù)據(jù)字典存儲區(qū)和其它各種信息。程序全局區(qū)PGA是一個(gè)內(nèi)存區(qū),包含單個(gè)進(jìn)程的數(shù)據(jù)和控制信息,所以又稱為進(jìn)程全局區(qū)(PROCESS GLOBAL AREA)。排序區(qū)排序需要內(nèi)存空間,ORACLE利用該內(nèi)存排序數(shù)據(jù),這部分空間稱為排序區(qū)。排序區(qū)存在于請求排序的用戶進(jìn)程的內(nèi)存中,該空間的大小為適就排序數(shù)據(jù)量的大小,可增長,但受初始化參數(shù)SORT-AREA-SIZER所限制。2 ORACLE的配置方案所有連接到ORACLE的用戶必須執(zhí)行兩個(gè)代碼模塊可存取一個(gè)ORACLE數(shù)據(jù)庫實(shí)例:l 應(yīng)用或ORACLE工具:一數(shù)據(jù)庫用戶執(zhí)行一數(shù)據(jù)庫應(yīng)用或一個(gè)ORACLE工具,可向ORACLE數(shù)據(jù)庫發(fā)出SQL語句。l

19、ORACLE服務(wù)器程序:負(fù)責(zé)解釋和處理應(yīng)用中的SQL語句。在多進(jìn)程實(shí)例中,連接用戶的代碼可按下列三種方案之一配置:l 對于每一個(gè)用戶,其數(shù)據(jù)庫應(yīng)用程序和服務(wù)器程序組合成單個(gè)用戶進(jìn)程l 對于每一個(gè)用戶,其數(shù)據(jù)庫應(yīng)用是由用戶進(jìn)程所運(yùn)行,并有一個(gè)專用服務(wù)器進(jìn)程。執(zhí)行ORACLE服務(wù)器的代碼。這樣的配置稱為專用服務(wù)器體系結(jié)構(gòu)l 執(zhí)行數(shù)據(jù)庫應(yīng)用的進(jìn)程不同于執(zhí)行ORACLE服務(wù)器代碼的進(jìn)程,而且每一個(gè)服務(wù)器進(jìn)程(執(zhí)行ORACLE服務(wù)器代碼)可服務(wù)于多個(gè)用戶進(jìn)程,這樣的配置稱為多線索服務(wù)器體系結(jié)構(gòu)。1) USER/SERVER進(jìn)程相結(jié)合的結(jié)構(gòu)在這種配置下,數(shù)據(jù)庫應(yīng)用和ORACLE服務(wù)器程序是在同一個(gè)進(jìn)程中運(yùn)

20、行,該進(jìn)程稱為用戶進(jìn)程。這種ORACLE配置有時(shí)稱為單任務(wù)ORACLE(single_task ORACLE),該配置適用于這樣的操作系統(tǒng),它可在同一進(jìn)程中的數(shù)據(jù)庫應(yīng)用和ORACLE代碼之間維護(hù)一個(gè)隔離,該隔離是為數(shù)據(jù)安全性和完整性所需。其中程序接口(program interface)是負(fù)責(zé)ORACLE服務(wù)器代碼的隔離和保護(hù),在數(shù)據(jù)庫應(yīng)用和ORACLE用戶程序之間傳送數(shù)據(jù)。2) 使用專用服務(wù)器進(jìn)程的系統(tǒng)結(jié)構(gòu)使用專用服務(wù)器進(jìn)程的ORACLE系統(tǒng)在兩臺計(jì)算機(jī)上運(yùn)行。在這種系統(tǒng)中,在一計(jì)算機(jī)上用戶進(jìn)程執(zhí)行數(shù)據(jù)庫應(yīng)用,而在另一臺計(jì)算機(jī)上的服務(wù)器進(jìn)程執(zhí)行相應(yīng)的ORACLE服務(wù)器代碼,這兩個(gè)進(jìn)程是分離的

21、。為每個(gè)用戶進(jìn)程建立的不同的服務(wù)器進(jìn)程稱為專用服務(wù)器進(jìn)程,因?yàn)樵摲?wù)器進(jìn)程僅對相連的用戶進(jìn)程起作用。這種配置又稱為兩任務(wù)ORACLE。每一個(gè)連接到ORACLE的用戶進(jìn)程有一個(gè)相應(yīng)的專用服務(wù)進(jìn)程。這種系統(tǒng)結(jié)構(gòu)允許客戶應(yīng)用是有工作站上執(zhí)行,通過網(wǎng)絡(luò)與運(yùn)行ORACLE的計(jì)算機(jī)通信。當(dāng)客戶應(yīng)用和ORACLE服務(wù)器代碼是在同一臺計(jì)算機(jī)上執(zhí)行時(shí),這種結(jié)構(gòu)也可用。3) 多線索服務(wù)器的系統(tǒng)結(jié)構(gòu)多線索服務(wù)器配置允許許多用戶進(jìn)程共享很少服務(wù)器進(jìn)程。在沒有多線索服務(wù)器的配置中,每一個(gè)用戶進(jìn)程需要自己的專用服務(wù)器進(jìn)程。在具有多線索服務(wù)器的配置中,許多用戶進(jìn)程連接到調(diào)度進(jìn)程,由調(diào)度進(jìn)程將客戶請求發(fā)送到一個(gè)共享服務(wù)器進(jìn)程

22、。多線索服務(wù)器配置的優(yōu)點(diǎn)是降低系統(tǒng)開銷,增加用戶個(gè)數(shù)。該系統(tǒng)中需要下列類型的進(jìn)程:l 網(wǎng)絡(luò)接收器進(jìn)程,將用戶進(jìn)程連接到調(diào)度進(jìn)程和專用服務(wù)器進(jìn)程。l 一個(gè)或多個(gè)調(diào)度進(jìn)程l 一個(gè)或多個(gè)共享服務(wù)器進(jìn)程其中網(wǎng)絡(luò)接收器進(jìn)程等待新來的連接請求,決定每一用戶進(jìn)程能否用共享服務(wù)器進(jìn)程。如果可以使用,接收器進(jìn)程將一調(diào)度進(jìn)程的地址返回給用戶進(jìn)程。如果用戶進(jìn)程請求一專用服務(wù)器,該接收器進(jìn)程將建立一個(gè)專用服務(wù)器進(jìn)程,將用戶進(jìn)程連接到該專用服務(wù)器進(jìn)程。對于數(shù)據(jù)庫客戶機(jī)所使用的每種網(wǎng)絡(luò)協(xié)議至少配置一個(gè)調(diào)度進(jìn)程,并啟動它。當(dāng)用戶作一次調(diào)用時(shí),調(diào)度進(jìn)程將請求放置在SGA的請求隊(duì)列中,由可用的共享服務(wù)器進(jìn)程獲取。共享服務(wù)器進(jìn)程

23、為完成每一個(gè)用戶進(jìn)程的請求作所有必要的數(shù)據(jù)庫調(diào)用。當(dāng)服務(wù)器完成請求時(shí),將結(jié)果返回到調(diào)度進(jìn)程的隊(duì)列,然后由調(diào)度進(jìn)程將完成的請求返回給用戶進(jìn)程。共享服務(wù)器進(jìn)程:除共享服務(wù)器進(jìn)程不是連接指定的用戶進(jìn)程外,共享服務(wù)器進(jìn)程和專用服務(wù)器進(jìn)程提供相同的功能,一個(gè)共享服務(wù)器進(jìn)程在多線索服務(wù)器的配置中可為任何客戶請求服務(wù)。一個(gè)共享服務(wù)器進(jìn)程的SGA不包含有與用戶相關(guān)的數(shù)據(jù),其信息可為所有共享服務(wù)器進(jìn)程存取,它僅包含??臻g、進(jìn)程指定變量。所有與會話有關(guān)的信息是包含有SGA中。每一個(gè)共享服務(wù)器進(jìn)程可存取全部會話的數(shù)據(jù)空間,以致任何服務(wù)進(jìn)程可處理任何會話的請求。對于每一個(gè)會話的數(shù)據(jù)空間是在SGA中分配空間。ORACL

24、E根據(jù)請求隊(duì)列的長度可動態(tài)地調(diào)整共享服務(wù)器進(jìn)程??山⒌墓蚕矸?wù)器進(jìn)程將請求放到請求隊(duì)列。一個(gè)用戶請求是對數(shù)據(jù)庫的一次程序接口調(diào)用,為SQL語句。在SGA中請求隊(duì)列對實(shí)例的全部調(diào)度進(jìn)程是公用的。服務(wù)器進(jìn)程為新請求檢查公用請求隊(duì)列,按先進(jìn)先出的原則從隊(duì)列檢出一個(gè)請求,然后為完成該請求對數(shù)據(jù)庫作必要的調(diào)用。共享服務(wù)器進(jìn)程將響應(yīng)放在調(diào)度進(jìn)程的響應(yīng)隊(duì)列。每一個(gè)調(diào)度進(jìn)程在SGA中有自己的響應(yīng)隊(duì)列,每個(gè)調(diào)度進(jìn)程負(fù)責(zé)將完成的請求回送給相應(yīng)的用戶進(jìn)程。3.ORACLE運(yùn)行1) 使用專用服務(wù)進(jìn)程的ORACLE的運(yùn)行在這種配置下,ORACLE運(yùn)行過程如下:(1) 數(shù)據(jù)庫服務(wù)器計(jì)算機(jī)當(dāng)前正在運(yùn)行ORACLE(后臺進(jìn)

25、程)。(2) 在一客戶工作站運(yùn)行一個(gè)數(shù)據(jù)庫應(yīng)用(為用戶進(jìn)程),如SQL*PLUS??蛻魬?yīng)用使用SQL*NET DRIVER建立對服務(wù)器的連接。(3) 數(shù)據(jù)庫服務(wù)器計(jì)算機(jī)當(dāng)前正運(yùn)行合適的SQL*NET DRIVER,該機(jī)上接收器進(jìn)程檢出客戶數(shù)據(jù)庫應(yīng)用的連接請求,并在該機(jī)上為用戶進(jìn)程建立專用服務(wù)器進(jìn)程。(4) 用戶發(fā)出單個(gè)SQL語句。(5) 專用服務(wù)器進(jìn)程接收該語句,在此處有兩種方法處理SQL語句:l 如果在共享池一共享SQL區(qū)中包含有相同SQL語句時(shí),該服務(wù)器進(jìn)程可利用已存在的共享SQL區(qū)執(zhí)行客戶的SQL語句。l 如果在共享池中沒有一個(gè)SQL區(qū)包含有相同的SQL語句時(shí),在共享池中為該語句分配一新

26、的共享SQL區(qū)。在每一種情況,在會話的PGA中建立一個(gè)專用SQL區(qū),專用服務(wù)器進(jìn)程檢查用戶對查詢數(shù)據(jù)的存取權(quán)限。(6) 如果需要,服務(wù)器進(jìn)程從數(shù)據(jù)文件中檢索數(shù)據(jù)塊,或者可使用已存儲在實(shí)例SGA中的緩沖存儲區(qū)的數(shù)據(jù)塊。(7) 服務(wù)器進(jìn)程執(zhí)行存儲在共享SQL區(qū)中的SQL語句。數(shù)據(jù)首先在SGA中修改,由DBWR進(jìn)程在最有效時(shí)將它寫入磁盤。LGWR進(jìn)程在在線日志文件中記錄用戶提交請求的事務(wù)。(8)如果請求成功,服務(wù)器將通過網(wǎng)絡(luò)發(fā)送一信息。如果請求不成功,將發(fā)送相應(yīng)的錯誤信息。(9)在整個(gè)過程中,其它的后臺進(jìn)程是運(yùn)行的,同時(shí)注意需要干預(yù)的條件。另外,ORACLE管理其它事務(wù),防止不同事務(wù)之間請求同一數(shù)據(jù)

27、的競爭。2) 使用多線索服務(wù)器的ORACLE的運(yùn)行在這種配置下,ORACLE運(yùn)行過程如下:(1) 一數(shù)據(jù)庫服務(wù)器計(jì)算機(jī)運(yùn)行使用多線索服務(wù)器配置的ORACLE。(2) 在一客戶工作站運(yùn)行一數(shù)據(jù)庫應(yīng)用(在一用戶進(jìn)程中)??蛻魬?yīng)用合適的SQL*NET驅(qū)動器試圖建立到數(shù)據(jù)庫服務(wù)器計(jì)算機(jī)的連接。(3) 數(shù)據(jù)庫服務(wù)器計(jì)算機(jī)當(dāng)前運(yùn)行合適的SQL*NET驅(qū)動器,它的網(wǎng)絡(luò)接收器進(jìn)程檢出用戶進(jìn)程的連接請求,并決定用戶進(jìn)程如何連接。如果用戶是使用SQL*NET版本2,該網(wǎng)絡(luò)接收器通知用戶進(jìn)程使用一個(gè)可用的調(diào)度進(jìn)程的地址重新連接。(4) 用戶發(fā)出單個(gè)SQL語句(5) 調(diào)度進(jìn)程將用戶進(jìn)程的請求放入請求隊(duì)列,該隊(duì)列位于S

28、GA中,可為所有調(diào)度進(jìn)程共享。(6) 一個(gè)可用共享服務(wù)器檢驗(yàn)公用調(diào)度進(jìn)程請求隊(duì)列,并從隊(duì)列中檢出下一個(gè)SQL語句。然后處理該SQL語句,同前一(5),(6)和(7)。注意:會話的專用SQL區(qū)是建立在SGA中。(7) 一當(dāng)共享服務(wù)器進(jìn)程完成SQL處理,該進(jìn)程將結(jié)果放置發(fā)入該請求的調(diào)度進(jìn)程的響應(yīng)隊(duì)列。(8) 調(diào)度進(jìn)程檢查它的響應(yīng)隊(duì)列,并將完成的請求送回請求的用戶進(jìn)程。4.數(shù)據(jù)庫結(jié)構(gòu)和空間管理一個(gè)ORACLE數(shù)據(jù)庫是數(shù)據(jù)的集合,被處理成一個(gè)單位。一個(gè)ORACLE數(shù)據(jù)庫有一個(gè)物理結(jié)構(gòu)和一個(gè)邏輯結(jié)構(gòu)。物理數(shù)據(jù)庫結(jié)構(gòu)(physical database structure)是由構(gòu)成數(shù)據(jù)庫的操作系統(tǒng)文件所決

29、定。每一個(gè)ORACLE數(shù)據(jù)庫是由三種類型的文件組成:數(shù)據(jù)文件、日志文件和控制文件。數(shù)據(jù)庫的文件為數(shù)據(jù)庫信息提供真正的物理存儲。邏輯數(shù)據(jù)庫結(jié)構(gòu)是用戶所涉及的數(shù)據(jù)庫結(jié)構(gòu)。一個(gè)ORACLE數(shù)據(jù)庫的邏輯結(jié)構(gòu)由下列因素決定:l 一個(gè)或多個(gè)表空間l 數(shù)據(jù)庫模式對象(即表、視圖、索引、聚集、序列、存儲過程)邏輯存儲結(jié)構(gòu)如表空間(dataspace)、段(segment)和范圍將支配一個(gè)數(shù)據(jù)庫的物理空間如何使用。模式對象(schema object)用它們之間的聯(lián)系組成了一個(gè)數(shù)據(jù)庫的關(guān)系設(shè)計(jì)。1) 物理結(jié)構(gòu)(1) 數(shù)據(jù)文件每一個(gè)ORACLE數(shù)據(jù)庫有一個(gè)或多個(gè)物理的數(shù)據(jù)文件(data file)。一個(gè)數(shù)據(jù)庫的數(shù)據(jù)文件包含全部數(shù)據(jù)庫數(shù)據(jù)。邏輯數(shù)據(jù)庫結(jié)構(gòu)(如表、索引)的數(shù)據(jù)物理地存儲在數(shù)據(jù)庫的數(shù)據(jù)文件中。數(shù)據(jù)文件有下列特征:l 一個(gè)數(shù)據(jù)文件僅與一個(gè)數(shù)據(jù)庫聯(lián)系。l 一旦建立,數(shù)據(jù)文件不能改變

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論