Oracle的内存结构与进程结构_第1页
Oracle的内存结构与进程结构_第2页
Oracle的内存结构与进程结构_第3页
Oracle的内存结构与进程结构_第4页
Oracle的内存结构与进程结构_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1: HYPERLINK t _blank Orraclee实例(IInstaance) 在一一个服务器器中,每一一个运行的的 HYPERLINK t _blank Oraccle数据据库都与一一个数据库库实例相联联系,实例例是我们访问数据据库的手段段。实实例在操作作系统中用用ORACCLE_SSID来标标识,在 HYPERLINK t _blank OOraclle中用参参数INSSTANCCE_NAAME来标标识,它它们两个的的值是相同同的。数据据库启动时时,系统首首先在服务务器内存中中分配系统统全局区(SSGA),构成了Oracle的内存结构,然后启动若干个常驻内存的操作系统进程,即组成

2、了 HYPERLINK t _blank Oracle的进程结构,内存区域和后台进程合称为一个 HYPERLINK t _blank Oracle实例。 数据库库与实例之之间是1对对1/n的的关系,在在非并行的的数据库系系统中每个个 HYPERLINK t _blank Oraccle数据据库与一个个实例相相对应;在在并行的数数据库系统统中,一个个数据库会会对应多个个实例,同同一时间用用户只与一一个实例例相联系,当当某一个实实例出现故故障时,其其他实例自自动服务,保保证数据库库正常运行行。在任何何情况下下,每个实实例都只可可以对应一一个数据库库。2: HYPERLINK t _blank Or

3、raclee 10g动态态内存管理理内存存是影响数数据库性能能的重要因因素,Orraclee8i使用用静态内存存管理, HYPERLINK t _blank OOraclle 10g使用用动态内内存管理。所谓静态态内存管理理,就是在在数据库系系统中,无无论是否有有用户连接接,也无论论并发用量大小,只只要数据库库服务在运运行,就会会分配固定定大小的内内存;动态态内存管理理允许在数数据库服务运行时时对内存的的大小进行行修改,读读取大数据据块时使用用大内存,小小数据块时时使用小内内存,读取标准内内存块时使使用标准内内存设置。按照照系统对内内存使用方方法的不同同, HYPERLINK t _blank

4、 Oraacle数数据库的内内存可以分分为以下几几个部分:系系统全局区区:SGAA(Sysstem Globbal AArea)程序全局区:PGA(Programe Global Area)排序池:(Sort Area)大池:(Large Pool)Java池:( HYPERLINK t _blank Java Pool)2-1:系统全局局区SGAA(Sysstem Globbal AArea)SGA是一组为系统分配的共享的内存结构,可以包含一个数据库实例的数据或控制信息。如果多个用户连接到同一个数据库实例,在实例的SGA中,数据可以被多个用户共享。当数据库实例启动时,SGA的内存被自动分配;

5、当数据库实例关闭时,SGA内存被回收。SGA是占用内存最大的一个区域,同时也是影响数据库性能的重要因素。SGA的有关信息可以通过下面的语句查询,sga_max_size的大小是不可以动态调整的。= HYPERLINK t _blank SQL show parameter sgaNAME TYPE VALUE- - -loc您正在看的的Oraccle是:Oraccle的内内存结构和和进程结构构。 k_sgaa boooleann FALLSEpree_pagge_sgga boooleaan FAALSEsgga_maax_siize bbig iintegger 1164Msgga_taar

6、gett bbig iintegger 00 HYPERLINK t _blank SQLL allter systtem sset ssga_mmax_ssize=100mm;aalterr sysstem set sga_max_sizee=1000m *ERRROR at lline 1:ORAA-020095: speccifieed innitiaalizaationn parrametter ccannoot bee moddif HYPERLINK t _blank ieed= 系统全局区区按作用不不同可以分分为:数据据缓冲区日日志缓冲区区共享池2-11-1:数数据缓冲区区(Da

7、ttabasse Buufferr Cacche)如如果每次执执行一个操操作时, HYPERLINK t _blank OOraclle都必须须从磁盘读读取所有数数据块并在在改变它之之后又必须把把每一块写写入磁盘,显显然效率会会非常低。数据缓冲冲区存放需需要经常访访问的数据据,供所有用用户使用。修改数据据时,首先先从数据文文件中取出出数据,存存储在数据据缓冲区中中,修改/插插入数据也也存储在缓缓冲区中,ccommiit或DBBWR(下下面有详细细介绍)进进程的其他他条件引发时时,数据被被写入数据据文件。数数据缓冲区区的大小是是可以动态态调整的,但但是不能超超过sgaa_maxx_sizze的限

8、制制。= HYPERLINK t _blank SQLL shhow pparammeterr db_cachhe_siizeNAMME TYYPE VAALUE- - -ddb_caache_sizee big inteeger 24M HYPERLINK t _blank SQL alteer syystemm sett db_cachhe_siize=1128m;aalterr sysstem set db_ccachee_sizze=1228m*ERRROR aat liine 11:ORA-020997: pparammeterr cannnot be mmodiffied beca

9、ause speccif HYPERLINK t _blank ieed vaalue is iinvallidORAA-003384: Insuufficc HYPERLINK t _blank 您正在看的的Oraccle是:Oraccle的内内存结构和和进程结构构。 ient memoory tto grrow ccachee HYPERLINK t _blank SQQL aalterr sysstem set db_ccachee_sizze=200m;SSysteem alltereed. HYPERLINK t _blank SQL showw parrametter ddb_ca

10、ache_sizee;NAMEE TYPPE VALLUE- - -dbb_cacche_ssize bbig iintegger 220M#此处我我仅增加了了1M都不行行? HYPERLINK t _blank SQL alteer syystemm sett db_cachhe_siize=225m;aalterr sysstem set db_ccachee_sizze=255m*ERROOR att linne 1:OORA-0020977: paarameeter cannnot bbe moodifiied bbecauuse sspeciif HYPERLINK t _blank

11、 ied vvaluee is invaalidORRA-000384: Inssuffiic HYPERLINK t _blank ient memoory tto grrow ccachee#修修改显示格格式,方便便查看。 HYPERLINK t _blank SQQL ccolummn naame fformaat a440 wrrap HYPERLINK t _blank SQLL coolumnn vallue fformaat a220 wrrap#下面语语句可以用用来查看内内存空间分分配情况,注注意SGAA各区大小小总和。 HYPERLINK t _blank SQQL ssel

12、ecct naame,vvaluee froom v$paraameteer whhere namee likke %sizee annd vaalue 0;#先将将 HYPERLINK t _blank Javaa_poool_siize调小小,然后再再修改dbb_cacche_ssize HYPERLINK t _blank SQQL sshow paraameteer HYPERLINK t _blank Jaava_ppool_sizee;NAMEE TYPPE VALLUE- - - HYPERLINK t _blank Jaava_ppool_sizee bbig iintegge

13、r 448MSQL alteer syystemm sett HYPERLINK t _blank Javva_poool_ssize=20m;SSysteem alltereed. HYPERLINK t _blank SQQL aalterr sysstem set HYPERLINK t _blank Javaa_poool_siize=330m;SSysteem alltereed.#上面面说明SGGA中各区区大小总和和不能超过过sga_max_sizee。=数据缓缓冲区的大大小对数据据库的存区区速度有直直接影响,多多用户时尤尤为明显。有些应用对对速度要求求很高,一一般要求数数据缓冲区

14、区的命中率率在90%以上。下下面给出一一种计算数数据缓冲区区命中率的的方法:使用数据据字典v$syssstat= HYPERLINK t _blank SQL seleect nname, vallue ffrom v$syysstaat 2 wheere nname in(sesssion logiical readds, 3 physsicall reaads, 4 phyysicaal reeads direect, 5 phyysicaal reeads direect (lob)NAAME VALUUE- -ssessiion llogiccal rreadss 88952443ph

15、yysicaal reeads 144992pphysiical readds diirectt 334phyysicaal reeads direect (lob) 0=命中率率=1-(149992-344-0)/8952243可可以让 HYPERLINK t _blank Orraclee给出数据据缓冲区大大小的建议议:= HYPERLINK t _blank SSQL alteer syystemm sett db_cachhe_addvicee=on;#打开该该功能Syystemm altteredd. HYPERLINK t _blank SSQL alteer syystemm s

16、ett db_cachhe_addvicee=offf;#关闭闭该功能SSysteem alltereed.=2-1-22:日志缓缓冲区(LLog BBuffeer Caache)日志缓冲区用来存储数据库的修改信息。该区对数据库性能的影响很小,有关日志后面还会有详细的介绍。查询日志缓冲区大小:SQL showw parrametter llog_bbuffeerNAMEE TYPEE VAALUE- - -log_bufffer iintegger 2622144 2-11-3:共共享池(SSharee Poool)共享享池是对SSQL,PPL/ HYPERLINK t _blank SQQL

17、程序进进行语法分分析,编译译,执行的的内存区域域。它包含含三个部分分:(都不不可单独定定义大小,必必须通过ssharee poool间接定定义)。库缓冲区区(Libbraryy Cacche)包包含SQLL,PL/ HYPERLINK t _blank SQL语句句的分析码码,执行计计划。数数据字典缓缓冲区(DData Dicttionaary CCachee)表,列列定义,权权限。用用户全局区区(Usrr Gloobal Areaa)用户MMTS会话话信息。共享享池的大小小可以动态态修改:= HYPERLINK t _blank SQLL shhow pparammeterr shaared

18、_pooll_sizzeNAMME TYYPE VAALUE- - -_sharred_ppool_sizee bbig iintegger 880Mshharedd_poool_siize bbig iintegger 880M HYPERLINK t _blank SQQL aalterr sysstem set sharred_ppool_sizee=78mm Sysstem alteered.=#上上面的_sharred_ppool_sizee一行奇怪怪?2-2:程序全局局区PGAA(Proogramme Glloball Areea)程序全全局区是包包含单个用用户或服务务器数据和和控

19、制信息息的内存区区域,它是是在用户进进程连接到Orraclee并创建一一个会话时时由 HYPERLINK t _blank Oraacle自自动分配的的,不可共共享,主要要用于用户户在编程存存储变变量和数组组。 如上上图:SStackk Spaace是用用来存储用用户会话变变量和数组组的存储区区域;UUser Sesssion Dataa是为用户户会话使用用的附加存存储区。|-SSessiion IInforrmatiion|-Soort AArea|-CCursoor Innformmatioon注注意Sesssionn infformaationn(用户会会话信息)在在独占服务务器中与在在

20、共享服务务器中所处处的内内存区域是是不同的。2-3:排序区,大大池, HYPERLINK t _blank Jaava池排排序区(SSort Areaa)为有排排序要求的的 HYPERLINK t _blank SQL语句句提供内存存空间。系系统使用专用用的内存区区域进进行数据排排序,这部部分空间就就是排序区区。在 HYPERLINK t _blank Orraclee数据库中中,用户数数据的排序序可使用两个区区域,一个个是内存排排序区,一一个是磁盘盘临时段,系系统优先使使用内存排排序区进行行排序。如果内内存不够,OOrclee自动使用用磁盘临时时表空间进进行排序。为提高数数据排序的的速度,建

21、建议尽尽量使用内内存排序区区,而不要要使用临时时段。参数ssort_areaa_sizze用来设设置排序区区大小。(好好象不能动动态修改?) 大池池(Larrge PPool)用用于数据库库备份工具具-恢复复管理器(RRMAN:Recooveryy Mannagerr)。Largge Poool的大大小由laarge_pooll_sizze确定,可可用下面语语句查询和和修改:= HYPERLINK t _blank SQL showw parrametter llargee_poool_siizeNAMEE TYYPE VAALUE- - -laarge_pooll_sizze biig in

22、ntegeer 88M HYPERLINK t _blank SQLL allter systtem sset llargee_poool_siize=77m;Syystemm altteredd.=JJava池池主要用于于Javaa语言开发发,一般来来说不低于于20M。其其大小由 HYPERLINK t _blank JJava_pooll_sizze来确定,可可以动态调调整。2-4: HYPERLINK t _blank Oraccle自动动共享内存存管理(AAutommaticc Shaared Memoory(SSGA) Manaagemeent)在 HYPERLINK t _blan

23、k Orraclee 8i/9i中数数据库管理理员必须手手动调整SSGA各区区的各个参参数取值,每每个区要根根据负荷荷轻重分别别设置,如如果设置不不当,比如如当某个区区负荷增大大时,没有有调整该区区内存大小小,则可可能出现OORA-44031:unabble tto alllocaate .byytes of sshareed meemoryy错误。在 HYPERLINK t _blank Orraclee 10g中,将将参数STTATISSTICSS_LEVVEL设置置为TYPPICALLALLL,使用SSGA_TTARGEET指定定SGA区区总大小,数数据库会根根据需要在在各个组件件之间自

24、动动分配内存存大小。下面是系系统自动调调整的区域域:固定SGGA区及其其他共享享池数据据缓冲区 HYPERLINK t _blank Javva池大大池。注意:如如果不设置置SGA_TARGGET,则则自动共享享内存管理理功能被禁禁止。= HYPERLINK t _blank SQL showw parrametter sstatiisticcs_leevelNAMME TYYPE VAALUE- - -staatisttics_leveel sstrinng TTYPICCAL HYPERLINK t _blank SQLL allter systtem sset sstatiisticcs

25、_leevel=all;Syystemm altteredd.#tyypicaal和alll有什么么区别? HYPERLINK t _blank SQLL allter systtem sset sstatiisticcs_leevel=typiical;BRSyystemm altteredd. HYPERLINK t _blank SQLL shhow pparammeterr sgaa_tarrgetNAMME TYPPE VALLUE- - -sgga_taargett big inteeger 0 HYPERLINK t _blank SQLL allter systtem sset

26、 ssga_ttargeet=1770m;allter systtem sset ssga_ttargeet=1770m*EERRORR at linee 1:ORAA-020097: paraameteer caannott be modiifiedd beccausee speecif HYPERLINK t _blank iied vvaluee is invaalidORAA-008823: Speccif HYPERLINK t _blank ieed vaalue of ssga_ttargeet grreateer thhan ssga_mmax_ssize HYPERLINK

27、t _blank SQLL allter systtem sset ssga_ttargeet=200m;Syystemm altteredd.#不过过后来又发发现sgaa_tarrget的的值变成了了140MM? 下面面是语句执执行情况。 HYPERLINK t _blank SQLL shhow pparammeterr sgaa_tarrgetNAMME TTYPE VVALUEE- - -sgaa_tarrget bbig iintegger 1140M HYPERLINK t _blank SQLL allter systtem sset ssga_ttargeet=0;Syyste

28、mm altteredd. HYPERLINK t _blank SQLL shhow pparammeterr sgaa_tarrgetNAMME TYYPE VAALUE- - -sgga_taargett bbig iintegger 00#改为为20M HYPERLINK t _blank SQL alteer syystemm sett sgaa_tarrget=20m;Syystemm altteredd.#显示示的是1440M HYPERLINK t _blank SQL showw parrametter ssga_ttargeetNNAME TYPEE VALUUE- - -

29、sga_targget&nbssp; bigg inttegerr 1400M #不可可缩减? HYPERLINK t _blank SQLL allter systtem sset ssga_ttargeet=1330m;allter systtem sset ssga_ttargeet=1330m*EERRORR at linee 1:ORAA-020097: paraameteer caannott be modiifiedd beccausee speecif HYPERLINK t _blank iied vvaluee is invaalidORAA-008827: coulld

30、noot shhrinkk sgaa_tarrget to sspeciif HYPERLINK t _blank ied vvaluee#不可增加加 HYPERLINK t _blank SQLL allter systtem sset ssga_ttargeet=1441m;allter systtem sset ssga_ttargeet=1441m*EERRORR at linee 1:ORAA-020097: paraameteer caannott be modiifiedd beccausee speecif HYPERLINK t _blank iied vvaluee is

31、invaalidORAA-008823: Speccif HYPERLINK t _blank ieed vaalue of ssga_ttargeet grreateer thhan ssga_mmax_ssize3: HYPERLINK t _blank Oraacle实实例的进程程结构(PProceess SStruccturee) HYPERLINK t _blank Oraccle包含含三类进程程:用用户进程(UUser Proccess)服务器进程(Server Process)后台进程(Background Process)3-1:用户进程和服务器进程当数据库用户请求连接到 HY

32、PERLINK t _blank Oracle的服务时启动用户进程(比如启动 HYPERLINK t _blank SQLPlus时)。用户进程首先必须建立一个连接。用户不能直接与 HYPERLINK t _blank Oracle服务器,必须通过服务器进程交互。服务器进程是用户进程与服务器交互的桥梁,它可以与 HYPERLINK t _blank Oracle Server直接交互。服务器进程可以有共享和独占两种形式。3-2:后后台进程(BBackggrounng Prrocesss)数据库的的物理结构构与内存结结构之间的的交互要通通过后台进进程来完成成。数据库库的后台进进程包含含两类,一一

33、类是必须须的,一类类是可选的的:Manddatorry baackgrroundd proocessses|-DBWnn(Dattabasse Wrriterr):数据据写入|-PMONN(Proocesss Monniterr):进程程监控|-LGWRR(Logg Wriiter):日志写入入|-SMMON(SSysteem Mooniteer):系系统监控|-RECCO(Reecoveery):恢复|-CKPTT(Cheekpoiint):检查点Opptionnal bbackggrounnd prrocessses|-ARCCn(Arrchivver):归档|-LCKnn(Locck):

34、锁锁|-Dnnnn(DDispaatcheer):调调度|-.可可以用下面面的语句查查看正在运运行的后台台进程:=SQL seleect * froom v$bgprrocesss whhere padddr00;PAADDR PSEERIALL# NAAME DESCCRIPTTION - - - -66B0EDD064 1 PPMON proocesss cleeanupp 6B00ED4EE4 11 MMAAN MMemorry Maanageer 66B0EDD964 1 DDBW0 db writter pproceess 00 6B00EDDEE4 11 LGWWR RRedo e

35、tc. 66B0EEE264 1 CCKPT cheeckpooint 6B00EE6EE4 11 SMOON SSysteem Moonitoor Prrocesss 66B0EEEB64 1 RRECO disstribbutedd reccoverry 6B00EEFEE4 11 CJQQ0 JJob QQueuee Cooordinnatorr 66B0F01EE4 11 QMNNC AAQ Cooordiinatoor 66B0F06664 11 MMOON MManaggeabiilityy Monnitorr Proocesss 66B0F0AEE4 11 MMNNL MMana

36、ggeabiilityy Monnitorr Proocesss 2= 3-2-1:DBBWR(DDatabbase Writter,数数据写入进进程)将数据缓缓冲区的数数据写入数数据文件,是是负责数据据缓冲区管管理的一个个后台进程程。当当数据缓冲冲区中的一一数据被修修改后,就就标记为ddirtyy,DBWWR进程将将数据缓冲冲区中“脏脏”数据据写入数据据文件,保保持数据缓缓冲区的”干净“。由于数据据缓冲区的的数据被用用户修改并并占用,空空闲数据缓缓冲区会不不断减少,当当用户进程程要从磁盘盘读取数据据块到数据据缓冲区却却无法找到足够的的空闲数据据缓冲区时时,DBWWR将数据据缓冲区内内容写入磁磁盘,使用用户进程总总可以得到到足够的的空闲数据据缓冲区。DBBWR的作作

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论