Oracle的內(nèi)存結(jié)構(gòu)與進程結(jié)構(gòu)_第1頁
Oracle的內(nèi)存結(jié)構(gòu)與進程結(jié)構(gòu)_第2頁
Oracle的內(nèi)存結(jié)構(gòu)與進程結(jié)構(gòu)_第3頁
Oracle的內(nèi)存結(jié)構(gòu)與進程結(jié)構(gòu)_第4頁
Oracle的內(nèi)存結(jié)構(gòu)與進程結(jié)構(gòu)_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、1: HYPERLINK /diannao/List/List_399.html t _blank Oracle實例(Instance) 在一個服務(wù)器中,每一個運行的 HYPERLINK /diannao/List/List_399.html t _blank Oracle數(shù)據(jù)庫都與一個數(shù)據(jù)庫實例相聯(lián)系,實例是我們訪問數(shù)據(jù)庫的手段。實例在操作系統(tǒng)中用ORACLE_SID來標識,在 HYPERLINK /diannao/List/List_399.html t _blank Oracle中用參數(shù)INSTANCE_NAME來標識,它們兩個的值是相同的。數(shù)據(jù)庫啟動時,系統(tǒng)首先在服務(wù)器內(nèi)存中分配系統(tǒng)全

2、局區(qū)(SGA),構(gòu)成了Oracle的內(nèi)存結(jié)構(gòu),然后啟動若干個常駐內(nèi)存的操作系統(tǒng)進程,即組成了 HYPERLINK /diannao/List/List_399.html t _blank Oracle的進程結(jié)構(gòu),內(nèi)存區(qū)域和后臺進程合稱為一個 HYPERLINK /diannao/List/List_399.html t _blank Oracle實例。 數(shù)據(jù)庫與實例之間是1對1/n的關(guān)系,在非并行的數(shù)據(jù)庫系統(tǒng)中每個 HYPERLINK /diannao/List/List_399.html t _blank Oracle數(shù)據(jù)庫與一個實例相對應(yīng);在并行的數(shù)據(jù)庫系統(tǒng)中,一個數(shù)據(jù)庫會對應(yīng)多個實例,同

3、一時刻用戶只與一個實例相聯(lián)系,當某一個實例出現(xiàn)故障時,其他實例自動服務(wù),保證數(shù)據(jù)庫正常運行。在任何情況下,每個實例都只能夠?qū)?yīng)一個數(shù)據(jù)庫。2: HYPERLINK /diannao/List/List_399.html t _blank Oracle 10g動態(tài)內(nèi)存治理內(nèi)存是阻礙數(shù)據(jù)庫性能的重要因素,Oracle8i使用靜態(tài)內(nèi)存治理, HYPERLINK /diannao/List/List_399.html t _blank Oracle 10g使用動態(tài)內(nèi)存治理。所謂靜態(tài)內(nèi)存治理,確實是在數(shù)據(jù)庫系統(tǒng)中,不管是否有用戶連接,也不管并發(fā)用量大小,只要數(shù)據(jù)庫服務(wù)在運行,就會分配固定大小的內(nèi)存;動態(tài)

4、內(nèi)存治理同意在數(shù)據(jù)庫服務(wù)運行時對內(nèi)存的大小進行修改,讀取大數(shù)據(jù)塊時使用大內(nèi)存,小數(shù)據(jù)塊時使用小內(nèi)存,讀取標準內(nèi)存塊時使用標準內(nèi)存設(shè)置。按照系統(tǒng)對內(nèi)存使用方法的不同, HYPERLINK /diannao/List/List_399.html t _blank Oracle數(shù)據(jù)庫的內(nèi)存能夠分為以下幾個部分:系統(tǒng)全局區(qū):SGA(System Global Area)程序全局區(qū):PGA(Programe Global Area)排序池:(Sort Area)大池:(Large Pool)Java池:( HYPERLINK /diannao/List/List_379.html t _blank Ja

5、va Pool)2-1:系統(tǒng)全局區(qū)SGA(System Global Area)SGA是一組為系統(tǒng)分配的共享的內(nèi)存結(jié)構(gòu),能夠包含一個數(shù)據(jù)庫實例的數(shù)據(jù)或操縱信息。假如多個用戶連接到同一個數(shù)據(jù)庫實例,在實例的SGA中,數(shù)據(jù)能夠被多個用戶共享。當數(shù)據(jù)庫實例啟動時,SGA的內(nèi)存被自動分配;當數(shù)據(jù)庫實例關(guān)閉時,SGA內(nèi)存被回收。SGA是占用內(nèi)存最大的一個區(qū)域,同時也是阻礙數(shù)據(jù)庫性能的重要因素。SGA的有關(guān)信息能夠通過下面的語句查詢,sga_max_size的大小是不能夠動態(tài)調(diào)整的。= HYPERLINK /diannao/List/List_396.html t _blank SQL show para

6、meter sgaNAME TYPE VALUE loc您正在看的Oracle是:Oracle的內(nèi)存結(jié)構(gòu)和進程結(jié)構(gòu)。 k_sga boolean FALSEpre_page_sga boolean FALSEsga_max_size big integer 164Msga_target big integer 0 HYPERLINK /diannao/List/List_396.html t _blank SQL alter system set sga_max_size=100m;alter system set sga_max_size=100m *ERROR at line 1:ORA-

7、02095: specified initialization parameter cannot be modif HYPERLINK /diannao/List/List_1164.html t _blank ied= 系統(tǒng)全局區(qū)按作用不同能夠分為:數(shù)據(jù)緩沖區(qū)日志緩沖區(qū)共享池2-1-1:數(shù)據(jù)緩沖區(qū)(Database Buffer Cache)假如每次執(zhí)行一個操作時, HYPERLINK /diannao/List/List_399.html t _blank Oracle都必須從磁盤讀取所有數(shù)據(jù)塊并在改變它之后又必須把每一塊寫入磁盤,顯然效率會特不低。數(shù)據(jù)緩沖區(qū)存放需要經(jīng)常訪問的數(shù)據(jù),供所有

8、用戶使用。修改數(shù)據(jù)時,首先從數(shù)據(jù)文件中取出數(shù)據(jù),存儲在數(shù)據(jù)緩沖區(qū)中,修改/插入數(shù)據(jù)也存儲在緩沖區(qū)中,commit或DBWR(下面有詳細介紹)進程的其他條件引發(fā)時,數(shù)據(jù)被寫入數(shù)據(jù)文件。數(shù)據(jù)緩沖區(qū)的大小是能夠動態(tài)調(diào)整的,然而不能超過sga_max_size的限制。= HYPERLINK /diannao/List/List_396.html t _blank SQL show parameter db_cache_sizeNAME TYPE VALUE db_cache_size big integer 24M HYPERLINK /diannao/List/List_396.html t _bl

9、ank SQL alter system set db_cache_size=128m;alter system set db_cache_size=128m*ERROR at line 1:ORA-02097: parameter cannot be modified because specif HYPERLINK /diannao/List/List_1164.html t _blank ied value is invalidORA-00384: Insuffic HYPERLINK /diannao/List/List_1164.html t _blank 您正在看的Oracle是:

10、Oracle的內(nèi)存結(jié)構(gòu)和進程結(jié)構(gòu)。 ient memory to grow cache HYPERLINK /diannao/List/List_396.html t _blank SQL alter system set db_cache_size=20m;System altered. HYPERLINK /diannao/List/List_396.html t _blank SQL show parameter db_cache_size;NAME TYPE VALUE db_cache_size big integer 20M#此處我僅增加了1M都不行? HYPERLINK /dia

11、nnao/List/List_396.html t _blank SQL alter system set db_cache_size=25m;alter system set db_cache_size=25m*ERROR at line 1:ORA-02097: parameter cannot be modified because specif HYPERLINK /diannao/List/List_1164.html t _blank ied value is invalidORA-00384: Insuffic HYPERLINK /diannao/List/List_1164.

12、html t _blank ient memory to grow cache#修改顯示格式,方便查看。 HYPERLINK /diannao/List/List_396.html t _blank SQL column name format a40 wrap HYPERLINK /diannao/List/List_396.html t _blank SQL column value format a20 wrap#下面語句能夠用來查看內(nèi)存空間分配情況,注意SGA各區(qū)大小總和。 HYPERLINK /diannao/List/List_396.html t _blank SQL selec

13、t name,value from v$parameter where name like %size and value 0;#先將 HYPERLINK /diannao/List/List_379.html t _blank Java_pool_size調(diào)小,然后再修改db_cache_size HYPERLINK /diannao/List/List_396.html t _blank SQL show parameter HYPERLINK /diannao/List/List_379.html t _blank Java_pool_size;NAME TYPE VALUE HYPER

14、LINK /diannao/List/List_379.html t _blank Java_pool_size big integer 48MSQL alter system set HYPERLINK /diannao/List/List_379.html t _blank Java_pool_size=20m;System altered. HYPERLINK /diannao/List/List_396.html t _blank SQL alter system set HYPERLINK /diannao/List/List_379.html t _blank Java_pool_

15、size=30m;System altered.#上面講明SGA中各區(qū)大小總和不能超過sga_max_size。=數(shù)據(jù)緩沖區(qū)的大小對數(shù)據(jù)庫的存區(qū)速度有直接阻礙,多用戶時尤為明顯。有些應(yīng)用對速度要求專門高,一般要求數(shù)據(jù)緩沖區(qū)的命中率在90%以上。下面給出一種計算數(shù)據(jù)緩沖區(qū)命中率的方法:使用數(shù)據(jù)字典v$sysstat= HYPERLINK /diannao/List/List_396.html t _blank SQL select name, value from v$sysstat 2 where name in(session logical reads, 3 physical reads,

16、 4 physical reads direct, 5 physical reads direct (lob)NAME VALUE session logical reads 895243physical reads 14992physical reads direct 34physical reads direct (lob) 0=命中率=1-(14992-34-0)/895243能夠讓 HYPERLINK /diannao/List/List_399.html t _blank Oracle給出數(shù)據(jù)緩沖區(qū)大小的建議:= HYPERLINK /diannao/List/List_396.ht

17、ml t _blank SQL alter system set db_cache_advice=on;#打開該功能System altered. HYPERLINK /diannao/List/List_396.html t _blank SQL alter system set db_cache_advice=off;#關(guān)閉該功能System altered.=2-1-2:日志緩沖區(qū)(Log Buffer Cache)日志緩沖區(qū)用來存儲數(shù)據(jù)庫的修改信息。該區(qū)對數(shù)據(jù)庫性能的阻礙專門小,有關(guān)日志后面還會有詳細的介紹。查詢?nèi)罩揪彌_區(qū)大?。篠QL show parameter log_buffer

18、NAME TYPE VALUE log_buffer integer 262144 2-1-3:共享池(Share Pool)共享池是對SQL,PL/ HYPERLINK /diannao/List/List_396.html t _blank SQL程序進行語法分析,編譯,執(zhí)行的內(nèi)存區(qū)域。它包含三個部分:(都不可單獨定義大小,必須通過share pool間接定義)。庫緩沖區(qū)(Library Cache)包含SQL,PL/ HYPERLINK /diannao/List/List_396.html t _blank SQL語句的分析碼,執(zhí)行打算。數(shù)據(jù)字典緩沖區(qū)(Data Dictionary

19、Cache)表,列定義,權(quán)限。用戶全局區(qū)(Usr Global Area)用戶MTS會話信息。共享池的大小能夠動態(tài)修改:= HYPERLINK /diannao/List/List_396.html t _blank SQL show parameter shared_pool_sizeNAME TYPE VALUE _shared_pool_size big integer 80Mshared_pool_size big integer 80M HYPERLINK /diannao/List/List_396.html t _blank SQL alter system set shared

20、_pool_size=78m System altered.=#上面的_shared_pool_size一行驚奇?2-2:程序全局區(qū)PGA(Programe Global Area)程序全局區(qū)是包含單個用戶或服務(wù)器數(shù)據(jù)和操縱信息的內(nèi)存區(qū)域,它是在用戶進程連接到Oracle并創(chuàng)建一個會話時由 HYPERLINK /diannao/List/List_399.html t _blank Oracle自動分配的,不可共享,要緊用于用戶在編程存儲變量和數(shù)組。 如上圖:Stack Space是用來存儲用戶會話變量和數(shù)組的存儲區(qū)域;User Session Data是為用戶會話使用的附加存儲區(qū)。|-Ses

21、sion Information|-Sort Area|-Cursor Information注意Session information(用戶會話信息)在獨占服務(wù)器中與在共享服務(wù)器中所處的內(nèi)存區(qū)域是不同的。2-3:排序區(qū),大池, HYPERLINK /diannao/List/List_379.html t _blank Java池排序區(qū)(Sort Area)為有排序要求的 HYPERLINK /diannao/List/List_396.html t _blank SQL語句提供內(nèi)存空間。系統(tǒng)使用專用的內(nèi)存區(qū)域進行數(shù)據(jù)排序,這部分空間確實是排序區(qū)。在 HYPERLINK /diannao/L

22、ist/List_399.html t _blank Oracle數(shù)據(jù)庫中,用戶數(shù)據(jù)的排序可使用兩個區(qū)域,一個是內(nèi)存排序區(qū),一個是磁盤臨時段,系統(tǒng)優(yōu)先使用內(nèi)存排序區(qū)進行排序。假如內(nèi)存不夠,Orcle自動使用磁盤臨時表空間進行排序。為提高數(shù)據(jù)排序的速度,建議盡量使用內(nèi)存排序區(qū),而不要使用臨時段。參數(shù)sort_area_size用來設(shè)置排序區(qū)大小。(仿佛不能動態(tài)修改?) 大池(Large Pool)用于數(shù)據(jù)庫備份工具-恢復(fù)治理器(RMAN:Recovery Manager)。Large Pool的大小由large_pool_size確定,可用下面語句查詢和修改:= HYPERLINK /diann

23、ao/List/List_396.html t _blank SQL show parameter large_pool_sizeNAME TYPE VALUE large_pool_size big integer 8M HYPERLINK /diannao/List/List_396.html t _blank SQL alter system set large_pool_size=7m;System altered.=Java池要緊用于Java語言開發(fā),一般來講不低于20M。其大小由 HYPERLINK /diannao/List/List_379.html t _blank Java

24、_pool_size來確定,能夠動態(tài)調(diào)整。2-4: HYPERLINK /diannao/List/List_399.html t _blank Oracle自動共享內(nèi)存治理(Automatic Shared Memory(SGA) Management)在 HYPERLINK /diannao/List/List_399.html t _blank Oracle 8i/9i中數(shù)據(jù)庫治理員必須手動調(diào)整SGA各區(qū)的各個參數(shù)取值,每個區(qū)要依照負荷輕重分不設(shè)置,假如設(shè)置不當,比如當某個區(qū)負荷增大時,沒有調(diào)整該區(qū)內(nèi)存大小,則可能出現(xiàn)ORA-4031:unable to allocate .bytes

25、of shared memory錯誤。在 HYPERLINK /diannao/List/List_399.html t _blank Oracle 10g中,將參數(shù)STATISTICS_LEVEL設(shè)置為TYPICALALL,使用SGA_TARGET指定SGA區(qū)總大小,數(shù)據(jù)庫會依照需要在各個組件之間自動分配內(nèi)存大小。下面是系統(tǒng)自動調(diào)整的區(qū)域:固定SGA區(qū)及其他共享池數(shù)據(jù)緩沖區(qū) HYPERLINK /diannao/List/List_379.html t _blank Java池大池。注意:假如不設(shè)置SGA_TARGET,則自動共享內(nèi)存治理功能被禁止。= HYPERLINK /diannao/

26、List/List_396.html t _blank SQL show parameter statistics_levelNAME TYPE VALUE statistics_level string TYPICAL HYPERLINK /diannao/List/List_396.html t _blank SQL alter system set statistics_level=all;System altered.#typical和all有什么區(qū)不? HYPERLINK /diannao/List/List_396.html t _blank SQL alter system se

27、t statistics_level=typical;BRSystem altered. HYPERLINK /diannao/List/List_396.html t _blank SQL show parameter sga_targetNAME TYPE VALUE sga_target big integer 0 HYPERLINK /diannao/List/List_396.html t _blank SQL alter system set sga_target=170m;alter system set sga_target=170m*ERROR at line 1:ORA-0

28、2097: parameter cannot be modified because specif HYPERLINK /diannao/List/List_1164.html t _blank ied value is invalidORA-00823: Specif HYPERLINK /diannao/List/List_1164.html t _blank ied value of sga_target greater than sga_max_size HYPERLINK /diannao/List/List_396.html t _blank SQL alter system se

29、t sga_target=20m;System altered.#只是后來又發(fā)覺sga_target的值變成了140M? 下面是語句執(zhí)行情況。 HYPERLINK /diannao/List/List_396.html t _blank SQL show parameter sga_targetNAME TYPE VALUE sga_target big integer 140M HYPERLINK /diannao/List/List_396.html t _blank SQL alter system set sga_target=0;System altered. HYPERLINK /

30、diannao/List/List_396.html t _blank SQL show parameter sga_targetNAME TYPE VALUE sga_target big integer 0#改為20M HYPERLINK /diannao/List/List_396.html t _blank SQL alter system set sga_target=20m;System altered.#顯示的是140M HYPERLINK /diannao/List/List_396.html t _blank SQL show parameter sga_targetNAME

31、 TYPE VALUE sga_target big integer 140M #不可縮減? HYPERLINK /diannao/List/List_396.html t _blank SQL alter system set sga_target=130m;alter system set sga_target=130m*ERROR at line 1:ORA-02097: parameter cannot be modified because specif HYPERLINK /diannao/List/List_1164.html t _blank ied value is inva

32、lidORA-00827: could not shrink sga_target to specif HYPERLINK /diannao/List/List_1164.html t _blank ied value#不可增加 HYPERLINK /diannao/List/List_396.html t _blank SQL alter system set sga_target=141m;alter system set sga_target=141m*ERROR at line 1:ORA-02097: parameter cannot be modified because spec

33、if HYPERLINK /diannao/List/List_1164.html t _blank ied value is invalidORA-00823: Specif HYPERLINK /diannao/List/List_1164.html t _blank ied value of sga_target greater than sga_max_size3: HYPERLINK /diannao/List/List_399.html t _blank Oracle實例的進程結(jié)構(gòu)(Process Structure) HYPERLINK /diannao/List/List_39

34、9.html t _blank Oracle包含三類進程:用戶進程(User Process)服務(wù)器進程(Server Process)后臺進程(Background Process)3-1:用戶進程和服務(wù)器進程當數(shù)據(jù)庫用戶請求連接到 HYPERLINK /diannao/List/List_399.html t _blank Oracle的服務(wù)時啟動用戶進程(比如啟動 HYPERLINK /diannao/List/List_396.html t _blank SQLPlus時)。用戶進程首先必須建立一個連接。用戶不能直接與 HYPERLINK /diannao/List/List_399.

35、html t _blank Oracle服務(wù)器,必須通過服務(wù)器進程交互。服務(wù)器進程是用戶進程與服務(wù)器交互的橋梁,它能夠與 HYPERLINK /diannao/List/List_399.html t _blank Oracle Server直接交互。服務(wù)器進程能夠有共享和獨占兩種形式。3-2:后臺進程(Backgroung Process)數(shù)據(jù)庫的物理結(jié)構(gòu)與內(nèi)存結(jié)構(gòu)之間的交互要通過后臺進程來完成。數(shù)據(jù)庫的后臺進程包含兩類,一類是必須的,一類是可選的:Mandatory background processes|-DBWn(Database Writer):數(shù)據(jù)寫入|-PMON(Process

36、 Moniter):進程監(jiān)控|-LGWR(Log Writer):日志寫入|-SMON(System Moniter):系統(tǒng)監(jiān)控|-RECO(Recovery):恢復(fù)|-CKPT(Chekpoint):檢查點Optional background processes|-ARCn(Archiver):歸檔|-LCKn(Lock):鎖|-Dnnn(Dispatcher):調(diào)度|-能夠用下面的語句查看正在運行的后臺進程:=SQL select * from v$bgprocess where paddr00;PADDR PSERIAL# NAME DESCRIPTION 6B0ED064 1 PMO

37、N process cleanup 6B0ED4E4 1 MMAN Memory Manager 6B0ED964 1 DBW0 db writer process 0 6B0EDDE4 1 LGWR Redo etc. 6B0EE264 1 CKPT checkpoint 6B0EE6E4 1 SMON System Monitor Process 6B0EEB64 1 RECO distributed recovery 6B0EEFE4 1 CJQ0 Job Queue Coordinator 6B0F01E4 1 QMNC AQ Coordinator 6B0F0664 1 MMON Manageability Monitor Process 6B0F0AE4 1 MMNL Manageability Monitor Process 2= 3-2-1:DBWR(Database Writer,數(shù)據(jù)寫入進程)將數(shù)據(jù)緩沖區(qū)的數(shù)據(jù)寫入數(shù)據(jù)文件,是負責(zé)數(shù)據(jù)緩沖區(qū)治理的一個后臺進程。當數(shù)據(jù)緩沖區(qū)中的一數(shù)據(jù)被修改后,就標記為dirty,DBWR進程將數(shù)據(jù)緩沖區(qū)中“臟”數(shù)據(jù)寫入數(shù)據(jù)文件,保持數(shù)據(jù)緩沖區(qū)的”潔凈

溫馨提示

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

評論

0/150

提交評論