實(shí)例是由
操作系統(tǒng)中的一組內(nèi)存區(qū)和一系列的操作系統(tǒng)進(jìn)程組成,數(shù)據(jù)庫(kù)則是指
Oracle保存數(shù)據(jù)的一系列物理結(jié)構(gòu)和邏輯結(jié)構(gòu),用戶在訪問Oracle數(shù)據(jù)庫(kù)時(shí)主要是在與實(shí)例打交道,由實(shí)例訪問數(shù)據(jù)庫(kù),并返回相應(yīng)的操作結(jié)果。
最簡(jiǎn)單的Oracle數(shù)據(jù)庫(kù)結(jié)構(gòu)是由一個(gè)實(shí)例和一個(gè)數(shù)據(jù)庫(kù)組成,不過對(duì)于RAC(或OPS)架構(gòu)的Oracle數(shù)據(jù)庫(kù),一個(gè)數(shù)據(jù)庫(kù)會(huì)對(duì)應(yīng)多個(gè)實(shí)例。
在Oracle數(shù)據(jù)庫(kù),實(shí)例和數(shù)據(jù)庫(kù)可以理解成兩個(gè)相互間有關(guān)聯(lián)的獨(dú)立個(gè)體,每個(gè)數(shù)據(jù)庫(kù)都至少有一個(gè)與之對(duì)應(yīng)的實(shí)例(對(duì)于OPS/RAC架構(gòu)的Oracle數(shù)據(jù)庫(kù),一個(gè)數(shù)據(jù)庫(kù)會(huì)對(duì)應(yīng)多個(gè)實(shí)例),每個(gè)實(shí)例在其生命周期內(nèi)同時(shí)只能對(duì)應(yīng)一個(gè)數(shù)據(jù)庫(kù)。所謂的啟動(dòng)Oracle數(shù)據(jù)庫(kù)時(shí),實(shí)際上是連接到實(shí)例,說的更直白點(diǎn)兒,就是連接到操作系統(tǒng)的某些進(jìn)程,并由這些進(jìn)程訪問處理內(nèi)存中的對(duì)象,至于這些對(duì)象時(shí)如何從磁盤被讀取到內(nèi)存,那正是實(shí)例所做的
工作。
數(shù)據(jù)庫(kù)則是:數(shù)據(jù)庫(kù)文件--數(shù)據(jù)文件+REDO日志+控制文件、密碼文件、初始化參數(shù)文件等
數(shù)據(jù)庫(kù)服務(wù)器等于:實(shí)例+數(shù)據(jù)庫(kù) ==》對(duì)客戶機(jī)來說,通過服務(wù)連接數(shù)據(jù)庫(kù),只需要知道服務(wù)。
Oracle中的實(shí)例有內(nèi)存結(jié)構(gòu)和進(jìn)程結(jié)構(gòu)兩大部分組成。
服務(wù)器進(jìn)程和實(shí)例后臺(tái)進(jìn)程區(qū)別:
實(shí)例的一部分是內(nèi)存結(jié)構(gòu),實(shí)例的另外一部分就是進(jìn)程。與內(nèi)存不同,進(jìn)程都是實(shí)實(shí)在在的存在,你可以看得見(不過摸不著)。通過相關(guān)進(jìn)程,Oracle實(shí)現(xiàn)數(shù)據(jù)庫(kù)與實(shí)例的連通;通過相關(guān)進(jìn)程,Oracle實(shí)現(xiàn)數(shù)據(jù)庫(kù)與實(shí)例的互動(dòng);通過相關(guān)進(jìn)程,Oracle實(shí)現(xiàn)對(duì)Oracle數(shù)據(jù)庫(kù)的應(yīng)用。
Oracle進(jìn)程分為兩類:服務(wù)器進(jìn)程(Server Process)和后臺(tái)進(jìn)程(Background Process),下面分別進(jìn)行區(qū)分。
服務(wù)器進(jìn)程
Oracle的服務(wù)器進(jìn)程有Oracle實(shí)例自動(dòng)創(chuàng)建,用來處理連接到實(shí)例的客戶端進(jìn)程發(fā)出的請(qǐng)求,用戶必須通過連接到Oracle的服務(wù)器進(jìn)程來獲取數(shù)據(jù)庫(kù)中的信息。對(duì)于專用服務(wù)器模式,客戶端進(jìn)程和Oracle服務(wù)器進(jìn)程是一一對(duì)應(yīng)的,而在共享服務(wù)器模式下,一個(gè)Oracle服務(wù)器進(jìn)程可能同時(shí)服務(wù)多個(gè)客戶端進(jìn)程。
專有連接模式 :用戶進(jìn)程對(duì)應(yīng)一個(gè)SERVER PROCESS
此時(shí)新增一個(gè)服務(wù)器進(jìn)程,大約需要的內(nèi)存是: AIX 5-10M ;LINUX 3-5M內(nèi)存
建庫(kù)時(shí)默認(rèn)是專有連接模式
服務(wù)器進(jìn)程主要用來執(zhí)行下列的任務(wù):
從磁盤數(shù)據(jù)文件中讀取必須的數(shù)據(jù)塊到SGA得數(shù)據(jù)緩存區(qū)。
以適當(dāng)形式返回SQL語句執(zhí)行結(jié)果。
user process用戶進(jìn)程
通過tnsnames.ora中的服務(wù)名,連接到數(shù)據(jù)庫(kù)服務(wù)器的服務(wù)器進(jìn)程。要經(jīng)過監(jiān)聽到服務(wù)器進(jìn)程--PGA
后臺(tái)進(jìn)程:
服務(wù)器進(jìn)程主要是與客戶端進(jìn)程打交道,后臺(tái)進(jìn)程則是讓內(nèi)存區(qū)與物理文件打交道。像Oracle數(shù)據(jù)庫(kù)這么龐大的結(jié)構(gòu),要保持高效、穩(wěn)定并且具有良好的性能,只有幾個(gè)經(jīng)紀(jì)人顯然不行的,因此各項(xiàng)標(biāo)準(zhǔn)服務(wù)都由特定進(jìn)程專門處理,比如寫數(shù)據(jù)文件要有DBWR進(jìn)程,寫歸檔文件要有ARCH進(jìn)程等。由Oracle在后臺(tái)自動(dòng)啟動(dòng)、管理和維護(hù),因此這些進(jìn)程才被稱為后臺(tái)進(jìn)程。