Oracle數(shù)據(jù)庫體系結(jié)構(gòu)詳解_第1頁
Oracle數(shù)據(jù)庫體系結(jié)構(gòu)詳解_第2頁
Oracle數(shù)據(jù)庫體系結(jié)構(gòu)詳解_第3頁
Oracle數(shù)據(jù)庫體系結(jié)構(gòu)詳解_第4頁
Oracle數(shù)據(jù)庫體系結(jié)構(gòu)詳解_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

Oracle體系結(jié)構(gòu)詳解(上)一、oracle數(shù)據(jù)庫的整體架構(gòu)OverviewofPrimaryComponents由上圖可知,oracle數(shù)據(jù)庫由實(shí)例和數(shù)據(jù)庫組成。二、數(shù)據(jù)庫存儲(chǔ)結(jié)構(gòu):2.1數(shù)據(jù)庫存儲(chǔ)結(jié)構(gòu)Oracle數(shù)據(jù)庫有物理結(jié)構(gòu)和邏輯結(jié)構(gòu)。數(shù)據(jù)庫的物理結(jié)構(gòu)是數(shù)據(jù)庫中的操作系統(tǒng)文件的集合。數(shù)據(jù)庫的物理結(jié)構(gòu)由數(shù)據(jù)文件、控制文件和重做日志文件組成。數(shù)據(jù)文件:數(shù)據(jù)文件是數(shù)據(jù)的存儲(chǔ)倉庫。聯(lián)機(jī)重做日志文件:聯(lián)機(jī)重做日志文件包含對(duì)數(shù)據(jù)庫所做的更改記錄,在發(fā)生故障時(shí)能夠恢復(fù)數(shù)據(jù)。重做日志按時(shí)間順序存儲(chǔ)應(yīng)用于數(shù)據(jù)庫的一連串的變更向量。其中僅包含重建(重做)所有已完成工作的最少限度信息。如果數(shù)據(jù)文件受損,則可以將這些變更向量應(yīng)用于數(shù)據(jù)文件備份來重做工作,將它恢復(fù)到發(fā)生故障的那一刻前的狀態(tài)。重做日志文件包含聯(lián)機(jī)重做日志文件(對(duì)于連續(xù)的數(shù)據(jù)庫操作時(shí)必須的)和歸檔日志文件(對(duì)于數(shù)據(jù)庫操作是可選的,但對(duì)于時(shí)間點(diǎn)恢復(fù)是必須的)。查看系統(tǒng)的redolog的信息SQL>selectgroup#,sequence#,bytes,members,statusfromv$log;GROUP#SEQUENCE# BYTESMEMBERSSTATUS1 22 524288001INACTIVE2 23 524288001CURRENT3 21 524288001INACTIVESQL>selectmemberfromv$logfile;MEMBER/u01/app/oracle/oradata/hnzk/redo03.log/u01/app/oracle/oradata/hnzk/redo02.log/u01/app/oracle/oradata/hnzk/redo01.log控制文件:控制文件包含維護(hù)和驗(yàn)證數(shù)據(jù)庫完整性的必要的信息。控制文件雖小,但作用非常大。它包含指向數(shù)據(jù)庫其余部分的指針:聯(lián)機(jī)重做日志文件和數(shù)據(jù)文件的位置,以及更新的歸檔日志文件的位置。它還存儲(chǔ)著維護(hù)數(shù)據(jù)庫完整性所需的信息。控制文件不過數(shù)MB,卻起著至關(guān)重要的作用。除了三個(gè)必須的文件外數(shù)據(jù)庫還能有其它非必須的文件如:參數(shù)文件、口令文件及歸檔日志文件。實(shí)例參數(shù)文件:當(dāng)啟動(dòng)oracle實(shí)例時(shí),SGA結(jié)構(gòu)會(huì)根據(jù)此參數(shù)文件的設(shè)置內(nèi)置到內(nèi)存,后臺(tái)進(jìn)程會(huì)據(jù)此啟動(dòng)??诹钗募河脩敉ㄟ^提交用戶名和口令來建立會(huì)話。Oracle根據(jù)存儲(chǔ)在數(shù)據(jù)字典的用戶定義對(duì)用戶名和口令進(jìn)行驗(yàn)證。歸檔重做日志文件:當(dāng)重做日志文件滿時(shí)將重做日志文件進(jìn)行歸檔以便還原數(shù)據(jù)文件備份。三、實(shí)例的整體架構(gòu)實(shí)例整體架構(gòu)圖:

實(shí)例由內(nèi)存和后臺(tái)進(jìn)程組成,它暫時(shí)存在于RAM和CPU中。當(dāng)關(guān)閉運(yùn)行的實(shí)例時(shí),實(shí)例將隨即消失。數(shù)據(jù)庫由磁盤上的物理文件組成,不管在運(yùn)行狀態(tài)還是停止?fàn)顟B(tài),這些文件就一直存在。因此,實(shí)例的生命周期就是其在內(nèi)存中存在的時(shí)間,可以啟動(dòng)和停止。一旦創(chuàng)建數(shù)據(jù)庫,數(shù)據(jù)庫將永久存在。通俗的講數(shù)據(jù)庫就相當(dāng)于平時(shí)安裝某個(gè)程序所生成的安裝目錄,而實(shí)例就是運(yùn)行某個(gè)程序時(shí)所需要的進(jìn)程及消耗的內(nèi)存。Oracle的內(nèi)存架構(gòu)包含兩部分系統(tǒng)全局區(qū)(SGA)和程序全局區(qū)(PGA)。程序全局區(qū)程序全局區(qū)(PGA)為每個(gè)用戶連接到。舊部據(jù)庫單獨(dú)分配的內(nèi)存當(dāng)進(jìn)程創(chuàng)建時(shí)分配當(dāng)進(jìn)程結(jié)束時(shí)收回只能被一個(gè)進(jìn)程使用系統(tǒng)全局區(qū)在操作系統(tǒng)提供的共享內(nèi)存段實(shí)現(xiàn)的內(nèi)存結(jié)構(gòu)稱為系統(tǒng)全局區(qū)(SGA)。SGA在實(shí)例啟動(dòng)時(shí)分配,在關(guān)閉時(shí)釋放。在一定范圍內(nèi),可以在實(shí)例運(yùn)行時(shí)通過自動(dòng)方式或響應(yīng)DBA的指令,重新調(diào)整11g實(shí)例中的SGA及其中的組件的大小。SystemGlobalArea■TheSGAconsistsofseveralmemorystructures:SharedPoolDatabaseBufferCacheRedoLogBufferOtherstructures(forexample,lockandlatchmanagement,statisticaldata)TherearetwoadditionalmemorystructuresthatcanbeconfiguredwithintheSGA:-LargePool-JavaPool由上圖可知SGA至少包含三種數(shù)據(jù)結(jié)構(gòu):數(shù)據(jù)庫緩沖區(qū)緩存、日志緩沖區(qū)及共享池。還可能包括:大池、JAVA池??梢允褂胹howsga,查看sga的狀態(tài)。3.1.1共享池共享池由許多子結(jié)構(gòu)組成,這些子結(jié)構(gòu)由oracle服務(wù)器內(nèi)部自動(dòng)管理。在共享池的總體大小范圍內(nèi),各個(gè)結(jié)構(gòu)的大小將因針對(duì)實(shí)例的活動(dòng)模式而異。共享池本身的大小可以動(dòng)態(tài)重調(diào)。a.庫緩存是內(nèi)存區(qū)域,按其已分析的格式存儲(chǔ)最近執(zhí)行的代碼。分析就是將編程人員編寫的代碼轉(zhuǎn)換為可執(zhí)行的代碼,這是oracle根據(jù)需要執(zhí)行的一個(gè)過程。通過將代碼緩存在共享池,可以在不重新分析的情況下重用,極大地提高性能。b.數(shù)據(jù)字典緩存有時(shí)稱為“行緩存”,它存儲(chǔ)最近使用的對(duì)象定義:表、索引、用戶和其他元數(shù)據(jù)定義的描述。通過將此類定義放在SGA的內(nèi)存中,以便使所有會(huì)話可以直接訪問它們,而不是被迫從磁盤上的數(shù)據(jù)字典中重復(fù)讀取它們,從而提高分析性能。c.PL/SQL區(qū):存儲(chǔ)的PL/SQL對(duì)象是過程、函數(shù)、打包的過程、打包的函數(shù)、對(duì)象類型定義和觸發(fā)器。它們?nèi)枷裨创a那樣存儲(chǔ)在數(shù)據(jù)字典中,也使用已編譯的格式。當(dāng)會(huì)話調(diào)用存儲(chǔ)的PL/SQL對(duì)象時(shí),它必須從數(shù)據(jù)字典讀取。為了避免重復(fù)讀取,將對(duì)象緩存到共享池的PL/SQL區(qū)。共享池的大小對(duì)性能產(chǎn)生重要影響,它應(yīng)該足夠大,以便緩存所有頻繁執(zhí)行的代碼和頻繁訪問的對(duì)象定義,但也不能過大,以至于連僅執(zhí)行一次的語句也要緩存。如果共享池過小,則性能下降,因?yàn)榉?wù)器會(huì)話將反復(fù)搶奪其中的空間來分析語句,此后,這些語句會(huì)被其他語句重寫,在重新執(zhí)行時(shí),將不得不再次分析。過大的共享池也會(huì)對(duì)性能產(chǎn)生不良影響,因?yàn)樗阉餍枰臅r(shí)間過長。如果共享池小于最優(yōu)容量,則性能將下降。但有一個(gè)最小容量,如果低于此限度,則語句將失敗。確定最優(yōu)容量是一個(gè)性能調(diào)整問題,大多數(shù)數(shù)據(jù)庫都需要一個(gè)數(shù)百M(fèi)B的共享池。有些應(yīng)用程序需要1GB以上的共享池,但很少有應(yīng)用程序能夠在共享池小于100MB時(shí)充分運(yùn)行。共享池在實(shí)例啟動(dòng)時(shí)分配。從9i開始,可以隨時(shí)將其調(diào)大或調(diào)小??梢圆捎檬謩?dòng)方式重調(diào),也可以根據(jù)工作負(fù)荷自動(dòng)調(diào)整大小。手動(dòng)調(diào)整共享池的大小:selectCOMPONENT,CURRENT_SIZE,MIN_SIZE,MAX_SIZEfromv$sga_dynamic_components;〃顯示可以動(dòng)態(tài)重設(shè)大小的SGA組件的當(dāng)前、最大和最小容量SQL>selectCOMPONENT,CURRENT_SIZE,MIN_SIZE,MAX_SIZEfromv$sga_dynamic_components;COMPONENTCURRENT_SIZEMIN_SIZEMAX_SIZEsharedpool104857600 1006632960largepool419430441943040javapool419430441943040streamspool000DEFAULTbuffercache167772160 167772160KEEPbuffercacheTOC\o"1-5"\h\z0 0 0RECYCLEbuffercache0 0DEFAULT2Kbuffercache0 0DEFAULT4Kbuffercache0 0DEFAULT8Kbuffercache0 0DEFAULT16Kbuffercache0 0DEFAULT32Kbuffercache0 0ASMBufferCache0 0 013rowsselected.SQL>ALTERSYSTEMSETSHARED_POOL_SIZE=110M;Systemaltered.SQL>selectCOMPONENT,CURRENT_SIZE,MIN_SIZE,MAX_SIZEfromv$sga_dynamic_components;COMPONENTCURRENT_SIZEMIN_SIZEMAX_SIZEsharedpool117440512 1006632960largepool419430441943040javapool419430441943040streamspool000DEFAULTbuffercache1551892481551892480KEEPbuffercache

000RECYCLEbuffercache0 00DEFAULT2Kbuffercache0 00DEFAULT4Kbuffercache0 00DEFAULT8Kbuffercache0 00DEFAULT16Kbuffercache0 00DEFAULT32Kbuffercache0 00ASMBufferCache00013rowsselected.3.1.2數(shù)據(jù)庫緩沖區(qū)數(shù)據(jù)庫緩沖區(qū)數(shù)據(jù)庫緩沖區(qū)是oracle用來執(zhí)行SQL的工作區(qū)域。在更新數(shù)據(jù)時(shí),用戶會(huì)話不直接更新磁盤上的數(shù)據(jù),而是首先復(fù)制到數(shù)據(jù)庫緩沖區(qū)緩存。更改應(yīng)用于數(shù)據(jù)庫緩沖區(qū)緩存中這些數(shù)據(jù)塊的副本,塊將在緩存中保留一段時(shí)間,直至其占有的緩沖區(qū)需要緩存另一塊為止。在查詢數(shù)據(jù)時(shí),數(shù)據(jù)也要經(jīng)過緩存。會(huì)話計(jì)算出那些塊包含關(guān)鍵的行,并將它們復(fù)制到數(shù)據(jù)庫緩沖區(qū)緩存。此后,相關(guān)行傳輸?shù)綍?huì)話的PGA作進(jìn)一步處理。此后數(shù)據(jù)塊會(huì)在數(shù)據(jù)庫緩存區(qū)緩存中保留一段時(shí)間。理想狀況下,包含頻繁訪問的數(shù)據(jù)的所有塊將位于數(shù)據(jù)庫緩沖區(qū)緩存中,從而最大程度地減少磁盤I/O的需要。如果緩沖區(qū)的緩存中存儲(chǔ)的塊的映像與磁盤上的映像不同,那么這樣的緩沖區(qū)常稱為“臟緩沖區(qū)”。臟緩沖區(qū)必須寫回到數(shù)據(jù)文件,然后緩沖區(qū)又變得干凈了。即使再寫入磁盤后,此塊也仍留在內(nèi)存中,可能有一段時(shí)間,此緩沖區(qū)不會(huì)被另一個(gè)塊所重寫。數(shù)據(jù)庫緩沖區(qū)緩存的大小會(huì)對(duì)性能產(chǎn)生至關(guān)重要的影響。緩存應(yīng)足夠大,以便能緩存所有頻繁訪問的塊,但也不能太大,以至于它會(huì)緩存極少使用的塊。如果緩存過小,那么將導(dǎo)致磁盤活動(dòng)過多,因?yàn)轭l繁訪問的塊持續(xù)從磁盤讀取,并由其他塊使用和重寫,然后再從磁盤讀取。數(shù)據(jù)庫緩沖區(qū)緩存在實(shí)例啟動(dòng)時(shí)分配。從數(shù)據(jù)庫9i開始,可以隨時(shí)將其調(diào)大或調(diào)小??梢圆捎檬謩?dòng)方式重調(diào),也可以根據(jù)工作負(fù)荷自動(dòng)重調(diào)大?。ㄈ绻麊⒂昧俗詣?dòng)化機(jī)制)。(優(yōu)化的時(shí)候會(huì)用到)修改DB_CACHE_SIZE的方法查看SGA大小showparametersga_max_sizedb_cache_size的尺寸受SGA的影響為能大于SGA查看showparametershared_pool_size尺寸一般來說shared_pool_size+db_cache_size=SGA_MAX_SIZE*70%左右經(jīng)過計(jì)算再修改db_cache_sizesql>altersystemsetdb_cache_size=大小Mscope=spfilesid='數(shù)據(jù)庫SID';sql>shutdownimmediatesql>startupsql>showparameterdb_cache_size就可以看到修改后的效果了日志緩沖區(qū)日志緩沖區(qū)是小型的、用于短期存儲(chǔ)將寫入到磁盤上的重做日志的變更向量的臨時(shí)區(qū)域?!ㄗ兏蛄俊ㄊ菓?yīng)用于某些對(duì)象的修改,執(zhí)行DML語句會(huì)生成應(yīng)用于數(shù)據(jù)的變更向量。有了重做日志,數(shù)據(jù)庫就保證數(shù)據(jù)永不丟失,每當(dāng)數(shù)據(jù)塊放生變更時(shí),都會(huì)將應(yīng)用于塊的變更向量寫到重做日志,如果需要還原數(shù)據(jù)文件,則通過重做日志,可以將變更向量提取并應(yīng)用于數(shù)據(jù)文件備份。會(huì)話服務(wù)器進(jìn)程不將重做記錄直接寫入到重做日志文件,否則,每當(dāng)執(zhí)行DML語句時(shí),會(huì)話將不得不等待磁盤I/O操作完成。相反,會(huì)話將重做記錄寫入內(nèi)存中的日志緩沖區(qū)。這樣做的速度將遠(yuǎn)比寫入磁盤快。此后,日志緩沖區(qū)寫出到重做日志文件。寫操作由日志寫入器后臺(tái)進(jìn)程(LGWR)完成。日志緩沖區(qū)在啟動(dòng)是實(shí)例時(shí)分配,如果不重新啟動(dòng)實(shí)例,就不能在隨后調(diào)整其大小。在oracle體系結(jié)構(gòu)中,將日志緩沖區(qū)轉(zhuǎn)儲(chǔ)到磁盤時(shí)基本瓶頸之一。DML的速度不能超過LGER將變更向量轉(zhuǎn)儲(chǔ)到聯(lián)機(jī)重做日志文件的速度。如果重做生成是限制數(shù)據(jù)庫性能的因素,唯一的選項(xiàng)是使用RAC,在RAC數(shù)據(jù)庫中,每個(gè)實(shí)例都有自己的日志緩沖區(qū)和自己的LGWR,這是將重做數(shù)據(jù)并行寫入磁盤的唯一方法。大池大池是一個(gè)可選區(qū)域,如果創(chuàng)建了大池,則那些在不創(chuàng)建大池的情況下使用共享池內(nèi)存的不同進(jìn)程將自動(dòng)使用大池。大池

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論