Oracle的邏輯結(jié)構(gòu)、物理結(jié)構(gòu)與實例_第1頁
Oracle的邏輯結(jié)構(gòu)、物理結(jié)構(gòu)與實例_第2頁
Oracle的邏輯結(jié)構(gòu)、物理結(jié)構(gòu)與實例_第3頁
Oracle的邏輯結(jié)構(gòu)、物理結(jié)構(gòu)與實例_第4頁
Oracle的邏輯結(jié)構(gòu)、物理結(jié)構(gòu)與實例_第5頁
已閱讀5頁,還剩25頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、Oracle體系結(jié)構(gòu)數(shù)據(jù)庫(Database)數(shù)據(jù)庫是一個數(shù)數(shù)據(jù)的集合,不不僅是指物理理上的數(shù)據(jù),也也指物理、存存儲及進程對對象的一個組組合。Oraacle是一一個基于B/S模式的關(guān)關(guān)系型數(shù)據(jù)庫庫管理系統(tǒng)(RRDBMS)。Oracle系系統(tǒng)體系結(jié)構(gòu)構(gòu)由三部分組組成:邏輯結(jié)結(jié)構(gòu)、物理結(jié)結(jié)構(gòu)和實例。數(shù)據(jù)庫(Dattabasee)一、Oraclle的邏輯結(jié)結(jié)構(gòu)Oracle的的邏輯結(jié)構(gòu)是是一種層次結(jié)結(jié)構(gòu)。主要由由:表空間、段段、區(qū)和數(shù)據(jù)據(jù)塊等概念組組成。邏輯結(jié)結(jié)構(gòu)是面向用用戶的,用戶戶使用Oraacle開發(fā)發(fā)應(yīng)用程序使使用的就是邏邏輯結(jié)構(gòu)。數(shù)數(shù)據(jù)庫存儲層層次結(jié)構(gòu)及其其構(gòu)成關(guān)系,結(jié)構(gòu)對象也也從數(shù)據(jù)塊到到

2、表空間形成成了不同層次次的粒度關(guān)系系。1.數(shù)據(jù)塊(DData BBlockss)數(shù)據(jù)塊是Oraacle最小小的存儲單位位,Oraccle數(shù)據(jù)存存放在“塊”中。一個塊塊占用一定的的磁盤空間。特特別注意的是是,這里的“塊”是Oraccle的“數(shù)據(jù)塊”,不是操作作系統(tǒng)的“塊”。Oracle每每次請求數(shù)據(jù)據(jù)的時候,都都是以塊為單單位。也就是是說,Oraacle每次次請求的數(shù)據(jù)據(jù)是塊的整數(shù)數(shù)倍。如果OOraclee請求的數(shù)據(jù)據(jù)量不到一塊塊,Oraccle也會讀讀取整個塊。所所以說,“塊”是Oraccle讀寫數(shù)數(shù)據(jù)的最小單單位或者最基基本的單位。塊的標(biāo)準(zhǔn)大小由由初始化參數(shù)數(shù)DB_BLLOCK_SSIZE指

3、定定。具有標(biāo)準(zhǔn)準(zhǔn)大小的塊稱稱為標(biāo)準(zhǔn)塊(Standdard BBlock)。塊的大小小和標(biāo)準(zhǔn)塊的的大小不同的的塊叫非標(biāo)準(zhǔn)準(zhǔn)塊(Nonnstanddard BBlock)。操作系統(tǒng)每次執(zhí)執(zhí)行I/O的的時候,是以以操作系統(tǒng)的的塊為單位;Oraclle每次執(zhí)行行I/O的時時候,都是以以O(shè)raclle的塊為單單位。Oracle數(shù)數(shù)據(jù)塊大小一一般是操作系系統(tǒng)塊的整數(shù)數(shù)倍。數(shù)據(jù)塊的格式(Data Blockk Formmat)塊中存放表的數(shù)數(shù)據(jù)和索引的的數(shù)據(jù),無論論存放哪種類類型的數(shù)據(jù),塊塊的格式都是是相同的,塊塊由塊頭(hheaderr/Commmon annd Varriablee),表目錄錄(Tabl

4、le Dirrectorry),行目目錄(Roww Direectoryy),空余空空間(Freee Spaace)和行行數(shù)據(jù)(Roow Datta)五部分分組成,如下下圖 塊頭(heaader/CCommonn and Variaable):存放塊的基基本信息,如如:塊的物理理地址,塊所所屬的段的類類型(是數(shù)據(jù)據(jù)段還是索引引段)。表目錄(Tabble Diirectoory):存存放表的信息息,即:如果果一些表的數(shù)數(shù)據(jù)被存放在在這個塊中,那那么,這些表表的相關(guān)信息息將被存放在在“表目錄”中。行目錄(Roww Direectoryy):如果塊塊中有行數(shù)據(jù)據(jù)存在,則,這這些行的信息息將被記錄在在

5、行目錄中。這這些信息包括括行的地址等等。行數(shù)據(jù)(Roww Dataa):是真正正存放表數(shù)據(jù)據(jù)和索引數(shù)據(jù)據(jù)的地方。這這部分空間是是已被數(shù)據(jù)行行占用的空間間??沼嗫臻g(Frree Sppace):空余空間是是一個塊中未未使用的區(qū)域域,這片區(qū)域域用于新行的的插入和已經(jīng)經(jīng)存在的行的的更新。頭部信息區(qū)(OOverheead):我我們把塊頭(headeer/Commmon aand Vaariablle),表目目錄(Tabble Diirectoory),行行目錄(Roow Dirrectorry)這三部部分合稱為頭頭部信息區(qū)(Overhhead)。頭頭部信息區(qū)不不存放數(shù)據(jù),它它存放的整個個塊的信息。頭頭

6、部信息區(qū)的的大小是可變變的。一般來來說,頭部信信息區(qū)的大小小介于84字字節(jié)(byttes)到1107字節(jié)(bytess)之間。數(shù)據(jù)塊中自由空空間的使用當(dāng)往數(shù)據(jù)庫中插插入(INSSERT)數(shù)數(shù)據(jù)的時候,塊塊中的自由空空間會減少;當(dāng)對塊中已已經(jīng)存在的行行進行修改(UPDATTE)的時候候(使記錄長長度增加),塊塊中的自由空空間也會減少少。DELETE語語句和UPDDATE語句句會使塊中的的自由空間增增加。當(dāng)使用用DELETTE語句刪除除塊中的記錄錄或者使用UUPDATEE語句把列的的值更改成一一個更小值的的時候,Orracle會會釋放出一部部分自由空間間。釋放出的的自由空間并并不一定是連連續(xù)的。通

7、常常情況下,OOraclee不會對塊中中不連續(xù)的自自由空間進行行合并。因為為合并數(shù)據(jù)塊塊中不連續(xù)的的自由空間會會影響數(shù)據(jù)庫庫的性能。只只有當(dāng)用戶進進行數(shù)據(jù)插入入(INSEERT)或者者更新(UPPDATE)操作,卻找找不到連續(xù)的的自由空間的的時候,Orracle才才會合并數(shù)據(jù)據(jù)塊中不連續(xù)續(xù)的自由空間間。對于塊中的自由由空間,Orracle提提供兩種管理理方式:自動動管理,手動動管理行鏈接和行遷移移(Row Chainning aand Miigratiing)行鏈接(Roww Chaiining):如果我們們往數(shù)據(jù)庫中中插入(INNSERT)一行數(shù)據(jù),這這行數(shù)據(jù)很大大,以至于一一個數(shù)據(jù)塊存存不

8、下一整行行,Oraccle就會把把一行數(shù)據(jù)分分作幾段存在在幾個數(shù)據(jù)塊塊中,這個過過程叫行鏈接接(Row Chainning)。如如下圖所示:如果一行數(shù)據(jù)是是普通行,這這行數(shù)據(jù)能夠夠存放在一個個數(shù)據(jù)塊中;如果一行數(shù)數(shù)據(jù)是鏈接行行,這行數(shù)據(jù)據(jù)存放在多個個數(shù)據(jù)塊中。行遷移(Roww Migrratingg):數(shù)據(jù)塊塊中存在一條條記錄,用戶戶執(zhí)行UPDDATE更新新這條記錄,這這個UPDAATE操作使使這條記錄變變長,這時候候,Oraccle在這個個數(shù)據(jù)塊中進進行查找,但但是找不到能能夠容納下這這條記錄的空空間,無奈之之下,Oraacle只能能把整行數(shù)據(jù)據(jù)移到一個新新的數(shù)據(jù)塊。原原來的數(shù)據(jù)塊塊中保留一

9、個個“指針”,這個“指針”指向新的數(shù)數(shù)據(jù)塊。被移移動的這條記記錄的ROWWID保持不不變。行遷移移的原理如下下圖所示:無論是行鏈接還還是行遷移,都都會影響數(shù)據(jù)據(jù)庫的性能。OOraclee在讀取這樣樣的記錄的時時候,Oraacle會掃掃描多個數(shù)據(jù)據(jù)塊,執(zhí)行更更多的I/OO。塊中自由空間的的自動管理Oracle使使用位圖(bbitmapp)來管理和和跟蹤數(shù)據(jù)塊塊,這種塊的的空間管理方方式叫“自動管理”。自動管理理有下面的好好處:易于使用更好地利用空空間可以對空間進進行實時調(diào)整整塊中自由空間的的手動管理用戶可以通過PPCTFREEE, PCCTUSEDD來調(diào)整塊中中空間的使用用,這種管理理方式叫手動

10、動管理。相對對于自動管理理,手動管理理方式比較麻麻煩,不容易易掌握,容易易造成塊中空空間的浪費。PCTUSEDD也是用于設(shè)設(shè)置一個百分分比,當(dāng)塊中中已使用的空空間的比例小小于這個百分分比的時候,這這個塊才被標(biāo)標(biāo)識為有效狀狀態(tài)。只有有有效的塊才被被允許插入數(shù)數(shù)據(jù)。PCTFREEE參數(shù)用于指指定塊中必須須保留的最小小空閑空間百百分例,默認(rèn)認(rèn)值為10。之之所以要預(yù)留留這樣的空間間,是因為UUPDATEE時,需要這這些空間。如如果UPDAATE時,沒沒有空余空間間,Oraccle就會分分配一個新的的塊,這會產(chǎn)產(chǎn)生行遷移(Row MMigratting)。例如,假定在CCreatee tablle語句中

11、指指定了pcttfree為為20,則說說明在該表的的數(shù)據(jù)段內(nèi)每每個數(shù)據(jù)塊的的20%被作作為可利用的的空閑空間,用用于更新已在在數(shù)據(jù)塊內(nèi)存存在的數(shù)據(jù)行行其余80%是用于插入入新的數(shù)據(jù)行行,直到達(dá)到到80%為止止。顯然,ppctfreee值越小,則則為現(xiàn)存行更更新所預(yù)留的的空間越少。因因此,如果ppctfreee設(shè)置得太太高,則在全全表掃描期間間增加I/OO,浪費磁盤盤空間;如果果pctfrree設(shè)置得得太低,則會會導(dǎo)致行遷移移。 pctusedd參數(shù)設(shè)置了了數(shù)據(jù)塊是否否是空閑的界界限。當(dāng)數(shù)據(jù)據(jù)塊的使用空空間低于pcctusedd的值時,此此數(shù)據(jù)塊標(biāo)志志為空閑,該該空閑空間僅僅用于插入新新的行。如

12、果果數(shù)據(jù)塊已經(jīng)經(jīng)達(dá)到了由ppctfreee所確定的的上邊界時,OOraclee就認(rèn)為此數(shù)數(shù)據(jù)塊已經(jīng)無無法再插入新新的行。例如如,假定在CCreatee tablle語句中指指定pctuused為440,則當(dāng)小小于或等于339時,該數(shù)數(shù)據(jù)塊才是可可用的。所以以,可將數(shù)據(jù)據(jù)塊填得更滿滿,這樣可節(jié)節(jié)省空間,但但卻增加了處處理開銷,因因為數(shù)據(jù)塊的的空閑空間總總是要被更新新的行占據(jù),所所以對數(shù)據(jù)塊塊需要頻繁地地進行重新組組織。比較低低的pctuused增加加了數(shù)據(jù)庫的的空閑空間,但但減少了更新新操作的處理理開銷。所以以,如果pcctusedd設(shè)置過高,則則會降低磁盤盤的利用率導(dǎo)導(dǎo)致行遷移;若pctuus

13、ed設(shè)置置過低,則浪浪費磁盤空間間,增加全表表掃描時的II/O輸出。ppctuseed是與pcctfreee相對的參數(shù)數(shù)。 那么,如何選擇擇pctfrree和pcctusedd的值呢?有有個公式可供供參考。顯然然,pctffree和ppctuseed的之和不不能超過1000。若兩者者之和低于1100,則空空間的利用與與系統(tǒng)的I/O之間的最最佳平衡點是是:pctffree與ppctuseed之和等于于100%減減去一行的大大小占塊空間間大小的百分分比。例如,如如果塊大小為為2048字字節(jié),則它需需要100個個字節(jié)的開銷銷,而行大小小是390字字節(jié)(為可用用塊的20%)。為了充充分利用空間間,pc

14、tffree與ppctuseed之和最好好為80%。 那么,怎樣確定定數(shù)據(jù)塊大小小呢?有兩個個因素需要考考慮: 一是數(shù)據(jù)庫環(huán)境境類型。例如如,是DSSS環(huán)境還是OOLTP環(huán)境境?在數(shù)據(jù)倉倉庫環(huán)境(OOLAP或DDSS)下,用用戶需要進行行許多運行時時間很長的查查詢,所以應(yīng)應(yīng)當(dāng)使用大的的數(shù)據(jù)塊。在在OLTP系系統(tǒng)中,用戶戶處理大量的的小型事務(wù),采采用較小數(shù)據(jù)據(jù)塊能夠獲得得更好的效果果。 二是SGA的大大小。數(shù)據(jù)庫庫緩沖區(qū)的大大小由數(shù)據(jù)塊塊大小和初始始化文件的ddb_bloock_buufferss參數(shù)決定。最最好設(shè)為操作作系統(tǒng)I/OO的整數(shù)倍。2數(shù)據(jù)區(qū)(EExtentt)是一組連續(xù)的數(shù)數(shù)據(jù)塊。當(dāng)

15、一一個表、回滾滾段或臨時段段創(chuàng)建或需要要附加空間時時,系統(tǒng)總是是為之分配一一個新的數(shù)據(jù)據(jù)區(qū)。一個數(shù)數(shù)據(jù)區(qū)不能跨跨越多個文件件,因為它包包含連續(xù)的數(shù)數(shù)據(jù)塊。使用用區(qū)的目的是是用來保存特特定數(shù)據(jù)類型型的數(shù)據(jù),也也是表中數(shù)據(jù)據(jù)增長的基本本單位。在OOraclee數(shù)據(jù)庫中,分分配空間就是是以數(shù)據(jù)區(qū)為為單位的。一一個Oraccle對象包包含至少一個個數(shù)據(jù)區(qū)。設(shè)設(shè)置一個表或或索引的存儲儲參數(shù)包含設(shè)設(shè)置它的數(shù)據(jù)據(jù)區(qū)大小。3段(Seggment)是由多個數(shù)據(jù)區(qū)區(qū)構(gòu)成的,它它是為特定的的數(shù)據(jù)庫對象象(如表段、索索引段、回滾滾段、臨時段段)分配的一一系列數(shù)據(jù)區(qū)區(qū)。段內(nèi)包含含的數(shù)據(jù)區(qū)可可以不連續(xù),并并且可以跨越越多

16、個文件。使使用段的目的的是用來保存存特定對象。 一個Oraclle數(shù)據(jù)庫有有4種類型的的段: 數(shù)據(jù)段:數(shù)據(jù)段段也稱為表段段,它包含數(shù)數(shù)據(jù)并且與表表和簇相關(guān)。當(dāng)當(dāng)創(chuàng)建一個表表時,系統(tǒng)自自動創(chuàng)建一個個以該表的名名字命名的數(shù)數(shù)據(jù)段。 索引段:包含了了用于提高系系統(tǒng)性能的索索引。一旦建建立索引,系系統(tǒng)自動創(chuàng)建建一個以該索索引的名字命命名的索引段段。 回滾段:包含了了回滾信息,并并在數(shù)據(jù)庫恢恢復(fù)期間使用用,以便為數(shù)數(shù)據(jù)庫提供讀讀入一致性和和回滾未提交交的事務(wù),即即用來回滾事事務(wù)的數(shù)據(jù)空空間。當(dāng)一個個事務(wù)開始處處理時,系統(tǒng)統(tǒng)為之分配回回滾段,回滾滾段可以動態(tài)態(tài)創(chuàng)建和撤銷銷。系統(tǒng)有個個默認(rèn)的回滾滾段,其管理

17、理方式既可以以是自動的,也也可以是手工工的。 臨時段:它是OOraclee在運行過程程中自行創(chuàng)建建的段。當(dāng)一一個SQL語語句需要臨時時工作區(qū)時,由由Oraclle建立臨時時段。一旦語語句執(zhí)行完畢畢,臨時段的的區(qū)間便退回回給系統(tǒng)。4表空間(ttablesspace)是數(shù)據(jù)庫的邏輯輯劃分。任何何數(shù)據(jù)庫對象象在存儲時都都必須存儲在在某個表空間間中。表空間間對應(yīng)于若干干個磁盤文件件,即表空間間是由一個或或多個磁盤文文件構(gòu)成的。表表空間相當(dāng)于于操作系統(tǒng)中中的文件夾,也也是數(shù)據(jù)庫邏邏輯結(jié)構(gòu)與物物理文件之間間的一個映射射。每個數(shù)據(jù)據(jù)庫至少有一一個表空間(ssystemm tabllespacce),表空空間

18、的大小等等于所有從屬屬于它的數(shù)據(jù)據(jù)文件大小的的總和。(1)系統(tǒng)表空空間(sysstem ttablesspace)是每個Oraccle數(shù)據(jù)庫庫都必須具備備的。其功能能是在系統(tǒng)表表空間中存放放諸如表空間間名稱、表空空間所含數(shù)據(jù)據(jù)文件等數(shù)據(jù)據(jù)庫管理所需需的信息。系系統(tǒng)表空間的的名稱是不可可更改的。系系統(tǒng)表空間必必須在任何時時候都可以用用,也是數(shù)據(jù)據(jù)庫運行的必必要條件。因因此,系統(tǒng)表表空間是不能能脫機的。 系統(tǒng)表空間包括括數(shù)據(jù)字典、存存儲過程、觸觸發(fā)器和系統(tǒng)統(tǒng)回滾段。為為避免系統(tǒng)表表空間產(chǎn)生存存儲碎片以及及爭用系統(tǒng)資資源的問題,應(yīng)應(yīng)創(chuàng)建一個獨獨立的表空間間用來單獨存存儲用戶數(shù)據(jù)據(jù)。(2)SYSAAU

19、X表空間間 是隨著數(shù)據(jù)庫的的創(chuàng)建而創(chuàng)建建的,它充當(dāng)當(dāng)SYSTEEM的輔助表表空間,主要要存儲除數(shù)據(jù)據(jù)字典以外的的其他對象。SSYSAUXX也是許多OOraclee 數(shù)據(jù)庫的的默認(rèn)表空間間,它減少了了由數(shù)據(jù)庫和和DBA管理理的表空間數(shù)數(shù)量,降低了了SYSTEEM表空間的的負(fù)荷。(3)臨時表空空間 相對于其他表空空間而言,臨臨時表空間(ttemp ttablesspace)主主要用于存儲儲Oraclle數(shù)據(jù)庫運運行期間所產(chǎn)產(chǎn)生的臨時數(shù)數(shù)據(jù)。數(shù)據(jù)庫庫可以建立多多個臨時表空空間。當(dāng)數(shù)據(jù)據(jù)庫關(guān)閉后,臨臨時表空間中中所有數(shù)據(jù)將將全部被清除除。除臨時表表空間外,其其他表空間都都屬于永久性性表空間。(4)撤銷

20、表空空間 用于保存Oraacle數(shù)據(jù)據(jù)庫撤銷信息息,即保存用用戶回滾段的的表空間稱之之為回滾表空空間(或簡稱稱為RBS撤撤銷表空間(uundo ttablesspace)。在在Oraclle8i中是是rollbback ttablesspace,從從Oraclle9i開始始改為unddo tabblespaace。在OOraclee 10g中初始始創(chuàng)建的只有有6個表空間間sysauux、sysstem、ttemp、uundotbbs1、exxamplee和userrs。其中ttemp是臨臨時表空間,uundotbbs1是unndo撤銷表表空間。(5)USERRS表空間用戶表空間,用用于存放永久

21、久性用戶對象象的數(shù)據(jù)和私私有信息。每每個數(shù)據(jù)塊都都應(yīng)該有一個個用戶表空間間,以便在創(chuàng)創(chuàng)建用戶是將將其分配給用用戶。二、物理結(jié)構(gòu)Oracle物物理結(jié)構(gòu)包含含了數(shù)據(jù)文件件、日志文件件和控制文件件1.數(shù)據(jù)文件每一個ORACCLE數(shù)據(jù)庫庫有一個或多多個物理的數(shù)數(shù)據(jù)文件(ddata ffile)。一一個數(shù)據(jù)庫的的數(shù)據(jù)文件包包含全部數(shù)據(jù)據(jù)庫數(shù)據(jù)。邏邏輯數(shù)據(jù)庫結(jié)結(jié)構(gòu)(如表、索索引)的數(shù)據(jù)據(jù)物理地存儲儲在數(shù)據(jù)庫的的數(shù)據(jù)文件中中。數(shù)據(jù)文件件有下列特征征: 一個數(shù)據(jù)文件僅僅與一個數(shù)據(jù)據(jù)庫聯(lián)系。一旦建立,數(shù)據(jù)據(jù)文件不能改改變大小.一個表空間(數(shù)數(shù)據(jù)庫存儲的的邏輯單位)由由一個或多個個數(shù)據(jù)文件組組成。 數(shù)據(jù)文件中的數(shù)

22、數(shù)據(jù)在需要時時可以讀取并并存儲在ORRACLE內(nèi)內(nèi)存儲區(qū)中。例例如:用戶要要存取數(shù)據(jù)庫庫一表的某些些數(shù)據(jù),如果果請求信息不不在數(shù)據(jù)庫的的內(nèi)存存儲區(qū)區(qū)內(nèi),則從相相應(yīng)的數(shù)據(jù)文文件中讀取并并存儲在內(nèi)存存。當(dāng)修改和和插入新數(shù)據(jù)據(jù)時,不必立立刻寫入數(shù)據(jù)據(jù)文件。為了了減少磁盤輸輸出的總數(shù),提提高性能,數(shù)數(shù)據(jù)存儲在內(nèi)內(nèi)存,然后由由ORACLLE后臺進程程DBWR決決定如何將其其寫入到相應(yīng)應(yīng)的數(shù)據(jù)文件件。2.日志文件每一個數(shù)據(jù)庫有有兩個或多個個日志文件(rredo llog fiile)的組組,每一個日日志文件組用用于收集數(shù)據(jù)據(jù)庫日志。日日志的主要功功能是記錄對對數(shù)據(jù)所作的的修改,所以以對數(shù)據(jù)庫作作的全部修改

23、改是記錄在日日志中。在出出現(xiàn)故障時,如如果不能將修修改數(shù)據(jù)永久久地寫入數(shù)據(jù)據(jù)文件,則可可利用日志得得到該修改,所所以從不會丟丟失已有操作作成果。 日志文件主要是是保護數(shù)據(jù)庫庫以防止故障障。為了防止止日志文件本本身的故障,OORACLEE允許鏡象日日志(mirrroredd redoo log),以致可在在不同磁盤上上維護兩個或或多個日志副副本。 日志文件中的信信息僅在系統(tǒng)統(tǒng)故障或介質(zhì)質(zhì)故障恢復(fù)數(shù)數(shù)據(jù)庫時使用用,這些故障障阻止將數(shù)據(jù)據(jù)庫數(shù)據(jù)寫入入到數(shù)據(jù)庫的的數(shù)據(jù)文件。然然而任何丟失失的數(shù)據(jù)在下下一次數(shù)據(jù)庫庫打開時,OORACLEE自動地應(yīng)用用日志文件中中的信息來恢恢復(fù)數(shù)據(jù)庫數(shù)數(shù)據(jù)文件。Oralc

24、e兩兩種日志文件件類型:聯(lián)機日志文件 這是Oraclle用來循環(huán)環(huán)記錄數(shù)據(jù)庫庫改變的操作作系統(tǒng)文件歸檔日志文件 這是指為避免聯(lián)聯(lián)機日志文件件重寫時丟失失重復(fù)數(shù)據(jù)而而對聯(lián)機日志志文件所做的的備份Oracle有有兩種歸檔日日志模式,OOraclee數(shù)據(jù)庫可以以采用其中任任何一種模式式:NOARCHIIVELOGG 不對日志文件進進行歸檔。這這種模式可以以大大減少數(shù)數(shù)據(jù)庫備份的的開銷,但可可能回導(dǎo)致數(shù)數(shù)據(jù)的不可恢恢復(fù)ARCHIVEELOG 在這種模式下,當(dāng)當(dāng)Oraclle轉(zhuǎn)向一個個新的日志文文件時,將以以前的日志文文件進行歸檔檔。為了防止止出現(xiàn)歷史“缺口”的情況,一一個給定的日日志文件在它它成功歸檔

25、之之前是不能重重新使用的。歸歸檔的日志文文件,加上聯(lián)聯(lián)機日志文件件,為數(shù)據(jù)庫庫的所有改變變提供了完整整的歷史信息息。在Oraclee利用日志文文件和歸檔日日志文件來恢恢復(fù)數(shù)據(jù)庫時時,內(nèi)部序列列號可以起一一個向?qū)У淖髯饔谩?.控制文件每一ORACLLE數(shù)據(jù)庫有有一個控制文文件(conntrol file),它記錄數(shù)數(shù)據(jù)庫的物理理結(jié)構(gòu),包含含下列信息類類型: 數(shù)據(jù)庫名; 數(shù)據(jù)庫數(shù)據(jù)文件件和日志文件件的名字和位位置; 數(shù)據(jù)庫建立日期期。 為了安全起見,允允許控制文件件被鏡象。 每一次ORACCLE數(shù)據(jù)庫庫的實例啟動動時,它的控控制文件用于于標(biāo)識數(shù)據(jù)庫庫和日志文件件,當(dāng)著手?jǐn)?shù)數(shù)據(jù)庫操作時時它們必須被被

26、打開。當(dāng)數(shù)數(shù)據(jù)庫的物理理組成更改時時,ORACCLE自動更更改該數(shù)據(jù)庫庫的控制文件件。數(shù)據(jù)恢復(fù)復(fù)時,也要使使用控制文件件。4.參數(shù)文件除了構(gòu)成Oraacle數(shù)據(jù)據(jù)庫物理結(jié)構(gòu)構(gòu)的三類主要要文件外,OOraclee數(shù)據(jù)庫還具具有另外一種種重要的文件件:參數(shù)文件件。參數(shù)文件件記錄了Orracle數(shù)數(shù)據(jù)庫的基本本參數(shù)信息,主主要包括數(shù)據(jù)據(jù)庫名、控制制文件所在路路徑、進程等等。與舊版本本的初始化參參數(shù)文件INNITsidd.ora不不同,在Orracle110g中還可可以使用二進進進制服務(wù)器器參數(shù)文件,并并且該服務(wù)器器參數(shù)文件在在安裝Oraacle數(shù)據(jù)據(jù)庫系統(tǒng)時由由系統(tǒng)自動創(chuàng)創(chuàng)建,文件的的名稱為SPPF

27、ILEssid.orra,sidd為所創(chuàng)建的的數(shù)據(jù)庫實例例名。 SPFILEssid.orra中的參數(shù)數(shù)是由Oraacle系統(tǒng)統(tǒng)自動管理。如如果想要對數(shù)數(shù)據(jù)庫的某些些參數(shù)進行設(shè)設(shè)置,則可能能過OEM或或ALTERR SYSTTEM命令來來修改。用戶戶最好不要用用編輯器進行行修改。三、實例(innstancce)數(shù)據(jù)庫實例(也也稱為服務(wù)器器Serveer)就是用用來訪問一個個數(shù)據(jù)庫文件件集的一個存存儲結(jié)構(gòu)及后后臺進程的集集合。它使一一個單獨的數(shù)數(shù)據(jù)庫可以被被多個實例訪訪問(也就是是ORACLLE并行服務(wù)務(wù)器- OOPS)。實例在操作系統(tǒng)統(tǒng)中用ORAACLE_SSID來標(biāo)識識,在Oraacle中用

28、用參數(shù)INSSTANCEE_NAMEE來標(biāo)識, 它們兩個的的值是相同的的。數(shù)據(jù)庫啟啟動時,系統(tǒng)統(tǒng)首先在服務(wù)務(wù)器內(nèi)存中分分配系統(tǒng)全局局區(qū)(SGAA),構(gòu)成了了Oraclle的內(nèi)存結(jié)結(jié)構(gòu),然后啟啟動若干個常常駐內(nèi)存的操操作系統(tǒng)進程程,即組成了了Oraclle的 進程程結(jié)構(gòu),內(nèi)存存區(qū)域和后臺臺進程合稱為為一個Oraacle實例例。1.系統(tǒng)全局區(qū)區(qū)(SGA)SGA是一組為為系統(tǒng)分配的的共享的內(nèi)存存結(jié)構(gòu),可以以包含一個數(shù)數(shù)據(jù)庫實例的的數(shù)據(jù)或控制制信: 息息。如果多個個用戶連接到到同一個數(shù)據(jù)據(jù)庫實例,在在實例的SGGA中,數(shù)據(jù)據(jù)可以被多個個用戶共享, 當(dāng)數(shù)據(jù)庫實實例啟動時,SSGA的內(nèi)存存被自動分配配;當(dāng)

29、數(shù)據(jù)庫庫實例關(guān)閉時時,SGA內(nèi)內(nèi)存被回收。 SGA是是占用內(nèi)存最最大的一個區(qū)區(qū)域,同時也也是影響數(shù)據(jù)據(jù)庫性能的重重要因素。系統(tǒng)全局區(qū)(SSGA),主主要包括:1)數(shù)據(jù)塊緩存存區(qū) 數(shù)據(jù)塊緩存區(qū)(databblockbbufferrcachee)是SGAA中的一個高高速緩存區(qū)域域,用來存儲儲從數(shù)據(jù)庫中中讀取數(shù)據(jù)段段的數(shù)據(jù)塊(如表、索引引和簇)。數(shù)數(shù)據(jù)塊緩存區(qū)區(qū)的大小由數(shù)數(shù)據(jù)庫服務(wù)器器init.ora文件件中的DB_LOCK_BUFFEERS參數(shù)決決定(用數(shù)據(jù)據(jù)庫塊的個數(shù)數(shù)表示)。在在調(diào)整和管理理數(shù)據(jù)庫時,調(diào)調(diào)整數(shù)據(jù)塊緩緩存區(qū)的大小小是一個重要要的部分。因為數(shù)據(jù)塊緩存存區(qū)的大小固固定,并且其其大小通

30、常小小于數(shù)據(jù)庫段段所使用的空空間,所以它它不能一次裝裝載下內(nèi)存中中所有的數(shù)據(jù)據(jù)庫段。通常常,數(shù)據(jù)塊緩緩存區(qū)只是數(shù)數(shù)據(jù)庫大小的的1%2%,Oraccle使用最最近最少使用用(LRU,lleastrrecenttlyuseed)算法來來管理可用空空間。當(dāng)存儲儲區(qū)需要自由由空間時,最最近最少使用用塊將被移出出,新數(shù)據(jù)塊塊將在存儲區(qū)區(qū)代替它的位位置。通過這這種方法,將將最頻繁使用用的數(shù)據(jù)保存存在存儲區(qū)中中。然而,如果SGGA的大小不不足以容納所所有最常使用用的數(shù)據(jù),那那么,不同的的對象將爭用用數(shù)據(jù)塊緩存存區(qū)中的空間間。當(dāng)多個應(yīng)應(yīng)用程序共享享同一個SGGA時,很有有可能發(fā)生這這種情況。此此時,每個應(yīng)應(yīng)用

31、的最近使使用段都將與與其他應(yīng)用的的最近使用段段爭奪SGAA中的空間。其其結(jié)果是,對對數(shù)據(jù)塊緩存存區(qū)的數(shù)據(jù)請請求將出現(xiàn)較較低的命中率率,導(dǎo)致系統(tǒng)統(tǒng)性能下降。2)字典緩存區(qū)區(qū) 數(shù)據(jù)庫對象的信信息存儲在數(shù)數(shù)據(jù)字典表中中,這些信息息包括用戶帳帳號數(shù)據(jù)、數(shù)數(shù)據(jù)文件名、段段名、盤區(qū)位位置、表說明明和權(quán)限,當(dāng)當(dāng)數(shù)據(jù)庫需要要這些信息(如檢查用戶戶查詢一個表表的授權(quán))時時,將讀取數(shù)數(shù)據(jù)字典表并并且將返回的的數(shù)據(jù)存儲在在字典緩存區(qū)區(qū)的SGA中中。數(shù)據(jù)字典緩存區(qū)區(qū)通過最近最最少使用(LLRU)算法法來管理。字字典緩存區(qū)的的大小由數(shù)據(jù)據(jù)庫內(nèi)部管理理。字典緩存存區(qū)是SQLL共享池的一一部分,共享享池的大小由由數(shù)據(jù)庫文件

32、件init.ora中的的SHAREED_POOOL_SIZZE參數(shù)來設(shè)設(shè)置。如果字典緩存區(qū)區(qū)太小,數(shù)據(jù)據(jù)庫就不得不不反復(fù)查詢數(shù)數(shù)據(jù)字典表以以訪問數(shù)據(jù)庫庫所需的信息息,這些查詢詢稱為循環(huán)調(diào)調(diào)用(reccuesivvecalll),這時的的查詢速度相相對字典緩存存區(qū)獨立完成成查詢時要低低。3)重做日志緩緩沖區(qū) 重做項描述對數(shù)數(shù)據(jù)庫進行的的修改。它們們寫到聯(lián)機重重做日志文件件中,以便在在數(shù)據(jù)庫恢復(fù)復(fù)過程中用于于向前滾動操操作。然而,在在被寫入聯(lián)機機重做日志文文件之前,事事務(wù)首先被記記錄在稱作重重做日志緩沖沖區(qū)(reddologbbufferr)的SGAA中。數(shù)據(jù)庫庫可以周期地地分批向聯(lián)機機重做日志文

33、文件中寫重做做項的內(nèi)容,從從而優(yōu)化這個個操作。重做做日志緩沖區(qū)區(qū)的大小(以以字節(jié)為單位位)由iniit.oraa文件中的LLOG_BUUFFER參參數(shù)決定。4)SQL共享享池 SQL共享池存存儲數(shù)據(jù)字典典緩存區(qū)及庫庫緩存區(qū)(llibrarrycachhe),即對對數(shù)據(jù)庫進行行操作的語句句信息。當(dāng)數(shù)數(shù)據(jù)塊緩沖區(qū)區(qū)和字典緩存存區(qū)能夠共享享數(shù)據(jù)庫用戶戶間的結(jié)構(gòu)及及數(shù)據(jù)信息時時,庫緩存區(qū)區(qū)允許共享常常用的SQLL語句。SQL共享池包包括執(zhí)行計劃劃及運行數(shù)據(jù)據(jù)庫的SQLL語句的語法法分析樹。在在第二次運行行(由任何用用戶)相同的的SQL語句句時,可以利利用SQL共共享池中可用用的語法分析析信息來加快快執(zhí)

34、行速度。SQL共享池通通過LRU算算法來管理。當(dāng)當(dāng)SQL共享享池填滿時,將將從庫緩存區(qū)區(qū)中刪掉最近近最少使用的的執(zhí)行路徑和和語法分析樹樹,以便為新新的條目騰出出空間。如果果SQL共享享池太小,語語句將被連續(xù)續(xù)不斷地再裝裝入到庫緩存存區(qū),從而影影響操作性能能。SQL共享池的的大小(以字字節(jié)為單位)由initt.ora文文件參數(shù)SHHARED_POOL_SIZE決決定。5)大池 大池(LarggePooll)是一個可可選內(nèi)存區(qū)。如如果使用線程程服務(wù)器選項項或頻繁執(zhí)行行備份/恢復(fù)復(fù)操作,只要要創(chuàng)建一個大大池,就可以以更有效地管管理這些操作作。大池將致致力于支持SSQL大型命命令。利用大大池,就可以以

35、防止這些SSQL大型命命令把條目重重寫入SQLL共享池中,從從而減少再裝裝入到庫緩存存區(qū)中的語句句數(shù)量。大池池的大小(以以字節(jié)為單位位)通過innit.orra文件的LLARGE_POOL_SIZE參參數(shù)設(shè)置,用用戶可以使用用init.ora文件件的LARGGE_POOOL_MINN_ALLOOC參數(shù)設(shè)置置大池中的最最小位置。OOraclee8i已不用用這個參數(shù)。作作為使用LaargePoool的一種種選擇方案,可可以用iniit.oraa文件的SHHARED_POOL_RESERRVED_SSIZE參數(shù)數(shù)為SQL大大型語句保留留一部分SQQL共享池。6)Java池池 由其名字可知,JJava

36、池為為Java命命令提供語法法分析。Jaava池的大大小(以字節(jié)節(jié)為單位)通通過在Oraacle8ii引入的innit.orra文件的JJAVA_PPOOL_SSIZE參數(shù)數(shù)設(shè)置。innit.orra文件的JJAVA_PPOOL_SSIZE參數(shù)數(shù)缺省設(shè)置為為10MB。7)多緩沖池 可以在SGA中中創(chuàng)建多個緩緩沖池,能夠夠用多個緩沖沖池把大數(shù)據(jù)據(jù)集與其他的的應(yīng)用程序分分開,以減少少它們爭奪數(shù)數(shù)據(jù)塊緩存區(qū)區(qū)內(nèi)相同資源源的可能性。對對于創(chuàng)建的每每一個緩沖池池,都要規(guī)定定其LRU鎖鎖存器的大小小和數(shù)量。緩緩沖區(qū)的數(shù)量量必須至少比比LRU鎖存存器的數(shù)量多多50倍。創(chuàng)建緩沖池時,需需要規(guī)定保存存區(qū)(kee

37、epareaa)的大小和和再循環(huán)區(qū)(recyccleareea)的大小小。與SQLL共享池的保保留區(qū)一樣,保保存區(qū)保持條條目,而再循循環(huán)區(qū)則被頻頻繁地再循環(huán)環(huán)使用??梢砸酝ㄟ^BUFFFER_PPOOL_KKEEP參數(shù)數(shù)規(guī)定來保存存區(qū)的大小。例例如: 保存和再循環(huán)緩緩沖池的容量量減少了數(shù)據(jù)據(jù)塊緩沖存儲儲區(qū)中的可用用空間(通過過DB_BLLOCK_BBUFFERRS參數(shù)設(shè)置置)。對于使使用一個新緩緩沖池的表,通通過表的sttoragee子句中的bbufferr_pooll參數(shù)來規(guī)定定緩沖池的名名字。例如,如如果需要從內(nèi)內(nèi)存中快速刪刪除一個表,就就把它賦予RRECYCLLE池。缺省省池叫作DEEFA

38、ULTT,這樣就能能在以后用aalterttable命命令把一個表表轉(zhuǎn)移到DEEFAULTT池。2.后臺進程(BBackgrroung Proceess)數(shù)據(jù)庫的物理結(jié)結(jié)構(gòu)與內(nèi)存結(jié)結(jié)構(gòu)之間的交交互要通過后后臺進程來完完成。1、DBWR進進程:該進程程執(zhí)行將緩沖沖區(qū)寫入數(shù)據(jù)據(jù)文件,是負(fù)負(fù)責(zé)緩沖存儲儲區(qū)管理的一一個Oraccle后臺進進程。當(dāng)緩沖沖區(qū)中的一緩緩沖區(qū)被修改改,它被標(biāo)志志為“弄臟”,DBWRR的主要任務(wù)務(wù)是將“弄臟”的緩沖區(qū)寫寫入磁盤,使使緩沖區(qū)保持持“干凈”。由于緩沖沖存儲區(qū)的緩緩沖區(qū)填入數(shù)數(shù)據(jù)庫或被用用戶進程弄臟臟,未用的緩緩沖區(qū)的數(shù)目目減少。當(dāng)未未用的緩沖區(qū)區(qū)下降到很少少,以致用

39、戶戶進程要從磁磁盤讀入塊到到內(nèi)存存儲區(qū)區(qū)時無法找到到未用的緩沖沖區(qū)時,DBBWR將管理理緩沖存儲區(qū)區(qū),使用戶進進程總可得到到未用的緩沖沖區(qū)。Oracle采采用LRU(LLEAST RECENNTLY UUSED)算算法(最近最最少使用算法法)保持內(nèi)存存中的數(shù)據(jù)塊塊是最近使用用的,使I/O最小。在在下列情況預(yù)預(yù)示DBWRR 要將弄臟臟的緩沖區(qū)寫寫入磁盤:當(dāng)一個服務(wù)器進進程將一緩沖沖區(qū)移入“弄臟”表,該弄臟臟表達(dá)到臨界界長度時,該該服務(wù)進程將將通知DBWWR進行寫。該該臨界長度是是為參數(shù)DBB-BLOCCK-WRIITE-BAATCH的值值的一半。當(dāng)一個服務(wù)器進進程在LRUU表中查找DDB-BLO

40、OCK-MAAX-SCAAN-CNTT緩沖區(qū)時,沒沒有查到未用用的緩沖區(qū),它它停止查找并并通知DBWWR進行寫。出出現(xiàn)超時(每每次3秒),DDBWR 將將通知本身。當(dāng)當(dāng)出現(xiàn)檢查點點時,LGWWR將通知DDBWR.在在前兩種情況況下,DBWWR將弄臟表表中的塊寫入入磁盤,每次次可寫的塊數(shù)數(shù)由初始化參參數(shù)DB-BBLOCK- WRITTE-BATTCH所指定定。如果弄臟臟表中沒有該該參數(shù)指定塊塊數(shù)的緩沖區(qū)區(qū),DBWRR從LUR表表中查找另外外一個弄臟緩緩沖區(qū)。如果DBWR在在三秒內(nèi)未活活動,則出現(xiàn)現(xiàn)超時。在這這種情況下DDBWR對LLRU表查找找指定數(shù)目的的緩沖區(qū),將將所找到任何何弄臟緩沖區(qū)區(qū)寫入

41、磁盤。每每當(dāng)出現(xiàn)超時時,DBWRR查找一個新新的緩沖區(qū)組組。每次由DDBWR查找找的緩沖區(qū)的的數(shù)目是為寢寢化參數(shù)DBB-BLOCCK- WRRITE-BBATCH的的值的二倍。如如果數(shù)據(jù)庫空空運轉(zhuǎn),DBBWR最終將將全部緩沖區(qū)區(qū)存儲區(qū)寫入入磁盤。在出現(xiàn)檢查點時時,LGWRR指定一修改改緩沖區(qū)表必必須寫入到磁磁盤。DBWWR將指定的的緩沖區(qū)寫入入磁盤。在有些平臺上,一一個實例可有有多個DBWWR.在這樣樣的實例中,一一些塊可寫入入一磁盤,另另一些塊可寫寫入其它磁盤盤。參數(shù)DBB-WRITTERS控制制DBWR進進程個數(shù)。2、LGWR進進程:該進程程將日志緩沖沖區(qū)寫入磁盤盤上的一個日日志文件,它它

42、是負(fù)責(zé)管理理日志緩沖區(qū)區(qū)的一個Orracle后后臺進程。LLGWR進程程將自上次寫寫入磁盤以來來的全部日志志項輸出,LLGWR輸出出:當(dāng)用戶進程提提交一事務(wù)時時寫入一個提提交記錄。 每三秒將日志志緩沖區(qū)輸出出。 當(dāng)日志緩沖區(qū)區(qū)的1/3已已滿時將日志志緩沖區(qū)輸出出。 當(dāng)DBWR將將修改緩沖區(qū)區(qū)寫入磁盤時時則將日志緩緩沖區(qū)輸出。LGWR進程同同步地寫入到到活動的鏡象象在線日志文文件組。如果果組中一個文文件被刪除或或不可用,LLGWR可繼繼續(xù)地寫入該該組的其它文文件。日志緩沖區(qū)是一一個循環(huán)緩沖沖區(qū)。當(dāng)LGGWR將日志志緩沖區(qū)的日日志項寫入日日志文件后,服服務(wù)器進程可可將新的日志志項寫入到該該日志緩沖

43、區(qū)區(qū)。LGWRR 通常寫得得很快,可確確保日志緩沖沖區(qū)總有空間間可寫入新的的日志項。注意:有時候當(dāng)當(dāng)需要更多的的日志緩沖區(qū)區(qū)時,LWGGR在一個事事務(wù)提交前就就將日志項寫寫出,而這些些日志項僅當(dāng)當(dāng)在以后事務(wù)務(wù)提交后才永永久化。ORACLE使使用快速提交交機制,當(dāng)用用戶發(fā)出COOMMIT語語句時,一個個COMMIIT記錄立即即放入日志緩緩沖區(qū),但相相應(yīng)的數(shù)據(jù)緩緩沖區(qū)改變是是被延遲,直直到在更有效效時才將它們們寫入數(shù)據(jù)文文件。當(dāng)一事事務(wù)提交時,被被賦給一個系系統(tǒng)修改號(SSCN),它它同事務(wù)日志志項一起記錄錄在日志中。由由于SCN記記錄在日志中中,以致在并并行服務(wù)器選選項配置情況況下,恢復(fù)操操作可

44、以同步步。3、CKPT進進程:該進程程在檢查點出出現(xiàn)時,對全全部數(shù)據(jù)文件件的標(biāo)題進行行修改,指示示該檢查點。在在通常的情況況下,該任務(wù)務(wù)由LGWRR執(zhí)行。然而而,如果檢查查點明顯地降降低系統(tǒng)性能能時,可使CCKPT進程程運行,將原原來由LGWWR進程執(zhí)行行的檢查點的的工作分離出出來,由CKKPT進程實實現(xiàn)。對于許許多應(yīng)用情況況,CKPTT進程是不必必要的。只有有當(dāng)數(shù)據(jù)庫有有許多數(shù)據(jù)文文件,LGWWR在檢查點點時明顯地降降低性能才使使CKPT運運行。 CKKPT進程不不將塊寫入磁磁盤,該工作作是由DBWWR完成的。初初始化參數(shù)CCHECKPPOINT-PROCEESS控制CCKPT進程程的使能或

45、使使不能。缺省省時為FALLSE,即為為使不能。 由于OOraclee中LGWRR和DBWRR工作的不一一致,Oraacle引入入了檢查點的的概念,用于于同步數(shù)據(jù)庫庫,保證數(shù)據(jù)據(jù)庫的一致性性。在Oraacle里面面,檢查點分分為兩種:完完全檢查點和和增量檢查點點。下面我們們分別介紹這這兩種檢查點點的作用:1、完全檢查點點 在Orracle88i之前,數(shù)數(shù)據(jù)庫的發(fā)生生的檢查點都都是完全檢查查點,完全檢檢查點會將數(shù)數(shù)據(jù)緩沖區(qū)里里面所有的臟臟數(shù)據(jù)塊寫入入相應(yīng)的數(shù)據(jù)據(jù)文件中,并并且同步數(shù)據(jù)據(jù)文件頭和控控制文件,保保證數(shù)據(jù)庫的的一致。完全全檢查點在88i之后只有有在下列兩種種情況下才會會發(fā)生:(1)DB

46、A手手工執(zhí)行allter ssystemm checckpoinnt的命令;(2)數(shù)據(jù)庫正正常shuttdown(iimmediiate,ttransccationnal,noormal)。由于完全檢查點點會將所有的的臟數(shù)據(jù)庫塊塊寫入,巨大大的IO往往往會影響到數(shù)數(shù)據(jù)庫的性能能。因此Orracle從從8i開始引引入了增量檢檢查點的概念念。2、 增量檢查查點Oracle從從8i開始引引入了檢查點點隊列這么一一種概念,用用于記錄數(shù)據(jù)據(jù)庫里面當(dāng)前前所有的臟數(shù)數(shù)據(jù)塊的信息息,DBWRR根據(jù)這個隊隊列而將臟數(shù)數(shù)據(jù)塊寫入到到數(shù)據(jù)文件中中。檢查點隊隊列按時間先先后記錄著數(shù)數(shù)據(jù)庫里面臟臟數(shù)據(jù)塊的信信息,里面的

47、的條目包含RRBA(Reedo Bllock AAddresss,重做日日志里面用于于標(biāo)識檢查點點期間數(shù)據(jù)塊塊在重做日志志里面第一次次發(fā)生更改的的編號)和數(shù)數(shù)據(jù)塊的數(shù)據(jù)據(jù)文件號和塊塊號。在檢查查點期間不論論數(shù)據(jù)塊更改改幾次,它在在檢查點隊列列里面的位置置始終保持不不變,檢查點點隊列也只會會記錄它最早早的RBA,從從而保證最早早更改的數(shù)據(jù)據(jù)塊能夠盡快快寫入。當(dāng)DDBWR將檢檢查點隊列里里面的臟數(shù)據(jù)據(jù)塊寫入到數(shù)數(shù)據(jù)文件后,檢檢查點的位置置也要相應(yīng)地地往后移,CCKPT每三三秒會在控制制文件中記錄錄檢查點的位位置,以表示示Instaance RRecoveery時開始始恢復(fù)的日志志條目,這個個概念稱

48、為檢檢查點的“心跳”(hearrtbeatt)。檢查點點位置發(fā)生變變更后,Orracle里里面通過4個個參數(shù)用于控控制檢查點位位置和最后的的重做日志條條目之間的距距離。在這里里面需要指出出的是,多數(shù)數(shù)人會將這44個參數(shù)看作作控制增量檢檢查點發(fā)生的的時間。事實實上這是錯誤誤的,這4個個參數(shù)是用于于控制檢查點點隊列里面的的條目數(shù)量,而而不是控制檢檢查點的發(fā)生生。(1)fastt_starrt_io_targeet該參數(shù)用于表示示數(shù)據(jù)庫發(fā)生生Instaance RRecoveery的時候候需要產(chǎn)生的的IO總數(shù),它它通過v$ffilesttat的AVVGIOTIIM來估算的的。比如我們們一個數(shù)據(jù)庫庫在

49、發(fā)生Innstancce Craash后需要要在10分鐘鐘內(nèi)恢復(fù)完畢畢,假定OSS的IO每秒秒為500個個,那么這個個數(shù)據(jù)庫發(fā)生生Instaance RRecoveery的時候候大概將產(chǎn)生生500*110*60=30,0000次IO,也也就是我們將將可以把faast_sttart_iio_tarrget設(shè)置置為300000。(2)fastt_starrt_mtttr_tarrget我們從上面可以以看到fasst_staart_ioo_targget來估算算檢查點位置置比較麻煩。OOraclee為了簡化這這個概念,從從9i開始引引入了fasst_staart_mtttr_taarget這這么一個

50、參數(shù)數(shù),用于表示示數(shù)據(jù)庫發(fā)生生Instaance RRecoveery的時間間,以秒為單單位。這個參參數(shù)我們從字字面上也比較較好理解,其其中的mtttr是meaan timme to recovvery的簡簡寫,如上例例中的情況我我們可以將ffast_sstart_mttr_targeet設(shè)置為6600。當(dāng)設(shè)設(shè)置了fasst_staart_mtttr_taarget后后,fastt_starrt_io_targeet這個參數(shù)數(shù)將不再生效效,從9i后后fast_startt_io_ttargett這個參數(shù)被被Oraclle廢除了。(3)log_checkkpointt_timeeout該參數(shù)用于表示示檢查點位置置和重做日志志文件末尾之之間的時間間間隔,以秒為為單位,默認(rèn)認(rèn)情況下是11800秒。(4)log_checkkpointt_inteerval該參數(shù)是表示檢檢查點位置和和重做日志末末尾的重做日日志塊的數(shù)量量,以O(shè)S塊塊表示。(5)90% OF SMMALLESST REDDO LOGG除了以上4個初初始化參數(shù)外外,Oraccle內(nèi)部事事實上還將重重做日志文件件末尾前面990%的位置置設(shè)為檢查點點位置。在每每個重做日志志中,這么幾幾個參數(shù)指定定的位置可能能不盡相同,OOraclee將離日志文文件末尾最近近的那個位置置確認(rèn)為檢查查點位置。4、SM

溫馨提示

  • 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

提交評論