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

下載本文檔

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

文檔簡介

Oracle體系結(jié)構(gòu)組件

目標(biāo)

完成這一課的學(xué)習(xí)后,您應(yīng)該能達(dá)到下列目標(biāo):

概括

Oracle體系結(jié)構(gòu)及其主要組件

列出在用戶連接到

Oracle例程過程中涉及的結(jié)構(gòu)

Oracle數(shù)據(jù)庫中常用的術(shù)語進(jìn)程(process):一段在內(nèi)存中正在運(yùn)行的程序。后臺進(jìn)程(backgroundprocess):進(jìn)程的一種,在內(nèi)存中運(yùn)行時,不占顯示,而且它的優(yōu)先級比前臺進(jìn)程低??梢灾挥幸粋€前臺進(jìn)程,但可以有多個后臺進(jìn)程。緩沖區(qū)(buffer):一段用來臨時存儲數(shù)據(jù)的內(nèi)存區(qū)。主機(jī)(host):計算機(jī)系統(tǒng)的另一個稱呼。服務(wù)器(server):一臺在網(wǎng)絡(luò)中向其他計算機(jī)系統(tǒng)提供一項或多項服務(wù)的主機(jī)??蛻魴C(jī)(client):一臺使用由服務(wù)器(server)提供服務(wù)的計算機(jī)系統(tǒng)??诹钗募?/p>

基本組件概覽

例程

SGA重做日志

緩沖區(qū)

共享池

數(shù)據(jù)字典

高速緩存庫高速緩存

DBWRSMONPMONCKPTLGWR其它

用戶進(jìn)程

服務(wù)器進(jìn)程

PGA控制文件

數(shù)據(jù)文件

數(shù)據(jù)庫數(shù)據(jù)庫緩沖區(qū)

高速緩存

重做日志文件

Java池

大型共享池

參數(shù)文件

歸檔日志文件

Oracle服務(wù)器

Oracle服務(wù)器:

是一個數(shù)據(jù)庫管理系統(tǒng),它為

信息管理提供了開放、綜合和

集成的方法

包括

Oracle例程和

Oracle

數(shù)據(jù)庫

Oracle服務(wù)器

Oracle例程

Oracle例程:是一種訪問

Oracle數(shù)據(jù)庫的方式

始終打開一個,并且只打開一個數(shù)據(jù)庫

由內(nèi)存結(jié)構(gòu)和后臺進(jìn)程結(jié)構(gòu)組成

后臺進(jìn)程結(jié)構(gòu)

內(nèi)存結(jié)構(gòu)

例程

SGA重做日志緩沖區(qū)

共享池

數(shù)據(jù)字典高速緩存庫高速緩存DBWRSMONPMONCKPTLGWR其它數(shù)據(jù)庫緩沖區(qū)高速緩存

Java

大型共享池

建立連接和創(chuàng)建會話

連接到

Oracle例程包括:

建立用戶連接

創(chuàng)建會話

創(chuàng)建的會話數(shù)據(jù)庫用戶

用戶進(jìn)程

服務(wù)器進(jìn)程

建立的連接

Oracle服務(wù)器

Oracle數(shù)據(jù)庫

Oracle數(shù)據(jù)庫:

是一個被統(tǒng)一處理的數(shù)據(jù)集合

包括三類文件

口令文件

參數(shù)文件

歸檔的日志文件

控制

文件

數(shù)據(jù)

文件

重做

日志

文件

Oracle數(shù)據(jù)庫

物理結(jié)構(gòu)

物理結(jié)構(gòu)包括以下三種文件類型:

控制文件

數(shù)據(jù)文件

重做日志文件

控制文件數(shù)據(jù)文件(包括數(shù)據(jù)字典)

標(biāo)頭

聯(lián)機(jī)重做

日志文件

內(nèi)存結(jié)構(gòu)

Oracle的內(nèi)存結(jié)構(gòu)由兩個內(nèi)存區(qū)組成,分別是:

系統(tǒng)全局區(qū)(SGA):在例程啟動時分配,是

Oracle

例程的基本組件

程序全局區(qū)(PGA):在服務(wù)器進(jìn)程啟動時分配

系統(tǒng)全局區(qū)

SGA包括以下幾種內(nèi)存結(jié)構(gòu):共享池數(shù)據(jù)庫緩沖區(qū)高速緩存重做日志緩沖區(qū)其它結(jié)構(gòu)(例如鎖定和栓鎖管理以及統(tǒng)計數(shù)據(jù))

SGA中還可配置其它兩種內(nèi)存結(jié)構(gòu):

大型共享池

Java池系統(tǒng)全局區(qū)

SGA是動態(tài)的

大小由

SGA_MAX_SIZE

參數(shù)指定

SGA組件以粒組為單位進(jìn)行分配和跟蹤

連續(xù)的虛擬內(nèi)存分配

粒組大小由估算的

SGA_MAX_SIZE

總計大小確定

Oracle執(zhí)行SQL查詢語句的步驟如果用戶在SQL*Plus下輸入了如下的查詢語句:Select*fromstudent;那么,Oracle又是如何來處理這個語句的呢?Oracle執(zhí)行SQL查詢語句的步驟編譯(parse)執(zhí)行(execute)提取數(shù)據(jù)(fetch)Oracle執(zhí)行SQL查詢語句的步驟

編譯:在進(jìn)行編譯時,服務(wù)器進(jìn)程會將SQL語句的正文放入共享池(sharedpool)的庫高速緩存(librarycache)中并將完成以下處理:首先在共享池中搜索是否有相同的SQL語句(正文),如果沒有就進(jìn)行后續(xù)的處理。檢查該SQL語句的語法是否正確。通過查看數(shù)據(jù)字典來檢查表和列的定義。對所操作的對象加編譯鎖以便在編譯語句期間這些對象的定義不能被改變。檢查所引用對象的用戶權(quán)限。生成該SQL語句所需的優(yōu)化的執(zhí)行計劃(執(zhí)行步驟)。將SQL語句和執(zhí)行計劃裝入共享的SQL區(qū)。Oracle執(zhí)行SQL查詢語句的步驟執(zhí)行:Oracle服務(wù)器進(jìn)程開始執(zhí)行SQL語句是因為它已獲得了執(zhí)行SQL語句所需的全部資源和信息。提取數(shù)據(jù):Oracle服務(wù)器進(jìn)程選擇所需的數(shù)據(jù)行,并在需要時將其排序,最后將結(jié)果返回給用戶(進(jìn)程)。共享池

用于存儲:

最近執(zhí)行的

SQL語句

最近使用的數(shù)據(jù)定義它包括以下兩個與性能相關(guān)的關(guān)鍵內(nèi)存結(jié)構(gòu):庫高速緩存數(shù)據(jù)字典高速緩存其大小由

SHARED_POOL_SIZE

參數(shù)確定共享池數(shù)據(jù)字典高速緩存庫高速緩存ALTERSYSTEMSETSHARED_POOL_SIZE=64M;庫高速緩存

存儲有關(guān)最近使用的

SQL和

PL/SQL語句的信息

啟用常用語句共享由

“最近最少使用算法”

(LRU)管理

包括以下兩個結(jié)構(gòu):共享的

SQL區(qū)共享的

PL/SQL區(qū)大小由共享池的大小確定

數(shù)據(jù)字典高速緩存

數(shù)據(jù)庫中最近使用的定義的集合

包括與數(shù)據(jù)庫文件、表、索引、列、用戶、權(quán)限和其它數(shù)據(jù)庫對象相關(guān)的信息

在語法分析階段,服務(wù)器進(jìn)程會在數(shù)據(jù)字典中查找用于解析對象名和驗證訪問的信息

將數(shù)據(jù)字典信息高速緩存到內(nèi)存中,可縮短查詢和

DML

的響應(yīng)時間

大小由共享池的大小決定

數(shù)據(jù)庫緩沖區(qū)高速緩存

存儲已從數(shù)據(jù)文件中檢索到的數(shù)據(jù)塊的副本

能夠大幅提高獲取和更新數(shù)據(jù)時的性能

通過

LRU算法管理

主塊的大小由

DB_BLOCK_SIZE

確定

數(shù)據(jù)庫緩沖區(qū)

高速緩存

數(shù)據(jù)庫緩沖區(qū)高速緩存由獨(dú)立的子高速緩存組成:

DB_CACHE_SIZEDB_KEEP_CACHE_SIZEDB_RECYCLE_CACHE_SIZE大小可以進(jìn)行動態(tài)調(diào)整

設(shè)置

DB_CACHE_ADVICE

可收集用于預(yù)測不同

高速緩存大小行為的統(tǒng)計信息

統(tǒng)計信息由

V$DB_CACHE_ADVICE

顯示

ALTERSYSTEMSETDB_CACHE_SIZE=96M;重做日志緩沖區(qū)

記錄對數(shù)據(jù)庫數(shù)據(jù)塊所做的全部更改

主要用于恢復(fù)

其中記錄的更改稱作重做條目

重做條目包含用于重新構(gòu)造或重做更改的信息

大小由

LOG_BUFFER

定義

重做日志

緩沖區(qū)

Oracle執(zhí)行update語句的步驟如果數(shù)據(jù)和回滾數(shù)據(jù)不在數(shù)據(jù)庫高速緩沖區(qū)中,Oracle服務(wù)器進(jìn)程將把它們從數(shù)據(jù)文件中讀到數(shù)據(jù)庫高速緩沖區(qū)中。Oracle服務(wù)器進(jìn)程在要修改的數(shù)據(jù)行上加鎖(行一級的鎖)Oracle服務(wù)器進(jìn)程將數(shù)據(jù)的變化信息和回滾所需的信息都記錄在重做日志緩沖區(qū)中。Oracle服務(wù)器進(jìn)程將回滾所需的原始值和對數(shù)據(jù)所做的修改都寫入數(shù)據(jù)庫高速緩沖區(qū)。之后再數(shù)據(jù)庫高速緩沖區(qū)中所有的這些數(shù)據(jù)塊都將被標(biāo)為臟緩沖區(qū),因為此時內(nèi)外存的數(shù)據(jù)是不相同的(不一致的)。Oracle處理insert和delete語句的步驟與處理update語句大體相同。大型共享池

SGA中的可選內(nèi)存區(qū)

分擔(dān)了共享池的一部分工作

用于:

共享服務(wù)器的會話內(nèi)存

(UGA)I/O服務(wù)器進(jìn)程

備份和恢復(fù)操作或

RMAN并行執(zhí)行消息緩沖區(qū)

PARALLEL_AUTOMATIC_TUNING

設(shè)置為

TRUE不使用

LRU列表

大小由

LARGE_POOL_SIZE

確定

Java池

存儲

Java命令的服務(wù)分析要求

在安裝并使用

Java時是必需的

大小由

JAVA_POOL_SIZE

參數(shù)確定

程序全局區(qū)

為連接到

Oracle數(shù)據(jù)庫的每個用戶進(jìn)程保留的內(nèi)存

在創(chuàng)建進(jìn)程時分配在終止進(jìn)程時回收僅供一個進(jìn)程使用服務(wù)器進(jìn)程

PGA用戶進(jìn)程

進(jìn)程結(jié)構(gòu)

Oracle利用了以下幾種進(jìn)程的優(yōu)勢:

用戶進(jìn)程:在數(shù)據(jù)庫用戶請求連接到

Oracle服務(wù)器時

啟動服務(wù)器進(jìn)程:與

Oracle例程相連接,在用戶建立會話

時啟動后臺進(jìn)程:在

Oracle例程啟動時啟動

用戶進(jìn)程

請求與

Oracle服務(wù)器交互的程序必須先建立連接不與

Oracle服務(wù)器直接交互

數(shù)據(jù)庫用戶服務(wù)器進(jìn)程

用戶進(jìn)程建立的連接服務(wù)器進(jìn)程直接與

Oracle服務(wù)器交互的程序執(zhí)行生成的調(diào)用并返回相關(guān)結(jié)果可以是專用服務(wù)器或共享服務(wù)器

建立的連接

創(chuàng)建的會話數(shù)據(jù)庫用戶用戶進(jìn)程服務(wù)器進(jìn)程Oracle服務(wù)器

后臺進(jìn)程維護(hù)并加強(qiáng)物理結(jié)構(gòu)與內(nèi)存結(jié)構(gòu)之間的關(guān)系

必備的后臺進(jìn)程:

DBWR PMON CKPTLGWR SMON 可選的后臺進(jìn)程:

ARCn LMDn RECOCJQ0 LMON SnnnDnnn PnnnLCKn QMNn數(shù)據(jù)庫寫入程序

(DBWn)在以下情況下寫入:出現(xiàn)檢查點灰數(shù)據(jù)緩沖區(qū)達(dá)到閾值沒有空閑緩沖區(qū)出現(xiàn)超時執(zhí)行了

RACping請求表空間處于

OFFLINE

狀態(tài)表空間處于

READONLY

狀態(tài)對表執(zhí)行

DROP

TRUNCATE

操作對表空間執(zhí)行

BEGINBACKUP

操作例程

SGA控制

文件數(shù)據(jù)

文件重做

日志

文件數(shù)據(jù)庫DBWn數(shù)據(jù)庫

緩沖區(qū)

高速緩存日志寫入器

(LGWR)LGWR在以下情況下寫入:提交時三分之一填滿時有1MB的重做時每隔三秒DBWn寫入前例程SGA控制

文件數(shù)據(jù)

文件

重做

日志

文件數(shù)據(jù)庫重做日志

緩沖區(qū)

DBWnLGWROracle快速提交技術(shù)當(dāng)在SQL*Plus中發(fā)了commit語句之后,Oracle的內(nèi)部操作步驟如下:服務(wù)器進(jìn)程將把提交的記錄連同所產(chǎn)生的SCN(systemchangenumber)一起寫入重做日志緩沖區(qū)中。重做日志寫進(jìn)程(LGWR)將把重做日志緩沖區(qū)中一直到所提交的記錄(包括該記錄)的所有記錄連續(xù)地寫到重做日志文件中。Oracle通知用戶(進(jìn)程)提交已經(jīng)完成。服務(wù)器進(jìn)程將修改數(shù)據(jù)庫高速緩沖區(qū)中的相關(guān)數(shù)據(jù)的狀態(tài)并釋放資源和打開鎖等。系統(tǒng)監(jiān)控程序

(SMON)職責(zé):例程恢復(fù)前滾重做日志中的更改打開數(shù)據(jù)庫供用戶訪問回退未提交的事務(wù)處理合并空閑空間回收臨時段控制

文件數(shù)據(jù)

文件

重做

日志

文件數(shù)據(jù)庫例程

SGASMON過程監(jiān)視器

(PMON)進(jìn)程失敗后,通過以下方法進(jìn)行清理:

回退事務(wù)處理釋放鎖釋放其它資源重新啟動已失效的調(diào)度

程序

PGA區(qū)

例程SGAPMON檢查點

(CKPT)職責(zé)包括:在檢查點發(fā)信號給

DBWn使用檢查點信息更新數(shù)據(jù)文件的標(biāo)頭使用檢查點信息更新控制文件控制

文件數(shù)據(jù)

文件重做

日志

文件數(shù)據(jù)庫例程SGADBWnLGWRCKPT歸檔程序

(ARCn)可選的后臺進(jìn)程設(shè)置

ARCHIVELOG

模式時自動歸檔聯(lián)機(jī)重做日志保留數(shù)據(jù)庫的全部更改記錄

ARCn歸檔的

重做日

志文件控制

文件數(shù)據(jù)

文件重做

日志

文件邏輯結(jié)構(gòu)指示數(shù)據(jù)庫物理空間的使用情況層次結(jié)構(gòu)由表空間、段、區(qū)和塊組成

表空間數(shù)據(jù)文件段塊區(qū)段處理

SQL語句

通過以下進(jìn)程連接到一個例程:

用戶進(jìn)程服務(wù)器進(jìn)程所用的

Oracle服務(wù)器組件取決于

SQL語句的類型:

查詢語句返回行DML語句記錄更改提交操作確

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論