DBA-I 第一章 ORACLE體系結(jié)構(gòu)(二).doc_第1頁
DBA-I 第一章 ORACLE體系結(jié)構(gòu)(二).doc_第2頁
DBA-I 第一章 ORACLE體系結(jié)構(gòu)(二).doc_第3頁
DBA-I 第一章 ORACLE體系結(jié)構(gòu)(二).doc_第4頁
DBA-I 第一章 ORACLE體系結(jié)構(gòu)(二).doc_第5頁
已閱讀5頁,還剩14頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

ORACLE體系結(jié)構(gòu)(二)我們前面學(xué)習(xí)了ORACLE如何實現(xiàn)客戶的請求并連接到實例??蛻舳苏埱笸ㄟ^LISTENER審核,LISTENER會指示ORACLE分配一個服務(wù)器進程,并在客戶端進程和服務(wù)器進程間建立了連接會話。我們稱專有連接會話,ORACLE實例提供的是專有服務(wù)。就是所謂的dedicate模式。默認(rèn)情況下就是dedicate模式。ORACLE除了提供專有連接會話,還提供了共享連接會話,ORACLE實例也提供了共享服務(wù)。我們接下來學(xué)習(xí)ORACLE提供的共享式服務(wù)器是怎么樣實現(xiàn)的,有什么優(yōu)勢。共享服務(wù)器大家可能是第一次接觸,有點不太好理解,這個不著急,現(xiàn)階段只要初步了解下可以了。我舉個例子:你們誰安裝的的oracle是在linux環(huán)境下的?你建立一個sqlplus會話,看看是不是多出一個oracle的OS進程oracle1178711760014:53pts/000:00:00rlwrapsqlplusfuture/futurefang我們看到,專有模式下。新建一個會話,就多出了一個進程。但是共享模式和這個不一樣,你開很多個會話在服務(wù)器上表現(xiàn)為1個進程。就是1個進程多個會話一起用,就是共享服務(wù)器的特點。那我再問下大家,共享模式下,新開一個會話,進程一定不會增加嗎?不一定的,有可能還是會增加。比如我們假設(shè)一個共享服務(wù)器管理10個會話,現(xiàn)在已經(jīng)有10個了,再連一個就是11個,哪么還是會增加一個進程的。共享服務(wù)器模式的主要優(yōu)勢就是節(jié)約內(nèi)存。好,有了上面的經(jīng)驗,我們來看看共享模式的特點。先看下書店的書柜陳列圖我們前面講的都是專有服務(wù)模式的連接。我們再來看共享服務(wù)器模式下,靜安圖書分店是如何服務(wù)的。當(dāng)小麗發(fā)出一個請求,要批發(fā)1000本中國機械出版社2009年后出版的經(jīng)濟類書,并通過輪船運到寧波自己的公司,并按日期進行排序捆綁存放存入小麗公司的倉庫。如果采用共享服務(wù)模式,那涉及下面幾個動作:店里為小麗(用戶進程1)分配了售貨員小英(服務(wù)器進程1)為她服務(wù)小英幫小麗取了這1000本中國機械出版社2009年后出版的經(jīng)濟類書小英并按出版日期排完序,并進行包裝。并反饋給小麗檢查是否按自己規(guī)定的順序包裝。小英將包裝后的書放到司機小思(服務(wù)器進程2)貨車?yán)?,這樣司機小思來服務(wù)小麗,幫這批貨運道碼頭。司機小思將貨開往碼頭這時售貨員小英可以為小勇(用戶進程2)去賣書。也就是一個售貨員小英跟小勇建立了會話,并進行服務(wù)。小英可以服務(wù)多個不同會話的任務(wù)(一、小麗批發(fā)經(jīng)濟類書。二、小勇買書),而不需要小英一直為小麗服務(wù),所以也不需要等待小麗在請小英下一個動作前無所事事。這時小英既知道小麗的情況,也知道小勇的情況。對應(yīng)于ORACLE就是一個服務(wù)器進程可以有多個會話(SESSION),多個會話信息需要讓一個服務(wù)器共享,所以叫共享服務(wù)器進程。司機小思幫忙把貨搬到船上,他的任務(wù)結(jié)束,開車回書店。船長小川(服務(wù)器進程3)將貨運到寧波。司機小寧(服務(wù)器進程4)將貨運到小麗寧波的公司。小麗這次的批發(fā)任務(wù)共有四個人幫它完成(為了簡化,這里省略了ORACLE調(diào)度器參與的角色),這些人都是受靜安書店的委托服務(wù)于小麗。而每個服務(wù)器進程都會在執(zhí)行完任務(wù)后反饋給客戶會話信息上圖對應(yīng)于ORACLE就是一個會話可以由多個服務(wù)器進程來完成。而在專有服務(wù)模式下,那小英要一直為小麗服務(wù),一直到把貨運到小麗公司為止,它們建立的會話就結(jié)束了,而且進程也隨之消亡。在這期間小英要既當(dāng)營業(yè)員、司機、船長,而且這期間小麗要有事情要處理,比如去銀行轉(zhuǎn)帳,那么小英只有等待小麗回來才能繼續(xù)工作,而不能去服務(wù)其他顧客,這很顯然大量浪費了小英的效率。在ORACLE模式下,專有模式會話進程和服務(wù)器進程一一對應(yīng),服務(wù)器進程要服務(wù)到結(jié)束,最后一起消亡。 而在共享服務(wù)模式下,那小英在賣完書后,即使小麗這個時候去收銀臺交費,小英也不需要等待她,馬上可以去處理新的客戶小勇,這樣售貨員的效率就提高了。即使小麗又要重新需要小英處理問題,如小麗拿了收銀憑據(jù),小英就要停下小勇的服務(wù),把小麗的書給她,并輸入電腦,再回頭處理小勇的工作。在ORACLE模式下,共享模式,用戶進程不需要服務(wù)器進程處理的的時候,服務(wù)器進程可以服務(wù)別的用戶進程,當(dāng)原來的用戶進程繼續(xù)請求這個服務(wù)器進程時,可以打斷后一個用戶進程,繼續(xù)處理前一個用戶進程的工作。這里小麗再次找小英時,她們已經(jīng)彼此認(rèn)識,已經(jīng)是朋友了,不需要再重新打交道,重新建立信任關(guān)系,節(jié)約了之間溝通的成本。那小英知道了小麗的姓名,任務(wù)起始時間,結(jié)束時間,當(dāng)前的狀態(tài),任務(wù)的目的等。也同樣知道了小勇相應(yīng)的信息。這些是會話信息,會話信息對于所有的進程可以共享的。開始備課上節(jié)課 我們開始DBA-I的第一節(jié)課給大家整體介紹了下Oracle 服務(wù)器的體系結(jié)構(gòu)及其主要組件,我們簡單回顧下。第一個問題:ORACLE SERVER由什么組成?ORACLE服務(wù)由一個實例和一個數(shù)據(jù)庫組成。ORACLE SERVER的概念是,一個ORACLE SERVER就是一個DATABASE 庫文件加上一個INSTANCE,按我們圖書館的例子就是上海圖書館的靜安書城店提供的就是一個ORACLE SERVER。第二個問題:ORACLE實例(INSTANCE)由什么組成?主內(nèi)存結(jié)構(gòu)(SGA)+后臺進程那RAC的概念是什么?RAC的概念就是多個實例關(guān)聯(lián)一個數(shù)據(jù)庫。ORACLE SERVER = 1個DB + 1個INSTANCEINSTANCE = MEMORY + PROCESSRAC = N個ORACLE SERVER = 1個DB + N個INSTANCE第三個問題:分別簡述下SGA,PGA,UGA是什么?第四個問題:我們知道ORACLE的物理結(jié)構(gòu)指的是OS里直接能查看到的文件。那ORACLE DB有哪幾種物理文件? Control files Data files Redo log files第五個問題:簡單說下專有服務(wù)器和共享服務(wù)器的區(qū)別?專有服務(wù)器一個服務(wù)器進程專門服務(wù)一個用戶進程,即使用戶進程空閑,服務(wù)器進程還是繼續(xù)等待隨時為該會話服務(wù),不能去干其他事情。專有模式會話進程和服務(wù)器進程一一對應(yīng),服務(wù)器進程要服務(wù)到結(jié)束,最后一起消亡。共享服務(wù)器一個服務(wù)器進程可以服務(wù)多個用戶進程,一個用戶進程也可以被多個服務(wù)器進程服務(wù)。共享模式,用戶進程不需要服務(wù)器進程處理的的時候,服務(wù)器進程可以服務(wù)別的用戶進程,當(dāng)原來的用戶進程繼續(xù)請求這個服務(wù)器進程時,可以打斷后一個用戶進程,繼續(xù)處理前一個用戶進程的工作。大家結(jié)合我們圖書館 小麗買書,售貨員小麗,司機小思,船長小川,司機小寧為小麗服務(wù)的例子 再理解下。我們上節(jié)課講到,在共享服務(wù)模式下,那小英在賣完書后,即使小麗這個時候去收銀臺交費,小英也不需要等待她,馬上可以去處理新的客戶小勇,這樣售貨員的效率就提高了。即使小麗又要重新需要小英處理問題,如小麗拿了收銀憑據(jù),小英就要停下小勇的服務(wù),把小麗的書給她,并輸入電腦,再回頭處理小勇的工作。這是小麗再次找小英時,她們已經(jīng)彼此認(rèn)識,已經(jīng)是朋友了,不需要再重新打交道,重新建立信任關(guān)系,節(jié)約了之間溝通的成本。那小英知道了小麗的姓名,任務(wù)起始時間,結(jié)束時間,當(dāng)前的狀態(tài),任務(wù)的目的等。也同樣知道了小勇相應(yīng)的信息。這些是會話信息,會話信息對于所有的進程可以共享的。所以這里涉及進程中共享的信息如下:會話信息:這次任務(wù)起始時間,結(jié)束時間,當(dāng)前的狀態(tài),排序的反饋信息、任務(wù)的目的等。CURSOR信息: CURSOR是什么?還有如小麗批發(fā)這1000本書的方法等在也是可以讓另一個售貨員共享的,什么意思呢?就有點類似 管理中的專人負(fù)責(zé)的特點,你只負(fù)責(zé)某一件事情,整體類似于流水線的概念。這在ORACLE中通過SQL語句實現(xiàn),并將執(zhí)行計劃記錄下來,我們稱共享SQL 區(qū),放在共享池中。但是對于每發(fā)送一個語句,在專有模式,相對于服務(wù)器進程是私有的,所以我們稱私有SQL區(qū),輸入進程內(nèi)存。但是對于共享服務(wù)模式,一個會話的信息可以讓所有的進程共享,那么屬于會話生命周期里,這個私有SQL區(qū)可以是共享的,也可以是執(zhí)行完后隱式關(guān)閉。我們后面會學(xué)到SESSION CACHE CURSOR。私有SQL區(qū)或者稱CURSOR,一個SQL就會對應(yīng)一個CURSOR,在CURSOR關(guān)閉時釋放。CURSOR(私有SQL 區(qū))這里有兩個部分搜索1000本書方法(執(zhí)行計劃)有些稱為固定部分,如小麗的姓名(綁定變量),這些信息在整個會話中可以不馬上釋放你既可以指定我不想要這些信息(一些程序的顯式關(guān)閉游標(biāo)),如procdure 中close cursor也可以讓它自動去除這些信息(默認(rèn)的SQL語句執(zhí)行完就關(guān)閉游標(biāo)),如select * from tab;當(dāng)前取書已經(jīng)到第999本了。這些是運行時狀態(tài)的信息,等SQL語句執(zhí)行完就釋放掉了。注意,每個會話會限制CURSOR數(shù)(任務(wù)數(shù)),如小麗剛才的會話總共有四個服務(wù)器進程服務(wù)的四個任務(wù)。如果每次執(zhí)行完一個CURSOR(任務(wù))后不馬上釋放這些CUROSR(任務(wù))信息,那么超過open_cursors數(shù)后會拋出open cursor數(shù)超出錯誤,否則會占過多的資源。比如靜安店最多服務(wù)一個客戶的子任務(wù)(CURSOR)數(shù)是3,比如賣書、司機運貨到碼頭、書通過船運到寧波,而且每個任務(wù)做完后登記的信息沒有清除,那么小寧要完成第四次子任務(wù)時候就不允許。這是因為怕一個大任務(wù)中小任務(wù)的信息太多造成大量內(nèi)存使用。(特別是程序的循環(huán)操作,循環(huán)open cursor一個SQL一千次,不執(zhí)行close就會發(fā)生上述問題)所以對于應(yīng)用程序代碼,要仔細(xì)考慮CURSOR的釋放機制。而上面的這些CURSOR信息在共享服務(wù)模式是共享的,屬于 UGA,并存放在SGA中,在有大池的情況下存放在大池。還有一部分內(nèi)存是完全私有的,比如有些局部變量作為程序的??臻g,還有些私有工作空間,如排序區(qū),HASH JOIN區(qū),位圖合并區(qū)等,它們是在執(zhí)行的時候調(diào)用全局區(qū)的,我們稱為CGA(Call Global Area) 調(diào)用全局區(qū),執(zhí)行完就釋放。為了減少資源使用,CGA執(zhí)行完就釋放,是運行時狀態(tài),別的進程是無法看到的,還有象??臻g調(diào)用完就釋放的都是私有信息。但是執(zhí)行結(jié)束后如果需要反饋給用戶會話的數(shù)據(jù),如SELECT的FETCH,則需要保留區(qū)的數(shù)據(jù)提供用戶反饋信息,這些信息保存在哪里? 是不是CGA?注意CGA屬于PGA。如我們排序區(qū)可以設(shè)置保留空間,這樣這些SQL執(zhí)行完排序完后,不馬上釋放給操作系統(tǒng),而是釋放給UGA,最后FETCH反饋給SELECT的用戶。CGA屬于PGA與其他的全局區(qū)不同,CGA(CallGlobalArea調(diào)用全局區(qū))的存在是瞬間的。它只存在于一個調(diào)用過程中。 而UGA可能屬于PGA或者SGAPGA是一段包含一個Oracle服務(wù)或后臺進程的數(shù)據(jù)和控制信息的內(nèi)存。PGA的大小依賴與系統(tǒng)的配置。在專用服務(wù)(DedicatedServer)模式下,一個服務(wù)進程與一個用戶進程相關(guān),PGA就包括了堆空間和UGA。而UGA(UserGlobalArea用戶全局區(qū))由用戶會話數(shù)據(jù)、游標(biāo)狀態(tài)和索引區(qū)組成。在共享服務(wù)(MTS)模式下,一個共享服務(wù)進程被多個用戶進程共享,此時UGA是SharedPool或LargePool的一部分(依賴與配置)。此時UGA屬于SGAUGA根據(jù)連接模式的區(qū)別而有所區(qū)別大家設(shè)想一下,一個CGA的返回要怎么返回給用戶?放在UGA里。我們排序區(qū)可以設(shè)置保留空間,這樣這些SQL執(zhí)行完排序完后,不馬上釋放給操作系統(tǒng),而是釋放給UGA,最后FETCH反饋給SELECT的用戶。而共享服務(wù)模式UGA是共享內(nèi)存,所以保留區(qū)排序在沒有FETCH前可以使用,但是FETCH后仍然不會保留這段內(nèi)存,它還是會被釋放的。我們將在第1章的后面幾節(jié)詳細(xì)講。這些私有部分,就象售貨員的私密信息,都會涉及到實際的數(shù)據(jù),如HASH 表,所以其它售貨員永遠(yuǎn)不會知道。否則就象中介公司的業(yè)務(wù)員互相之間知道了客戶的詳細(xì)信息,還可能存在互相撬客戶的情況。但是小麗的情況,售貨員小英(服務(wù)器進程1)和司機小勇、小寧(服務(wù)器進程2,4)和船長小川(服務(wù)器進程3)都知道。所以小麗的信息是共享的,所以在共享服務(wù)模式,UGA是在SGA里。共享服務(wù)模式,也就是進程與會話之間是n:m的關(guān)系。在共享模式下,一個進程可以服務(wù)多個會話,一個會話可以由多個進程服務(wù)。好比一輛的士可以服務(wù)多個人,而一個人也可以坐多輛的士。在共享下uga不是pga的子堆,是SGA的子堆,但是uga不會并發(fā),因為單個會話不可能在同時有多個活動進程服務(wù)它。uga始終屬于會話的,一個會話永遠(yuǎn)是順序執(zhí)行的,所以不會沖突。所以雖然共享但不會有l(wèi)atch的沖突。我們小麗的生命周期是把這貨運到碼頭,然后運到寧波,這個會話才結(jié)束,而這期間有售貨員進程,司機進程和船長進程可以為其它用戶服務(wù)。關(guān)于共享服務(wù)模式,我們會在體系架構(gòu)(三)用的士的例子來詳細(xì)舉例,另外DBA II的第五章將介紹共享服務(wù)器的配置。SGA的構(gòu)成我們已經(jīng)了解了什么是SGA,什么是PGA,那我們分別來詳細(xì)展開這兩大組件,來了解這些組件各自的作用,和它的構(gòu)成。首先我們來學(xué)習(xí)SGA,一個實例只有一個SGA。我們看到,SGA是由多個功能不同的共享內(nèi)存組件構(gòu)成。前面四個子組件是SGA必備組件,在10G,11G會多出流池等。我們這里只說個SGA大概的組成,每個小的組件在之后會詳細(xì)分析。第一個組件:共享池,用來存放SQL解析樹和字典對象定義的共享區(qū)域。第二個組件,數(shù)據(jù)庫高速緩存區(qū),用來存放業(yè)務(wù)數(shù)據(jù)的共享內(nèi)存區(qū)域。第三個組件,REDO日志緩存區(qū),用來記錄數(shù)據(jù)庫的每個改動向量,其中包括系統(tǒng)的改動和UNDO的改動(UNDO其實也是一次REDO)。第四個組件,其它共享資源,如LOCK,ENQUEUE,LATCH,統(tǒng)計數(shù)據(jù)。除了前3個組件是資源外,鎖也是資源前3個組件的共享資源并發(fā)沖突可以用LATCH來管理,那LATCH本身也是種資源,還需要專門管理LATCH的LATCH來管理。另外,在9I還有其它2組可選的組件,分別是大池和JAVA池,他們都跟共享池的功能類似,是它的替代品,用來實現(xiàn)某些特殊的請求。比如大池是用于存放對那些復(fù)雜的程序包分析、RMAN、UGA、異步IO等相關(guān)的數(shù)據(jù),而JAVA池是用來存放JAVA存儲過程的分析信息。那我們要搭建一個實例該如何規(guī)劃這個實例的內(nèi)存呢?就象我們要開一家靜安書店,我們需要指定一個開業(yè)籌備的方案,設(shè)置好各職能部門及所需要的門面。這個籌備方案就是我們以后講到的初始化參數(shù)。實例啟動必須先劃分內(nèi)存,店要開業(yè)就必須要買下門面,那我們數(shù)據(jù)庫該如何設(shè)置內(nèi)存大小呢?特別是SGA。SGA的設(shè)置在9I,ORACLE需要你先劃分一個SGA的最大大小限額SGA_MAX_SIZE,用于劃出最大多少的內(nèi)存給ORACLE共享內(nèi)存使用。該參數(shù)只能通過文本參數(shù)修改或SPFILE的設(shè)置,并在重起后生效。10g實現(xiàn)SGA的自動管理,并設(shè)置了sga_target。我們稱自動內(nèi)存管理為ASMM,在11G,可以把PGA和SGA作為一個整體進行自動管理。SGA也會使用到虛擬內(nèi)存,在有些平臺甚至可以固定在物理內(nèi)存內(nèi)。我們知道一個進程使用的物理內(nèi)存,會需要相應(yīng)大小的虛擬內(nèi)存,所以要設(shè)置合理的虛擬內(nèi)存大小,以支持系統(tǒng)正常運轉(zhuǎn)。通常情況:如果4G的物理內(nèi)存,配置4G或者8G虛擬內(nèi)存就可以。內(nèi)存分配需要按照顆粒大小來分配。比如顆粒是16M,原來總內(nèi)存是32M,你把32M改為40M,那實際上會變成32M+16M=48M。所以必須按照步長進行分配內(nèi)存。如果SGA小于128M,那么步長是4M,否則是16M我們可以用下面的字典來查當(dāng)前系統(tǒng)的步長V$SGA_DYNAMIC_COMPONENTS我們了解了SGA的分配和SGA主要的幾大組件,我們就需要深入了解幾大組件的作用及它們間是如何配合的。先看看SGA的幾大組件共享池數(shù)據(jù)緩沖區(qū)PGA&UGA處理內(nèi)存的機制我們還是用前面圖書館的例子來全面了解ORACLE處理這些內(nèi)存的機制。我們來舉個例子,靜安書店剛開業(yè),小麗要買某一本書“CBO基礎(chǔ)”,而且必須是最新上架的書。因為小麗希望買到的是最新的“CBO基礎(chǔ)”,否則估計已經(jīng)被很多人翻舊了。有一個剛進靜安書店的A售貨員接到了小麗的服務(wù),她們建立了買賣的會話關(guān)系。而且由于書店剛開業(yè),A售貨員第一次上班,從來不知道該如何去找這本書,A售貨員腦子里不記得該如何去找這個書,那A售貨員只能通過有限的知識去獲取最快的方法找到這本書。她可以有幾種選擇:從書架的第1本書開始,按書架的編號順序找,直到找到第1本“CBO基礎(chǔ)”,然后再繼續(xù)找第2本“CBO基礎(chǔ)”,然后按時間排序,直找到書架最后一本書。從店里的前臺電腦里有一本書的檢索目錄,是按書名拼音排序的,用它來快速定位這本書,由于檢索目錄是按書名排序的,選取出來的書還要按日期排序,然后選出最新的一本“CBO基礎(chǔ)”。但是決定哪種選擇來獲取“CBO基礎(chǔ)”,這個工作不是由A售貨員來做,A售貨員首先會把這個請求交給店里的一個檢索員,讓他決定這本書小麗有沒有權(quán)限買讓檢索員評估哪種方法能更快的拿到“CBO基礎(chǔ)”這就類似于SQL的語意分析、語法分析、CBO分析。檢索員負(fù)責(zé)管理檢索室,檢索室是我們關(guān)注的焦點。當(dāng)確定了檢索方法后,這時檢索員會把小麗提出的請求和檢索的方法做上記錄(電腦檢索目錄),并存放在檢索室的柜架上。檢索員柜架為按一定的方式來放,盡量讓剛檢索的或者頻繁檢索的請求和方法放在最外面,便于以后當(dāng)檢索室滿了后不容易被檢索員作為侯選T出去。這時檢索員告訴A售貨員,說你還是在電腦里用檢索目錄搜索快,這時A售貨員會把書名,檢索的方法的地址等記下來作為小麗這次請求的會話信息。然后A售貨員開始執(zhí)行,并記錄執(zhí)行的狀態(tài)信息,比如取到第幾本書了,這就是運行時的CURSOR信息到這個會話。執(zhí)行完后,A售貨員把最新的一本“CBO基礎(chǔ)”書給小麗。這時小麗可以決定結(jié)束這次會話的所有請求,也可以不結(jié)束,而去處理別的事情。好,這是我們第1段故事,從這段故事里我們能跟ORACLE關(guān)聯(lián)上哪些知識點呢? 我們前面提到的買某一本書“CBO基礎(chǔ)”就是提交了一個SQL語句 檢索員是CBO 電腦檢索目錄是索引 檢索員存放檢索方式信息按最近最多執(zhí)行順序排列,對應(yīng)就是LRU A售貨員服務(wù)器進程 小麗是用戶進程 檢索室是LIBRARY CACHE,是shared_pool_size的一部分,一些語句解析信息 小麗有沒有權(quán)限買等的信息是語意分析時存放在ROW CACHE里 小麗會話信息里有要買的書名(綁定信息),檢索的方法的地址,檢索到第幾本書等信息。這是私有CURSOR。 檢索室的搜索方法,書名等信息是LIBRARY CACHE里的子cursor,就是共享cursor。我們用ORACLE的概念關(guān)聯(lián)到圖書館,我們就可以接著第2、3段故事了解內(nèi)存是如何運作的。第2段故事這時如果小王要買一本“經(jīng)濟學(xué)概論”,也需要最新上架的新書。如果小王被指派給新來的B售貨員,那B售貨員去找檢索員查找檢索室里有沒有該檢索的方法。前面小麗使用過的檢索方法正好可以被使用,即使她們買的書名不同,但是書名被綁定了,也就是小王要買一本“書”,而沒有用特定的書名提交給檢索員。這就是綁定成一個通用的變量名,在ORACLE中是用一個變量代替。這樣,檢索員完全可以決定用小麗的檢索方法給小王共享,因為他們的目的看上去完全一樣。(但是這時未必能真的用到小麗的方法,如可能搜索員發(fā)現(xiàn)小王的權(quán)限跟小麗不一樣,書店連賣都不會賣給他)。這時如果可以用小麗的檢索方法,B售貨員為小王生成會話信息,記錄書名“經(jīng)濟學(xué)概論”,檢索方法的地址等。這里是UGA。然后一樣開始執(zhí)行,我們發(fā)現(xiàn)要找到最新的書,是需要基于時間,而時間字段沒有索引,所以必須排序,這排序是私有的區(qū)域部分,屬于PGA,部分屬于UGA。我們把排序放到一個臨時的房間,我們稱排序庫。比如排序需要100本書,如果排序的結(jié)果不需要反饋,那么排序完就從排序庫釋放了。但如果排序的結(jié)果要反饋給用戶,如想顯示排在最早出版的20本書是哪幾本,則需要在排序庫排完后需要保留到另一個房間,我們稱為保留排序庫,來實現(xiàn)用戶的FETCH。我們也可以在每完成20本排序后,先把排序庫里這20本移到保留排序庫,反饋這20本給小王看,反饋完后從保留排序庫清除。然后再從排序庫選擇下20本書排序從排序庫取出,存入排序保留庫,反饋給小王查看排序結(jié)果,一直這樣循環(huán),直到最后排序完100本書,小王有看了這100本書的順序后,排序庫和保留排序庫數(shù)據(jù)都被清除。這個排序庫就是SORT_AREA _SIZE,它是屬于PGA,而保留排序區(qū)屬于反饋給用戶會話的(小王),它就是SORT_AREA_RETAINED_SIZE,屬于UGA部分。這里我們發(fā)

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論