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頁,還剩73頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

專題二Oracle的體系結(jié)構(gòu)(重點(diǎn))1.體系結(jié)構(gòu)概述2.邏輯存儲(chǔ)結(jié)構(gòu)3.物理存儲(chǔ)結(jié)構(gòu)4.實(shí)例的內(nèi)存結(jié)構(gòu)5.實(shí)例的進(jìn)程結(jié)構(gòu)6.數(shù)據(jù)字典專題二Oracle的體系結(jié)構(gòu)(重點(diǎn))1.體系結(jié)構(gòu)概述11.體系結(jié)構(gòu)概述完整的Oracle數(shù)據(jù)庫系統(tǒng)通常由兩個(gè)部分組成:實(shí)例(INSTANCE)+數(shù)據(jù)庫(DATABASE)數(shù)據(jù)庫是由一系列物理文件的集合(數(shù)據(jù)文件,控制文件,聯(lián)機(jī)日志,參數(shù)文件等)。實(shí)例是由一組Oracle后臺(tái)進(jìn)程/線程以及在服務(wù)器分配的共享內(nèi)存區(qū)。數(shù)據(jù)庫和實(shí)例之間的關(guān)系:數(shù)據(jù)庫可以由多個(gè)實(shí)例裝載和打開實(shí)例可以在任何時(shí)間裝載和打開一個(gè)數(shù)據(jù)庫一個(gè)實(shí)例在其生存期最多只能裝載和打開一個(gè)數(shù)據(jù)庫1.體系結(jié)構(gòu)概述完整的Oracle數(shù)據(jù)庫系統(tǒng)通常由兩個(gè)部分組21.體系結(jié)構(gòu)概述在啟動(dòng)Oracle數(shù)據(jù)庫服務(wù)器時(shí),實(shí)際上是在服務(wù)器的內(nèi)存中創(chuàng)建一個(gè)Oracle實(shí)例(即在服務(wù)器內(nèi)存中分配共享內(nèi)存并創(chuàng)建相關(guān)的后臺(tái)進(jìn)程),然后由這個(gè)實(shí)例來訪問和控制磁盤中的數(shù)據(jù)文件。Oracle實(shí)例和數(shù)據(jù)庫1.體系結(jié)構(gòu)概述Oracle實(shí)例和數(shù)據(jù)庫32.邏輯存儲(chǔ)結(jié)構(gòu)邏輯存儲(chǔ)單元從小到大依次為:數(shù)據(jù)塊(DataBlocks)盤區(qū)(Extent)段(Segments)表空間(TableSpaces)數(shù)據(jù)庫的邏輯存儲(chǔ)組成2.邏輯存儲(chǔ)結(jié)構(gòu)邏輯存儲(chǔ)單元從小到大依次為:數(shù)據(jù)庫的邏輯存儲(chǔ)42.邏輯存儲(chǔ)結(jié)構(gòu)2.1數(shù)據(jù)塊(DataBlocks)數(shù)據(jù)塊是Oracle用來管理存儲(chǔ)空間的最小單元,也是執(zhí)行數(shù)據(jù)庫輸入輸出操作時(shí)的最小單位。數(shù)據(jù)塊的組成:塊頭部、表目錄、行目錄、空閑空間、行空間。SQL>selectname,valuefromV$parameterwherename='db_block_size';NAMEVALUE------------------------------db_block_size81922.邏輯存儲(chǔ)結(jié)構(gòu)2.1數(shù)據(jù)塊(DataBlocks)SQL52.邏輯存儲(chǔ)結(jié)構(gòu)2.2盤區(qū)盤區(qū)是Oracle存儲(chǔ)分配的最小單位。盤區(qū)是由一系列物理上連續(xù)存放的數(shù)據(jù)塊所構(gòu)成的Oracle存儲(chǔ)結(jié)構(gòu),由一個(gè)或多個(gè)數(shù)據(jù)塊組成一個(gè)盤區(qū),而一個(gè)或多個(gè)盤區(qū)組成一個(gè)段。當(dāng)一個(gè)段中的所有空間被使用完后,系統(tǒng)將自動(dòng)為該段分配一個(gè)新的盤區(qū)。2.邏輯存儲(chǔ)結(jié)構(gòu)2.2盤區(qū)62.邏輯存儲(chǔ)結(jié)構(gòu)2.3段段是由一系列盤區(qū)組成,它也不再是存儲(chǔ)空間的分配單位,而是一個(gè)獨(dú)立的邏輯存儲(chǔ)結(jié)構(gòu)。對于具有獨(dú)立存儲(chǔ)結(jié)構(gòu)的對象,它的數(shù)據(jù)全部存儲(chǔ)在保存它的段中。一個(gè)段只屬于一個(gè)特定的數(shù)據(jù)庫對象,每當(dāng)創(chuàng)建一個(gè)具有獨(dú)立段的數(shù)據(jù)庫對象時(shí),Oracle將為它創(chuàng)建一個(gè)段。在Oracle中,不同類型的數(shù)據(jù)庫對象擁有不同類型的段。根據(jù)段中存放的數(shù)據(jù)庫對象類型,將段分為幾種類型:數(shù)據(jù)段、索引段、臨時(shí)段、回退段和LOB段。2.邏輯存儲(chǔ)結(jié)構(gòu)2.3段72.邏輯存儲(chǔ)結(jié)構(gòu)2.4表空間表空間是在Oracle中可以使用的最大的邏輯存儲(chǔ)結(jié)構(gòu),在數(shù)據(jù)庫中建立的所有內(nèi)容都被存儲(chǔ)在表空間中。一個(gè)表空間由一個(gè)或多個(gè)數(shù)據(jù)文件組成,一個(gè)數(shù)據(jù)文件只可以屬于一個(gè)表空間,這是邏輯與物理的統(tǒng)一。存儲(chǔ)空間在物理上表現(xiàn)為數(shù)據(jù)文件,在邏輯上表現(xiàn)為表空間。表空間的大小等于構(gòu)成該表空間的所有數(shù)據(jù)文件的大小之和。數(shù)據(jù)庫的大小等于其中所有表空間的大小之和。2.邏輯存儲(chǔ)結(jié)構(gòu)2.4表空間82.邏輯存儲(chǔ)結(jié)構(gòu)2.4表空間在創(chuàng)建數(shù)據(jù)庫時(shí),Oracle會(huì)自動(dòng)創(chuàng)建一些默認(rèn)的表空間,其中除了用于存儲(chǔ)用戶數(shù)據(jù)的普通表空間外,還有SYSTEM表空間、撤銷表空間、臨時(shí)表空間。(1).SYSTEM表空間(SYSAUX表空間加以輔助),用于存儲(chǔ):數(shù)據(jù)字典、內(nèi)部系統(tǒng)表基表PL/SQL程序的源代碼和解析代碼數(shù)據(jù)庫對象的定義2.邏輯存儲(chǔ)結(jié)構(gòu)2.4表空間92.邏輯存儲(chǔ)結(jié)構(gòu)2.4表空間(2).撤銷表空間,專門用來在自動(dòng)撤銷管理方式下存儲(chǔ)撤銷信息,即回退信息。(3).臨時(shí)表空間。在實(shí)例運(yùn)行過程中,Oracle使用一些臨時(shí)空間來保存SQL語句執(zhí)行過程中所產(chǎn)生的臨時(shí)數(shù)據(jù)。2.邏輯存儲(chǔ)結(jié)構(gòu)2.4表空間102.邏輯存儲(chǔ)結(jié)構(gòu)2.邏輯存儲(chǔ)結(jié)構(gòu)113.物理存儲(chǔ)結(jié)構(gòu)物理存儲(chǔ)結(jié)構(gòu)并不是獨(dú)立存在的,它與數(shù)據(jù)庫邏輯存儲(chǔ)結(jié)構(gòu)之間有著不可分割的聯(lián)系。從整體上看,Oracle的數(shù)據(jù)在邏輯上存儲(chǔ)在表空間中,而物理上存儲(chǔ)在表空間所對應(yīng)的數(shù)據(jù)文件中。物理存儲(chǔ)結(jié)構(gòu)與邏輯存儲(chǔ)結(jié)構(gòu)之間的關(guān)系3.物理存儲(chǔ)結(jié)構(gòu)物理存儲(chǔ)結(jié)構(gòu)并不是獨(dú)立存在的,它與數(shù)據(jù)庫邏輯123.物理存儲(chǔ)結(jié)構(gòu)3.1數(shù)據(jù)文件數(shù)據(jù)庫物理存儲(chǔ)結(jié)構(gòu)主要包括3類物理文件:數(shù)據(jù)文件(datafile)(*.dbf)控制文件(controlfile)(*.ctl)重做日志文件(redologfile)(*.log)及一些參數(shù)文件查看數(shù)據(jù)庫文件命令:SQL>selectnamefromv$datafile;3.物理存儲(chǔ)結(jié)構(gòu)3.1數(shù)據(jù)文件查看數(shù)據(jù)庫文件命令:133.物理存儲(chǔ)結(jié)構(gòu)數(shù)據(jù)文件大致分為以下幾類:系統(tǒng)數(shù)據(jù)文件(SYSTEM01.DBF、SYSTEMAUX01.DBF)

存放系統(tǒng)表和數(shù)據(jù)字典。撤銷段文件(UNDOTBS01.DBF):存放撤銷段數(shù)據(jù)文件,在數(shù)據(jù)修改中存儲(chǔ)修改之前的記錄。用戶數(shù)據(jù)文件(USER01.DBF、EXAMPLE01.DBF):存放用戶數(shù)據(jù)。注意:臨時(shí)表空間所對應(yīng)的臨時(shí)數(shù)據(jù)文件是一類比較特殊的數(shù)據(jù)文件。臨時(shí)文件的信息只能通過數(shù)據(jù)字典視圖DBA_TEMP_FILE和動(dòng)態(tài)性能視圖V$TEMPFILE來查看;不能像普通數(shù)據(jù)文件一樣通過DBA_DATA_FILES和V$DATAFILE視圖來查看。3.物理存儲(chǔ)結(jié)構(gòu)數(shù)據(jù)文件大致分為以下幾類:注意:143.物理存儲(chǔ)結(jié)構(gòu)3.2控制文件數(shù)據(jù)庫控制文件是一個(gè)很小的二進(jìn)制文件,在其中包含了關(guān)于數(shù)據(jù)庫物理結(jié)構(gòu)的重要信息。通過在加載數(shù)據(jù)庫時(shí)讀取控制文件,Oracle才能找到自己所需的操作系統(tǒng)文件(數(shù)據(jù)文件、重做日志文件等)??刂莆募τ跀?shù)據(jù)庫的成功啟動(dòng)和正常運(yùn)行是至關(guān)重要的。在加載數(shù)據(jù)庫時(shí),實(shí)例必須首先找到數(shù)據(jù)庫的控制文件。如果控制文件正常,實(shí)例才能加載并打開數(shù)據(jù)庫。但是如果控制文件中記錄了錯(cuò)誤的信息,或者實(shí)例無法找到一個(gè)可用的控制文件,數(shù)據(jù)庫將無法加載,當(dāng)然也法打開。3.物理存儲(chǔ)結(jié)構(gòu)3.2控制文件153.物理存儲(chǔ)結(jié)構(gòu)3.2控制文件在數(shù)據(jù)庫運(yùn)行過程中,Oracle會(huì)不斷更新控制文件的內(nèi)容,因此控制文件必須在整個(gè)數(shù)據(jù)庫打開期間保持可用狀態(tài)。如果由于某種原因?qū)е驴刂莆募豢捎?,則數(shù)據(jù)庫將崩潰。每個(gè)數(shù)據(jù)庫必須至少擁有一個(gè)控制文件,一個(gè)數(shù)據(jù)庫可以同時(shí)擁有多個(gè)控制文件,但是一個(gè)控制文件只能屬于一個(gè)數(shù)據(jù)庫。控制文件中的主要信息包括:數(shù)據(jù)庫的名字、檢查點(diǎn)信息、數(shù)據(jù)庫創(chuàng)建的時(shí)間戳、所有的數(shù)據(jù)文件、重做日志文件、歸檔日志文件信息和備份信息等。3.物理存儲(chǔ)結(jié)構(gòu)3.2控制文件163.物理存儲(chǔ)結(jié)構(gòu)3.2控制文件控制文件信息可以從V$controfile中查詢獲得3.物理存儲(chǔ)結(jié)構(gòu)3.2控制文件173.物理存儲(chǔ)結(jié)構(gòu)3.3重做日志文件重做日志文件是記錄數(shù)據(jù)庫中所有修改信息的文件重做日志文件記錄兩類數(shù)據(jù):1.修改前的數(shù)據(jù)2.修改后的數(shù)據(jù)當(dāng)滿足一定條件時(shí)先將修改操作所產(chǎn)生的重做記錄寫入重做日志文件中,然后才將內(nèi)存中的修改結(jié)果成批的寫入數(shù)據(jù)文件,最后再提交事務(wù)。重做日志文件是由重做記錄組成的,重做記錄是由修改向量組成的。當(dāng)用戶執(zhí)行一條update語句對某一個(gè)表中的記錄進(jìn)行修改時(shí),會(huì)生成一條記錄。這條記錄用多個(gè)向量記錄下了被這條語句修改過的各個(gè)數(shù)據(jù)塊中的信息。3.物理存儲(chǔ)結(jié)構(gòu)3.3重做日志文件183.物理存儲(chǔ)結(jié)構(gòu)3.3重做日志文件一旦數(shù)據(jù)庫崩潰,Oracle服務(wù)器就使用重做日志文件中的記錄來進(jìn)行數(shù)據(jù)庫的恢復(fù)工作。引入重做日志文件的目的就是數(shù)據(jù)庫的恢復(fù)。Oracle使用了多組(group)重做日志。重做日志寫進(jìn)程(LGWR)在任意時(shí)刻只能寫一組重做日志組,LGWR后臺(tái)進(jìn)程正在寫的重做日志組稱作當(dāng)前(current)重做日志組。LGWR把完全相同的信息從重做日志緩沖區(qū)(redologbuffer)中復(fù)制到該組的每個(gè)重做日志文件中。它是以循環(huán)的方式寫重做日志組的。當(dāng)LGWR寫滿了一組重做日志時(shí),它就開始寫下一組重做日志。這稱為日志切換。當(dāng)寫滿了最后一組時(shí),LGWR開始寫第一組重做日志。3.物理存儲(chǔ)結(jié)構(gòu)3.3重做日志文件193.物理存儲(chǔ)結(jié)構(gòu)3.3重做日志文件Oracle用以上這種循環(huán)的操作方式的確解決了為了提高數(shù)據(jù)庫系統(tǒng)的效率而產(chǎn)生日志文件不夠大的難題。但這種循環(huán)操作的方式本身又帶來了另一個(gè)嚴(yán)重的問題。那就是當(dāng)LGWR循環(huán)寫了一圈之后再寫重做日志文件組中的文件時(shí),這些重做日志中的信息就要被覆蓋掉,從這時(shí)起Oracle數(shù)據(jù)庫就無法保證數(shù)據(jù)庫崩潰后能恢復(fù)全部提交的數(shù)據(jù)。為了解決這一問題,Oracle引入了歸檔(archive)日志的結(jié)構(gòu)。3.物理存儲(chǔ)結(jié)構(gòu)3.3重做日志文件203.物理存儲(chǔ)結(jié)構(gòu)3.4其他文件除了上述三種類型的文件外,Oracle還提供了其他一些類型的文件,如:歸檔日志文件參數(shù)文件密碼文件預(yù)警日志文件后臺(tái)或用戶跟蹤文件P27-303.物理存儲(chǔ)結(jié)構(gòu)3.4其他文件214.實(shí)例的內(nèi)存結(jié)構(gòu)內(nèi)存結(jié)構(gòu)是Oracle數(shù)據(jù)庫體系結(jié)構(gòu)中最為重要的部分之一,內(nèi)存也是影響數(shù)據(jù)庫性能的主要因素。在Oracle數(shù)據(jù)庫中,服務(wù)器內(nèi)存的大小將直接影響數(shù)據(jù)庫的運(yùn)行速度,特別是多個(gè)用戶連接數(shù)據(jù)庫時(shí),服務(wù)器必須有足夠的內(nèi)存支持,否則有的用戶可能連接不到服務(wù)器,或查詢速度明顯下降。在Oracle系統(tǒng)的體系結(jié)構(gòu)中,有許多不同的內(nèi)存區(qū)域。不同的內(nèi)存區(qū)域用于不同的目的。Oracle的服務(wù)器進(jìn)程和許多后臺(tái)進(jìn)程負(fù)責(zé)在內(nèi)存區(qū)域中寫入、更新、讀取和刪除數(shù)據(jù)。4.實(shí)例的內(nèi)存結(jié)構(gòu)內(nèi)存結(jié)構(gòu)是Oracle數(shù)據(jù)庫體系結(jié)構(gòu)中最為224.實(shí)例的內(nèi)存結(jié)構(gòu)Oracle的2個(gè)主要的內(nèi)存結(jié)構(gòu)系統(tǒng)全局區(qū)(SystemGlobalArea,SGA)程序全局區(qū)(ProgramGlobalArea,PGA)SGAPGA4.實(shí)例的內(nèi)存結(jié)構(gòu)Oracle的2個(gè)主要的內(nèi)存結(jié)構(gòu)SGAPG234.實(shí)例的內(nèi)存結(jié)構(gòu)4.1系統(tǒng)全局區(qū)SGA位于系統(tǒng)的共享內(nèi)存段中,SGA區(qū)中的數(shù)據(jù)可以被所有的服務(wù)和后臺(tái)進(jìn)程共享。如果多個(gè)用戶連接到同一個(gè)數(shù)據(jù)庫實(shí)例,則實(shí)例的SGA區(qū)中的數(shù)據(jù)可被多個(gè)用戶共享。在數(shù)據(jù)庫實(shí)例啟動(dòng)時(shí),SGA的內(nèi)存被自動(dòng)分配;當(dāng)數(shù)據(jù)庫實(shí)例關(guān)閉時(shí),SGA被回收。SGA區(qū)中的主要包含如下內(nèi)存結(jié)構(gòu):數(shù)據(jù)緩存區(qū)、共享池、重做日志緩存、Java池和大型池等結(jié)構(gòu)。4.實(shí)例的內(nèi)存結(jié)構(gòu)4.1系統(tǒng)全局區(qū)SGA244.實(shí)例的內(nèi)存結(jié)構(gòu)4.1系統(tǒng)全局區(qū)SGA數(shù)據(jù)緩沖區(qū)(Databuffercache)Java池大型池重做日志緩沖區(qū)固定SGASGA共享池(Sharedpool)庫緩存數(shù)據(jù)字典緩存4.實(shí)例的內(nèi)存結(jié)構(gòu)4.1系統(tǒng)全局區(qū)SGA數(shù)據(jù)緩沖區(qū)Java池254.實(shí)例的內(nèi)存結(jié)構(gòu)4.2程序全局區(qū)PGA程序全局區(qū)(PGA)是保存特定服務(wù)進(jìn)程的數(shù)據(jù)和控制信息的內(nèi)存結(jié)構(gòu),這個(gè)內(nèi)存結(jié)構(gòu)是非共享的,只有服務(wù)進(jìn)程本身才能夠訪問它自己的PGA區(qū)。每個(gè)服務(wù)進(jìn)程都有它自己的PGA區(qū)。包含如下結(jié)構(gòu):私有SQL工作區(qū)會(huì)話內(nèi)存區(qū)4.實(shí)例的內(nèi)存結(jié)構(gòu)4.2程序全局區(qū)PGA265.實(shí)例的進(jìn)程結(jié)構(gòu)進(jìn)程是操作系統(tǒng)中一個(gè)獨(dú)立的可以調(diào)度的活動(dòng),用于完成指定的任務(wù)。進(jìn)程與程序的區(qū)別在于前者是一個(gè)動(dòng)態(tài)概念,后者是一個(gè)靜態(tài)實(shí)體。程序僅僅是指令的有序集合,而進(jìn)程則強(qiáng)調(diào)執(zhí)行過程。進(jìn)程可以動(dòng)態(tài)地創(chuàng)建,當(dāng)完成任務(wù)后即會(huì)消亡。5.實(shí)例的進(jìn)程結(jié)構(gòu)進(jìn)程是操作系統(tǒng)中一個(gè)獨(dú)立的可以調(diào)度的活動(dòng),275.實(shí)例的進(jìn)程結(jié)構(gòu)

Oracle的進(jìn)程包括三類:用戶進(jìn)程服務(wù)器進(jìn)程后臺(tái)進(jìn)程5.實(shí)例的進(jìn)程結(jié)構(gòu)Oracle的進(jìn)程包括三類:285.實(shí)例的進(jìn)程結(jié)構(gòu)服務(wù)器進(jìn)程、用戶進(jìn)程和后臺(tái)進(jìn)程之間的關(guān)系5.實(shí)例的進(jìn)程結(jié)構(gòu)服務(wù)器進(jìn)程、用戶進(jìn)程和后臺(tái)進(jìn)程之間的關(guān)系295.實(shí)例的進(jìn)程結(jié)構(gòu)5.1用戶進(jìn)程用戶執(zhí)行一個(gè)Oracle應(yīng)用程序或啟動(dòng)一個(gè)Oracle工具(如SQL*Plus)時(shí),創(chuàng)建一個(gè)用戶進(jìn)程來執(zhí)行相應(yīng)的用戶任務(wù)。相關(guān)概念:(1)連接:是一個(gè)用戶進(jìn)程與數(shù)據(jù)庫實(shí)例之間的一條通信路徑,這條通信路徑通過操作系統(tǒng)平臺(tái)中的進(jìn)程間通信機(jī)制或網(wǎng)絡(luò)連接來實(shí)現(xiàn)。(2)會(huì)話:是一個(gè)用戶到數(shù)據(jù)庫的指定連接。例如當(dāng)一個(gè)用戶啟動(dòng)SQL*Plus,并輸入正確的用戶名和密碼連接到一個(gè)數(shù)據(jù)庫庫后,就為該用戶創(chuàng)建了一個(gè)會(huì)話。會(huì)話在用戶連接到實(shí)例的過程中始終存在,直到用戶斷開連接或終止應(yīng)用程序?yàn)橹?。?huì)話是通過連接來建立的;同一個(gè)用戶可以通過建立多個(gè)連接來創(chuàng)建到Oracle數(shù)據(jù)庫的多個(gè)會(huì)話。5.實(shí)例的進(jìn)程結(jié)構(gòu)5.1用戶進(jìn)程相關(guān)概念:會(huì)話是通過連接來建305.實(shí)例的進(jìn)程結(jié)構(gòu)5.2服務(wù)器進(jìn)程服務(wù)器進(jìn)程就是代表客戶會(huì)話完成工作的進(jìn)程。負(fù)責(zé)在用戶進(jìn)程和Oracle實(shí)例之間調(diào)度請求和響應(yīng)。應(yīng)用向數(shù)據(jù)庫發(fā)送的SQL語句就是由這些進(jìn)程接收并執(zhí)行。當(dāng)用戶進(jìn)程提交查詢之后,服務(wù)器進(jìn)程則負(fù)責(zé)執(zhí)行該查詢語句,即將數(shù)據(jù)從磁盤讀入緩存,獲取查詢結(jié)果,然后向用戶進(jìn)程返回結(jié)果。即使響應(yīng)出現(xiàn)了某些錯(cuò)誤,服務(wù)器進(jìn)程也會(huì)把錯(cuò)誤信息發(fā)回用戶進(jìn)程,以便用戶進(jìn)程進(jìn)行合適的處理。在Oracle數(shù)據(jù)庫中可以同時(shí)存在兩種類型的服務(wù)器進(jìn)程:專用服務(wù)器進(jìn)程:只能為一個(gè)用戶進(jìn)程提供服務(wù)。共享服務(wù)進(jìn)程:可以為多個(gè)用戶進(jìn)程提供服務(wù)。5.實(shí)例的進(jìn)程結(jié)構(gòu)5.2服務(wù)器進(jìn)程315.實(shí)例的進(jìn)程結(jié)構(gòu)5.3后臺(tái)進(jìn)程Oracle實(shí)例包括兩部分:SGA和一組后臺(tái)進(jìn)程。在任意一個(gè)刻,Oracle數(shù)據(jù)庫可以處理多個(gè)并發(fā)用戶請求,進(jìn)行復(fù)雜的數(shù)據(jù)操作,與此同時(shí)還要維護(hù)數(shù)據(jù)庫系統(tǒng)使其始終具有良好的性能。為了完成這些任務(wù),Oracle具有一組后臺(tái)進(jìn)程保證數(shù)據(jù)庫運(yùn)行所需的實(shí)際維護(hù)任務(wù)。5.實(shí)例的進(jìn)程結(jié)構(gòu)5.3后臺(tái)進(jìn)程325.實(shí)例的進(jìn)程結(jié)構(gòu)中心后臺(tái)進(jìn)程5.實(shí)例的進(jìn)程結(jié)構(gòu)中心后臺(tái)進(jìn)程335.實(shí)例的進(jìn)程結(jié)構(gòu)Oracle的實(shí)例所必需的后臺(tái)進(jìn)程:DBWR(數(shù)據(jù)寫進(jìn)程)LGWR(日志寫進(jìn)程)CKPT(檢查點(diǎn)進(jìn)程)SMON(系統(tǒng)監(jiān)視進(jìn)程)PMON(進(jìn)程監(jiān)視進(jìn)程)此外,常用的其他進(jìn)程:ARCn(歸檔進(jìn)程)RECO(恢復(fù)進(jìn)程)Dnnn(調(diào)度進(jìn)程)5.實(shí)例的進(jìn)程結(jié)構(gòu)Oracle的實(shí)例所必需的后臺(tái)進(jìn)程:此外,34數(shù)據(jù)字典是由一系列對于用戶而言是只讀的基礎(chǔ)表和視圖組成,它保存了關(guān)于數(shù)據(jù)庫本身以及其中存儲(chǔ)的所有對象的基本信息。對數(shù)據(jù)字典的管理和維護(hù)由Oracle系統(tǒng)負(fù)責(zé),任何數(shù)據(jù)庫用戶都無法對數(shù)據(jù)字典中的內(nèi)容進(jìn)行修改,但是用戶可以查看數(shù)據(jù)字典中的內(nèi)容。數(shù)據(jù)字典中的信息是通過表和視圖的形式組織起來的,數(shù)據(jù)字典和視圖都保存在SYSTEM表空間中。視圖好比一本關(guān)于當(dāng)前Oracle數(shù)據(jù)庫的參考手冊,可以通過SELECT語句查詢。6.數(shù)據(jù)字典數(shù)據(jù)字典是由一系列對于用戶而言是只讀的基礎(chǔ)表和視圖組成,它保35Oracle中的數(shù)據(jù)字典有靜態(tài)和動(dòng)態(tài)之分。

靜態(tài)數(shù)據(jù)字典:在用戶訪問數(shù)據(jù)字典時(shí)不會(huì)發(fā)生改變,主要是由表和視圖組成,數(shù)據(jù)字典中的表是不能直接被訪問的,但是可以訪問數(shù)據(jù)字典中的視圖。靜態(tài)數(shù)據(jù)字典中的視圖分為三類,它們分別由三個(gè)前綴夠成:user_*、all_*、dba_*。動(dòng)態(tài)數(shù)據(jù)字典:依賴數(shù)據(jù)庫運(yùn)行的性能的,反映數(shù)據(jù)庫運(yùn)行的一些內(nèi)在信息,會(huì)不斷進(jìn)行更新。6.數(shù)據(jù)字典Oracle中的數(shù)據(jù)字典有靜態(tài)和動(dòng)態(tài)之分。6.數(shù)據(jù)字典36靜態(tài)數(shù)據(jù)字典3類視圖:user_*

該視圖存儲(chǔ)了關(guān)于當(dāng)前用戶所擁有的對象的信息。(即所有在該用戶模式下的對象)

all_*

該試圖存儲(chǔ)了當(dāng)前用戶能夠訪問的對象的信息。(與user_*相比,all_*并不需要擁有該對象,只需要具有訪問該對象的權(quán)限即可)

dba_*

該視圖存儲(chǔ)了數(shù)據(jù)庫中所有對象的信息。(前提是當(dāng)前用戶具有訪問這些數(shù)據(jù)庫的權(quán)限,一般來說必須具有管理員權(quán)限)

6.數(shù)據(jù)字典靜態(tài)數(shù)據(jù)字典3類視圖:6.數(shù)據(jù)字典37查看當(dāng)前用戶的缺省表空間

SQL>select

username,default_tablespace

from

user_users;

查看當(dāng)前用戶的角色

SQL>select

*

from

user_role_privs;

查看當(dāng)前用戶的系統(tǒng)權(quán)限和表級(jí)權(quán)限

SQL>select

*

from

user_sys_privs;

SQL>select

*

from

user_tab_privs;

查看用戶下所有的表

SQL>select

*

from

user_tables;

顯示指定用戶所具有的系統(tǒng)權(quán)限

SQL>select

*

from

dba_sys_privs

where

grantee=‘SCOTT';

數(shù)據(jù)字典查詢舉例:6.數(shù)據(jù)字典查看當(dāng)前用戶的缺省表空間數(shù)據(jù)字典查詢舉例:6.數(shù)據(jù)字典38顯示特權(quán)用戶

select

*

from

v$pwfile_users;

顯示全局存儲(chǔ)區(qū)SGA的信息SQL>selectname,valuefromv$sga;NAMEALUE------------------------------FixedSize1333312VariableSize310380480DatabaseBuffers58720256RedoBuffers6201344

6.數(shù)據(jù)字典顯示特權(quán)用戶SQL>selectname,value39專題二Oracle的體系結(jié)構(gòu)(重點(diǎn))1.體系結(jié)構(gòu)概述2.邏輯存儲(chǔ)結(jié)構(gòu)3.物理存儲(chǔ)結(jié)構(gòu)4.實(shí)例的內(nèi)存結(jié)構(gòu)5.實(shí)例的進(jìn)程結(jié)構(gòu)6.數(shù)據(jù)字典專題二Oracle的體系結(jié)構(gòu)(重點(diǎn))1.體系結(jié)構(gòu)概述401.體系結(jié)構(gòu)概述完整的Oracle數(shù)據(jù)庫系統(tǒng)通常由兩個(gè)部分組成:實(shí)例(INSTANCE)+數(shù)據(jù)庫(DATABASE)數(shù)據(jù)庫是由一系列物理文件的集合(數(shù)據(jù)文件,控制文件,聯(lián)機(jī)日志,參數(shù)文件等)。實(shí)例是由一組Oracle后臺(tái)進(jìn)程/線程以及在服務(wù)器分配的共享內(nèi)存區(qū)。數(shù)據(jù)庫和實(shí)例之間的關(guān)系:數(shù)據(jù)庫可以由多個(gè)實(shí)例裝載和打開實(shí)例可以在任何時(shí)間裝載和打開一個(gè)數(shù)據(jù)庫一個(gè)實(shí)例在其生存期最多只能裝載和打開一個(gè)數(shù)據(jù)庫1.體系結(jié)構(gòu)概述完整的Oracle數(shù)據(jù)庫系統(tǒng)通常由兩個(gè)部分組411.體系結(jié)構(gòu)概述在啟動(dòng)Oracle數(shù)據(jù)庫服務(wù)器時(shí),實(shí)際上是在服務(wù)器的內(nèi)存中創(chuàng)建一個(gè)Oracle實(shí)例(即在服務(wù)器內(nèi)存中分配共享內(nèi)存并創(chuàng)建相關(guān)的后臺(tái)進(jìn)程),然后由這個(gè)實(shí)例來訪問和控制磁盤中的數(shù)據(jù)文件。Oracle實(shí)例和數(shù)據(jù)庫1.體系結(jié)構(gòu)概述Oracle實(shí)例和數(shù)據(jù)庫422.邏輯存儲(chǔ)結(jié)構(gòu)邏輯存儲(chǔ)單元從小到大依次為:數(shù)據(jù)塊(DataBlocks)盤區(qū)(Extent)段(Segments)表空間(TableSpaces)數(shù)據(jù)庫的邏輯存儲(chǔ)組成2.邏輯存儲(chǔ)結(jié)構(gòu)邏輯存儲(chǔ)單元從小到大依次為:數(shù)據(jù)庫的邏輯存儲(chǔ)432.邏輯存儲(chǔ)結(jié)構(gòu)2.1數(shù)據(jù)塊(DataBlocks)數(shù)據(jù)塊是Oracle用來管理存儲(chǔ)空間的最小單元,也是執(zhí)行數(shù)據(jù)庫輸入輸出操作時(shí)的最小單位。數(shù)據(jù)塊的組成:塊頭部、表目錄、行目錄、空閑空間、行空間。SQL>selectname,valuefromV$parameterwherename='db_block_size';NAMEVALUE------------------------------db_block_size81922.邏輯存儲(chǔ)結(jié)構(gòu)2.1數(shù)據(jù)塊(DataBlocks)SQL442.邏輯存儲(chǔ)結(jié)構(gòu)2.2盤區(qū)盤區(qū)是Oracle存儲(chǔ)分配的最小單位。盤區(qū)是由一系列物理上連續(xù)存放的數(shù)據(jù)塊所構(gòu)成的Oracle存儲(chǔ)結(jié)構(gòu),由一個(gè)或多個(gè)數(shù)據(jù)塊組成一個(gè)盤區(qū),而一個(gè)或多個(gè)盤區(qū)組成一個(gè)段。當(dāng)一個(gè)段中的所有空間被使用完后,系統(tǒng)將自動(dòng)為該段分配一個(gè)新的盤區(qū)。2.邏輯存儲(chǔ)結(jié)構(gòu)2.2盤區(qū)452.邏輯存儲(chǔ)結(jié)構(gòu)2.3段段是由一系列盤區(qū)組成,它也不再是存儲(chǔ)空間的分配單位,而是一個(gè)獨(dú)立的邏輯存儲(chǔ)結(jié)構(gòu)。對于具有獨(dú)立存儲(chǔ)結(jié)構(gòu)的對象,它的數(shù)據(jù)全部存儲(chǔ)在保存它的段中。一個(gè)段只屬于一個(gè)特定的數(shù)據(jù)庫對象,每當(dāng)創(chuàng)建一個(gè)具有獨(dú)立段的數(shù)據(jù)庫對象時(shí),Oracle將為它創(chuàng)建一個(gè)段。在Oracle中,不同類型的數(shù)據(jù)庫對象擁有不同類型的段。根據(jù)段中存放的數(shù)據(jù)庫對象類型,將段分為幾種類型:數(shù)據(jù)段、索引段、臨時(shí)段、回退段和LOB段。2.邏輯存儲(chǔ)結(jié)構(gòu)2.3段462.邏輯存儲(chǔ)結(jié)構(gòu)2.4表空間表空間是在Oracle中可以使用的最大的邏輯存儲(chǔ)結(jié)構(gòu),在數(shù)據(jù)庫中建立的所有內(nèi)容都被存儲(chǔ)在表空間中。一個(gè)表空間由一個(gè)或多個(gè)數(shù)據(jù)文件組成,一個(gè)數(shù)據(jù)文件只可以屬于一個(gè)表空間,這是邏輯與物理的統(tǒng)一。存儲(chǔ)空間在物理上表現(xiàn)為數(shù)據(jù)文件,在邏輯上表現(xiàn)為表空間。表空間的大小等于構(gòu)成該表空間的所有數(shù)據(jù)文件的大小之和。數(shù)據(jù)庫的大小等于其中所有表空間的大小之和。2.邏輯存儲(chǔ)結(jié)構(gòu)2.4表空間472.邏輯存儲(chǔ)結(jié)構(gòu)2.4表空間在創(chuàng)建數(shù)據(jù)庫時(shí),Oracle會(huì)自動(dòng)創(chuàng)建一些默認(rèn)的表空間,其中除了用于存儲(chǔ)用戶數(shù)據(jù)的普通表空間外,還有SYSTEM表空間、撤銷表空間、臨時(shí)表空間。(1).SYSTEM表空間(SYSAUX表空間加以輔助),用于存儲(chǔ):數(shù)據(jù)字典、內(nèi)部系統(tǒng)表基表PL/SQL程序的源代碼和解析代碼數(shù)據(jù)庫對象的定義2.邏輯存儲(chǔ)結(jié)構(gòu)2.4表空間482.邏輯存儲(chǔ)結(jié)構(gòu)2.4表空間(2).撤銷表空間,專門用來在自動(dòng)撤銷管理方式下存儲(chǔ)撤銷信息,即回退信息。(3).臨時(shí)表空間。在實(shí)例運(yùn)行過程中,Oracle使用一些臨時(shí)空間來保存SQL語句執(zhí)行過程中所產(chǎn)生的臨時(shí)數(shù)據(jù)。2.邏輯存儲(chǔ)結(jié)構(gòu)2.4表空間492.邏輯存儲(chǔ)結(jié)構(gòu)2.邏輯存儲(chǔ)結(jié)構(gòu)503.物理存儲(chǔ)結(jié)構(gòu)物理存儲(chǔ)結(jié)構(gòu)并不是獨(dú)立存在的,它與數(shù)據(jù)庫邏輯存儲(chǔ)結(jié)構(gòu)之間有著不可分割的聯(lián)系。從整體上看,Oracle的數(shù)據(jù)在邏輯上存儲(chǔ)在表空間中,而物理上存儲(chǔ)在表空間所對應(yīng)的數(shù)據(jù)文件中。物理存儲(chǔ)結(jié)構(gòu)與邏輯存儲(chǔ)結(jié)構(gòu)之間的關(guān)系3.物理存儲(chǔ)結(jié)構(gòu)物理存儲(chǔ)結(jié)構(gòu)并不是獨(dú)立存在的,它與數(shù)據(jù)庫邏輯513.物理存儲(chǔ)結(jié)構(gòu)3.1數(shù)據(jù)文件數(shù)據(jù)庫物理存儲(chǔ)結(jié)構(gòu)主要包括3類物理文件:數(shù)據(jù)文件(datafile)(*.dbf)控制文件(controlfile)(*.ctl)重做日志文件(redologfile)(*.log)及一些參數(shù)文件查看數(shù)據(jù)庫文件命令:SQL>selectnamefromv$datafile;3.物理存儲(chǔ)結(jié)構(gòu)3.1數(shù)據(jù)文件查看數(shù)據(jù)庫文件命令:523.物理存儲(chǔ)結(jié)構(gòu)數(shù)據(jù)文件大致分為以下幾類:系統(tǒng)數(shù)據(jù)文件(SYSTEM01.DBF、SYSTEMAUX01.DBF)

存放系統(tǒng)表和數(shù)據(jù)字典。撤銷段文件(UNDOTBS01.DBF):存放撤銷段數(shù)據(jù)文件,在數(shù)據(jù)修改中存儲(chǔ)修改之前的記錄。用戶數(shù)據(jù)文件(USER01.DBF、EXAMPLE01.DBF):存放用戶數(shù)據(jù)。注意:臨時(shí)表空間所對應(yīng)的臨時(shí)數(shù)據(jù)文件是一類比較特殊的數(shù)據(jù)文件。臨時(shí)文件的信息只能通過數(shù)據(jù)字典視圖DBA_TEMP_FILE和動(dòng)態(tài)性能視圖V$TEMPFILE來查看;不能像普通數(shù)據(jù)文件一樣通過DBA_DATA_FILES和V$DATAFILE視圖來查看。3.物理存儲(chǔ)結(jié)構(gòu)數(shù)據(jù)文件大致分為以下幾類:注意:533.物理存儲(chǔ)結(jié)構(gòu)3.2控制文件數(shù)據(jù)庫控制文件是一個(gè)很小的二進(jìn)制文件,在其中包含了關(guān)于數(shù)據(jù)庫物理結(jié)構(gòu)的重要信息。通過在加載數(shù)據(jù)庫時(shí)讀取控制文件,Oracle才能找到自己所需的操作系統(tǒng)文件(數(shù)據(jù)文件、重做日志文件等)??刂莆募τ跀?shù)據(jù)庫的成功啟動(dòng)和正常運(yùn)行是至關(guān)重要的。在加載數(shù)據(jù)庫時(shí),實(shí)例必須首先找到數(shù)據(jù)庫的控制文件。如果控制文件正常,實(shí)例才能加載并打開數(shù)據(jù)庫。但是如果控制文件中記錄了錯(cuò)誤的信息,或者實(shí)例無法找到一個(gè)可用的控制文件,數(shù)據(jù)庫將無法加載,當(dāng)然也法打開。3.物理存儲(chǔ)結(jié)構(gòu)3.2控制文件543.物理存儲(chǔ)結(jié)構(gòu)3.2控制文件在數(shù)據(jù)庫運(yùn)行過程中,Oracle會(huì)不斷更新控制文件的內(nèi)容,因此控制文件必須在整個(gè)數(shù)據(jù)庫打開期間保持可用狀態(tài)。如果由于某種原因?qū)е驴刂莆募豢捎?,則數(shù)據(jù)庫將崩潰。每個(gè)數(shù)據(jù)庫必須至少擁有一個(gè)控制文件,一個(gè)數(shù)據(jù)庫可以同時(shí)擁有多個(gè)控制文件,但是一個(gè)控制文件只能屬于一個(gè)數(shù)據(jù)庫??刂莆募械闹饕畔ǎ簲?shù)據(jù)庫的名字、檢查點(diǎn)信息、數(shù)據(jù)庫創(chuàng)建的時(shí)間戳、所有的數(shù)據(jù)文件、重做日志文件、歸檔日志文件信息和備份信息等。3.物理存儲(chǔ)結(jié)構(gòu)3.2控制文件553.物理存儲(chǔ)結(jié)構(gòu)3.2控制文件控制文件信息可以從V$controfile中查詢獲得3.物理存儲(chǔ)結(jié)構(gòu)3.2控制文件563.物理存儲(chǔ)結(jié)構(gòu)3.3重做日志文件重做日志文件是記錄數(shù)據(jù)庫中所有修改信息的文件重做日志文件記錄兩類數(shù)據(jù):1.修改前的數(shù)據(jù)2.修改后的數(shù)據(jù)當(dāng)滿足一定條件時(shí)先將修改操作所產(chǎn)生的重做記錄寫入重做日志文件中,然后才將內(nèi)存中的修改結(jié)果成批的寫入數(shù)據(jù)文件,最后再提交事務(wù)。重做日志文件是由重做記錄組成的,重做記錄是由修改向量組成的。當(dāng)用戶執(zhí)行一條update語句對某一個(gè)表中的記錄進(jìn)行修改時(shí),會(huì)生成一條記錄。這條記錄用多個(gè)向量記錄下了被這條語句修改過的各個(gè)數(shù)據(jù)塊中的信息。3.物理存儲(chǔ)結(jié)構(gòu)3.3重做日志文件573.物理存儲(chǔ)結(jié)構(gòu)3.3重做日志文件一旦數(shù)據(jù)庫崩潰,Oracle服務(wù)器就使用重做日志文件中的記錄來進(jìn)行數(shù)據(jù)庫的恢復(fù)工作。引入重做日志文件的目的就是數(shù)據(jù)庫的恢復(fù)。Oracle使用了多組(group)重做日志。重做日志寫進(jìn)程(LGWR)在任意時(shí)刻只能寫一組重做日志組,LGWR后臺(tái)進(jìn)程正在寫的重做日志組稱作當(dāng)前(current)重做日志組。LGWR把完全相同的信息從重做日志緩沖區(qū)(redologbuffer)中復(fù)制到該組的每個(gè)重做日志文件中。它是以循環(huán)的方式寫重做日志組的。當(dāng)LGWR寫滿了一組重做日志時(shí),它就開始寫下一組重做日志。這稱為日志切換。當(dāng)寫滿了最后一組時(shí),LGWR開始寫第一組重做日志。3.物理存儲(chǔ)結(jié)構(gòu)3.3重做日志文件583.物理存儲(chǔ)結(jié)構(gòu)3.3重做日志文件Oracle用以上這種循環(huán)的操作方式的確解決了為了提高數(shù)據(jù)庫系統(tǒng)的效率而產(chǎn)生日志文件不夠大的難題。但這種循環(huán)操作的方式本身又帶來了另一個(gè)嚴(yán)重的問題。那就是當(dāng)LGWR循環(huán)寫了一圈之后再寫重做日志文件組中的文件時(shí),這些重做日志中的信息就要被覆蓋掉,從這時(shí)起Oracle數(shù)據(jù)庫就無法保證數(shù)據(jù)庫崩潰后能恢復(fù)全部提交的數(shù)據(jù)。為了解決這一問題,Oracle引入了歸檔(archive)日志的結(jié)構(gòu)。3.物理存儲(chǔ)結(jié)構(gòu)3.3重做日志文件593.物理存儲(chǔ)結(jié)構(gòu)3.4其他文件除了上述三種類型的文件外,Oracle還提供了其他一些類型的文件,如:歸檔日志文件參數(shù)文件密碼文件預(yù)警日志文件后臺(tái)或用戶跟蹤文件P27-303.物理存儲(chǔ)結(jié)構(gòu)3.4其他文件604.實(shí)例的內(nèi)存結(jié)構(gòu)內(nèi)存結(jié)構(gòu)是Oracle數(shù)據(jù)庫體系結(jié)構(gòu)中最為重要的部分之一,內(nèi)存也是影響數(shù)據(jù)庫性能的主要因素。在Oracle數(shù)據(jù)庫中,服務(wù)器內(nèi)存的大小將直接影響數(shù)據(jù)庫的運(yùn)行速度,特別是多個(gè)用戶連接數(shù)據(jù)庫時(shí),服務(wù)器必須有足夠的內(nèi)存支持,否則有的用戶可能連接不到服務(wù)器,或查詢速度明顯下降。在Oracle系統(tǒng)的體系結(jié)構(gòu)中,有許多不同的內(nèi)存區(qū)域。不同的內(nèi)存區(qū)域用于不同的目的。Oracle的服務(wù)器進(jìn)程和許多后臺(tái)進(jìn)程負(fù)責(zé)在內(nèi)存區(qū)域中寫入、更新、讀取和刪除數(shù)據(jù)。4.實(shí)例的內(nèi)存結(jié)構(gòu)內(nèi)存結(jié)構(gòu)是Oracle數(shù)據(jù)庫體系結(jié)構(gòu)中最為614.實(shí)例的內(nèi)存結(jié)構(gòu)Oracle的2個(gè)主要的內(nèi)存結(jié)構(gòu)系統(tǒng)全局區(qū)(SystemGlobalArea,SGA)程序全局區(qū)(ProgramGlobalArea,PGA)SGAPGA4.實(shí)例的內(nèi)存結(jié)構(gòu)Oracle的2個(gè)主要的內(nèi)存結(jié)構(gòu)SGAPG624.實(shí)例的內(nèi)存結(jié)構(gòu)4.1系統(tǒng)全局區(qū)SGA位于系統(tǒng)的共享內(nèi)存段中,SGA區(qū)中的數(shù)據(jù)可以被所有的服務(wù)和后臺(tái)進(jìn)程共享。如果多個(gè)用戶連接到同一個(gè)數(shù)據(jù)庫實(shí)例,則實(shí)例的SGA區(qū)中的數(shù)據(jù)可被多個(gè)用戶共享。在數(shù)據(jù)庫實(shí)例啟動(dòng)時(shí),SGA的內(nèi)存被自動(dòng)分配;當(dāng)數(shù)據(jù)庫實(shí)例關(guān)閉時(shí),SGA被回收。SGA區(qū)中的主要包含如下內(nèi)存結(jié)構(gòu):數(shù)據(jù)緩存區(qū)、共享池、重做日志緩存、Java池和大型池等結(jié)構(gòu)。4.實(shí)例的內(nèi)存結(jié)構(gòu)4.1系統(tǒng)全局區(qū)SGA634.實(shí)例的內(nèi)存結(jié)構(gòu)4.1系統(tǒng)全局區(qū)SGA數(shù)據(jù)緩沖區(qū)(Databuffercache)Java池大型池重做日志緩沖區(qū)固定SGASGA共享池(Sharedpool)庫緩存數(shù)據(jù)字典緩存4.實(shí)例的內(nèi)存結(jié)構(gòu)4.1系統(tǒng)全局區(qū)SGA數(shù)據(jù)緩沖區(qū)Java池644.實(shí)例的內(nèi)存結(jié)構(gòu)4.2程序全局區(qū)PGA程序全局區(qū)(PGA)是保存特定服務(wù)進(jìn)程的數(shù)據(jù)和控制信息的內(nèi)存結(jié)構(gòu),這個(gè)內(nèi)存結(jié)構(gòu)是非共享的,只有服務(wù)進(jìn)程本身才能夠訪問它自己的PGA區(qū)。每個(gè)服務(wù)進(jìn)程都有它自己的PGA區(qū)。包含如下結(jié)構(gòu):私有SQL工作區(qū)會(huì)話內(nèi)存區(qū)4.實(shí)例的內(nèi)存結(jié)構(gòu)4.2程序全局區(qū)PGA655.實(shí)例的進(jìn)程結(jié)構(gòu)進(jìn)程是操作系統(tǒng)中一個(gè)獨(dú)立的可以調(diào)度的活動(dòng),用于完成指定的任務(wù)。進(jìn)程與程序的區(qū)別在于前者是一個(gè)動(dòng)態(tài)概念,后者是一個(gè)靜態(tài)實(shí)體。程序僅僅是指令的有序集合,而進(jìn)程則強(qiáng)調(diào)執(zhí)行過程。進(jìn)程可以動(dòng)態(tài)地創(chuàng)建,當(dāng)完成任務(wù)后即會(huì)消亡。5.實(shí)例的進(jìn)程結(jié)構(gòu)進(jìn)程是操作系統(tǒng)中一個(gè)獨(dú)立的可以調(diào)度的活動(dòng),665.實(shí)例的進(jìn)程結(jié)構(gòu)

Oracle的進(jìn)程包括三類:用戶進(jìn)程服務(wù)器進(jìn)程后臺(tái)進(jìn)程5.實(shí)例的進(jìn)程結(jié)構(gòu)Oracle的進(jìn)程包括三類:675.實(shí)例的進(jìn)程結(jié)構(gòu)服務(wù)器進(jìn)程、用戶進(jìn)程和后臺(tái)進(jìn)程之間的關(guān)系5.實(shí)例的進(jìn)程結(jié)構(gòu)服務(wù)器進(jìn)程、用戶進(jìn)程和后臺(tái)進(jìn)程之間的關(guān)系685.實(shí)例的進(jìn)程結(jié)構(gòu)5.1用戶進(jìn)程用戶執(zhí)行一個(gè)Oracle應(yīng)用程序或啟動(dòng)一個(gè)Oracle工具(如SQL*Plus)時(shí),創(chuàng)建一個(gè)用戶進(jìn)程來執(zhí)行相應(yīng)的用戶任務(wù)。相關(guān)概念:(1)連接:是一個(gè)用戶進(jìn)程與數(shù)據(jù)庫實(shí)例之間的一條通信路徑,這條通信路徑通過操作系統(tǒng)平臺(tái)中的進(jìn)程間通信機(jī)制或網(wǎng)絡(luò)連接來實(shí)現(xiàn)。(2)會(huì)話:是一個(gè)用戶到數(shù)據(jù)庫的指定連接。例如當(dāng)一個(gè)用戶啟動(dòng)SQL*Plus,并輸入正確的用戶名和密碼連接到一個(gè)數(shù)據(jù)庫庫后,就為該用戶創(chuàng)建了一個(gè)會(huì)話。會(huì)話在用戶連接到實(shí)例的過程中始終存在,直到用戶斷開連接或終止應(yīng)用程序?yàn)橹埂?huì)話是通過連接來建立的;同一個(gè)用戶可以通過建立多個(gè)連接來創(chuàng)建到Oracle數(shù)據(jù)庫的多個(gè)會(huì)話。5.實(shí)例的進(jìn)程結(jié)構(gòu)5.1用戶進(jìn)程相關(guān)概念:會(huì)話是通過連接來建695.實(shí)例的進(jìn)程結(jié)構(gòu)5.2服務(wù)器進(jìn)程服務(wù)器進(jìn)程就是代表客戶會(huì)話完成工作的進(jìn)程。負(fù)責(zé)在用戶進(jìn)程和Oracle實(shí)例之間調(diào)度請求和響應(yīng)。應(yīng)用向數(shù)據(jù)庫發(fā)送的SQL語句就是由這些進(jìn)程接收并執(zhí)行。當(dāng)用戶進(jìn)程提交查詢之后,服務(wù)器進(jìn)程則負(fù)責(zé)執(zhí)行該查詢語句,即將數(shù)據(jù)從磁盤讀入緩存,獲取查詢結(jié)果,然后向用戶進(jìn)程返回結(jié)果。即使響應(yīng)出現(xiàn)了某些錯(cuò)誤,服務(wù)器進(jìn)程也會(huì)把錯(cuò)誤信息發(fā)回用戶進(jìn)程,以便用戶進(jìn)程進(jìn)行合適的處理。在Oracle數(shù)據(jù)庫中可以同時(shí)存在兩種類型的服務(wù)器進(jìn)程:專用服務(wù)器進(jìn)程:只能為一個(gè)用戶進(jìn)程提供服務(wù)。共享服務(wù)進(jìn)程:可以為多個(gè)用戶進(jìn)程提供服務(wù)。5.實(shí)例的進(jìn)程結(jié)構(gòu)5.2服務(wù)器進(jìn)程705.實(shí)例的進(jìn)程結(jié)構(gòu)5.3后臺(tái)進(jìn)程Oracle實(shí)例包括兩部分:SGA和一組后臺(tái)進(jìn)程。在任意一個(gè)刻,Oracle數(shù)據(jù)庫可以處理多個(gè)并發(fā)用戶請求,進(jìn)行復(fù)雜的數(shù)據(jù)操作,與此同時(shí)還要維護(hù)數(shù)據(jù)庫系統(tǒng)使其始終具有良好的性能。為了完成這些任務(wù),Oracle具有一組后臺(tái)進(jìn)程保證數(shù)據(jù)庫運(yùn)行所需的實(shí)際維護(hù)任務(wù)。5.實(shí)例的進(jìn)程結(jié)構(gòu)5.3后臺(tái)進(jìn)程715.實(shí)例的進(jìn)程結(jié)構(gòu)中心后臺(tái)進(jìn)程5.實(shí)例的進(jìn)程結(jié)構(gòu)中心后臺(tái)進(jìn)程725.實(shí)例的進(jìn)程結(jié)構(gòu)Oracle的實(shí)例所必需的后臺(tái)進(jìn)程:DBWR(數(shù)據(jù)寫進(jìn)程)LGWR(日志寫進(jìn)程)CKPT(檢查點(diǎn)進(jìn)程)SMON(

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論