Oracle體系結(jié)構(gòu)培訓(xùn)課件(ppt 7)_第1頁
Oracle體系結(jié)構(gòu)培訓(xùn)課件(ppt 7)_第2頁
Oracle體系結(jié)構(gòu)培訓(xùn)課件(ppt 7)_第3頁
Oracle體系結(jié)構(gòu)培訓(xùn)課件(ppt 7)_第4頁
Oracle體系結(jié)構(gòu)培訓(xùn)課件(ppt 7)_第5頁
已閱讀5頁,還剩71頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1,第3章Oracle體系結(jié)構(gòu),2,數(shù)據(jù)庫和實例,Oracle數(shù)據(jù)庫服務(wù)器由數(shù)據(jù)庫和實例組成。在Oracle中,數(shù)據(jù)庫是靜態(tài)的,是以文件的形式存在的,是文件的集合。實例是有關(guān)數(shù)據(jù)庫管理和控制的一系列進程,以及他們共享的系統(tǒng)全局區(qū)SGA,3,Oracle結(jié)構(gòu)圖,Oracle數(shù)據(jù)庫服務(wù)器,實例,數(shù)據(jù)庫,Oracle進程,SGA區(qū),后臺進程,物理存儲,邏輯存儲,數(shù)據(jù)文件控制文件日志文件,初始化文件密碼文件歸檔文件,表空間,段,區(qū),塊,服務(wù)進程,4,訪問Oracle數(shù)據(jù)庫,當(dāng)客戶應(yīng)用或工程程序要訪問Oracle數(shù)據(jù)庫時,必須首先連接到OracleServer,然后才能訪問數(shù)據(jù)庫數(shù)據(jù)。當(dāng)在Sql*Plus中鍵入用戶名、口令和網(wǎng)絡(luò)連接串之后,就可以連接到OracleServer了,此時會在客戶端啟動對應(yīng)于Sql*Plus應(yīng)用進程,該進程稱為“用戶進程”,同時在服務(wù)器端OracleServer會自動為該用戶進程派生一個新的進程,該進程為服務(wù)器進程。,5,當(dāng)客戶端運行SQL語句時,用戶進程會通過網(wǎng)絡(luò)將該SQL語句發(fā)送到對應(yīng)的服務(wù)器進程,并且由服務(wù)器進程執(zhí)行該SQL語句,服務(wù)器進程在執(zhí)行了SQL語句之后,會將SQL語句的結(jié)果通過網(wǎng)絡(luò)發(fā)送到用戶進程??蛻舳说乃蠸QL操作都是由服務(wù)器進程來執(zhí)行的。,6,數(shù)據(jù)庫操作模式,專用服務(wù)器為每個連接到實例的用戶進程啟動一個專門的服務(wù)進程。共享服務(wù)器當(dāng)用戶程序向系統(tǒng)發(fā)出請求時,監(jiān)聽器分配一個負荷最輕的調(diào)度進程來處理用戶請求。,7,Oracle結(jié)構(gòu)圖,Oracle數(shù)據(jù)庫服務(wù)器,實例,數(shù)據(jù)庫,Oracle進程,SGA區(qū),后臺進程,服務(wù)進程,物理存儲,邏輯存儲,數(shù)據(jù)文件控制文件日志文件,初始化文件密碼文件歸檔文件,表空間,段,區(qū),塊,8,請大家看一下書上2.2Oracle內(nèi)存結(jié)構(gòu),9,Oracle內(nèi)存結(jié)構(gòu),內(nèi)存是Oracle重要的信息緩存和共享區(qū)域,主要存儲執(zhí)行的程序代碼、連接的會話信息以及程序執(zhí)行期間所需數(shù)據(jù)和共享的信息等。Oracle使用的主要內(nèi)存結(jié)構(gòu)包括系統(tǒng)全局區(qū)SGA和程序全局區(qū)PGA。,10,SGA區(qū),11,數(shù)據(jù)高速緩存,保存最近從數(shù)據(jù)文件中讀取的數(shù)據(jù)塊。分為臟緩存塊、空閑緩存塊和命中緩存塊三類。臟緩沖塊:當(dāng)執(zhí)行INSERT、UPDATE以及DELETE操作時,服務(wù)器進程修改數(shù)據(jù)高速緩存的相應(yīng)數(shù)據(jù),此時緩沖區(qū)的內(nèi)容與數(shù)據(jù)文件中的內(nèi)容不一致。,12,當(dāng)用戶第一次提出數(shù)據(jù)查詢請求時,Oracle會首先在數(shù)據(jù)高速緩存中尋找該數(shù)據(jù)。如找到,系統(tǒng)就直接對它們進行處理。如找不到,系統(tǒng)首先在數(shù)據(jù)高速緩存中查找空閑數(shù)據(jù)塊,然后將數(shù)據(jù)庫文件中的數(shù)據(jù)讀入空閑塊處理,如搜索了一定的數(shù)據(jù)塊后仍找不到空閑塊,由后臺進程DBWR將內(nèi)存中部分修改過的數(shù)據(jù)寫入文件,以騰出空間。,數(shù)據(jù)高速緩存,13,重做日志緩沖區(qū),重做日志緩沖區(qū)用于緩存數(shù)據(jù)庫重做日志記錄,以便數(shù)據(jù)庫損毀時可以進行必要的恢復(fù)。重做日志緩存是一個循環(huán)緩存區(qū),在使用時從頂端向低端寫入數(shù)據(jù),然后再返回到緩沖區(qū)的起點循環(huán)寫入。,14,共享池,共享池相當(dāng)于程序高速緩沖區(qū),所有的用戶程序都放在共享池中。當(dāng)用戶將SQL指令發(fā)送至Oracle,系統(tǒng)首先解析語法是否正確。解析時所需的系統(tǒng)信息,以及解析后的結(jié)果將存放在共享池內(nèi)。所以當(dāng)不同用戶執(zhí)行相同SQL指令時,可以共享已解析好的結(jié)果。,15,共享池,共享池庫緩存數(shù)據(jù)字典緩存庫緩存共享SQL區(qū)PL/SQL域鎖閂數(shù)據(jù)字典緩沖區(qū)存放數(shù)據(jù)字典信息。,16,程序全局區(qū)PGA:ProgramGlobalArea,PGA是單個Oracle進程(包括服務(wù)器進程和后臺進程)使用的內(nèi)存區(qū)域,不屬于實例的內(nèi)存結(jié)構(gòu)。PGA含有單個進程工作時需要的數(shù)據(jù)和控制信息,PGA是非共享的,只有服務(wù)進程本身才能夠訪問它自己的PGA區(qū)。,17,PGA,PGA為指定進程專用.當(dāng)用戶連接服務(wù)器并建立會話時,Oracle為其分配一個PGA。,18,PGA,PGA包括私有SQL區(qū)會話內(nèi)存區(qū)排序區(qū),19,Oracle結(jié)構(gòu)圖,Oracle數(shù)據(jù)庫服務(wù)器,實例,數(shù)據(jù)庫,Oracle進程,SGA區(qū),后臺進程,服務(wù)進程,物理存儲,邏輯存儲,數(shù)據(jù)文件控制文件日志文件,初始化文件密碼文件歸檔文件,表空間,段,區(qū),塊,20,后臺進程,數(shù)據(jù)庫寫進程DBWR(DatebaseWriter)日志寫進程LGWR(LogWriter)檢查點進程CKPT(CheckpointProcess)系統(tǒng)監(jiān)控進程SMON(SystemMonitor)進程監(jiān)控進程PMON(ProcessMonitor),21,請大家看一下書上2.3Oracle進程,22,數(shù)據(jù)庫寫進程(DBWn/DBWR),DBWn進程負責(zé)將數(shù)據(jù)庫緩存中的臟緩存塊寫入數(shù)據(jù)文件中。在出現(xiàn)以下情況時,DBWn開始工作系統(tǒng)發(fā)出檢查點(checkpoint)。臟緩沖區(qū)個數(shù)達到指定閾值。服務(wù)器進程不能找到自由緩沖區(qū)。,23,DBWn,DBWR,24,日志寫進程(LGWR),當(dāng)運行DML(INSERT、UPDATE、DELETE)或DDL(CREATE、ALTER、DROP)語句時,服務(wù)器進程首先將事務(wù)變化記載到重做日志緩沖區(qū),然后才會將數(shù)據(jù)寫入到數(shù)據(jù)高速緩存的相應(yīng)緩沖區(qū),并且重做日志緩沖區(qū)的內(nèi)容將會被寫入到重做日志文件中,以避免系統(tǒng)出現(xiàn)意外所帶來的數(shù)據(jù)損失。,25,LGWR,重做日志緩存循環(huán)使用。LGWR在以下幾種情況下發(fā)生:在DBWR將臟數(shù)據(jù)寫入數(shù)據(jù)文件之前。重做日志緩沖區(qū)已有三分之一填滿。每隔3秒鐘。提交事務(wù)。重做日志記錄大小到1,26,思考,Oracle總是盡量將用戶“最常使用的數(shù)據(jù)”保留在緩沖區(qū)內(nèi),以提高數(shù)據(jù)存取的效率。那么,如果僅將最不常用的數(shù)據(jù)寫至數(shù)據(jù)文件,那么這些“經(jīng)常使用”的數(shù)據(jù)反而沒機會存回硬盤?,Oracle系統(tǒng)使用檢查點進程(CKPT)定時觸發(fā)一次更新數(shù)據(jù)文件的操作。,27,檢查點進程(CKPT),CKPT進程負責(zé)向數(shù)據(jù)庫發(fā)出檢查點,檢查點用于同步數(shù)據(jù)庫的所有數(shù)據(jù)文件、控制文件和重做日志。,28,SCN(SystemChangeNumber),當(dāng)運行Insert、Update、Delete以及其他涉及到數(shù)據(jù)庫變化的語句時,Oracle會針對任何修改生成順序遞增的SCN值,并將該SCN值連同事務(wù)變化一起記載到重做日志緩沖區(qū)。SCN是用于記載數(shù)據(jù)庫變化的唯一標(biāo)識號,永遠不會用盡。假定Update之前的SCN為100000,當(dāng)執(zhí)行了Update之后有三個數(shù)據(jù)塊發(fā)生變化,則SCN會增加為100003。,29,CKPT工作原理,當(dāng)Oracle發(fā)出檢查點時,系統(tǒng)會將檢查點時刻的SCN值寫入到控制文件和數(shù)據(jù)文件頭部,同時還會促使DBWR進程將所有臟緩沖區(qū)寫入到數(shù)據(jù)文件中。,30,檢查點工作機制,在DBWR進程工作之前,LGWR進程首先將重做日志緩沖區(qū)內(nèi)容寫入到重做日志文件,即該時刻的SCN值會被寫入重做日志。當(dāng)CKPT進程工作的時候,會將當(dāng)前時刻的SCN值寫入數(shù)據(jù)文件和控制文件。在發(fā)出檢查點時刻,數(shù)據(jù)文件、控制文件和重做日志的SCN值完全一致。,31,系統(tǒng)恢復(fù),當(dāng)運行OracleServer時,在訪問數(shù)據(jù)文件、控制文件和重做日志時,Oracle會定期檢查并比較每種文件的SCN值,確定文件是否損壞、系統(tǒng)是否出現(xiàn)異常,最終確定系統(tǒng)是否需要進行恢復(fù)。,32,思考,假定某用戶執(zhí)行了“insertintoDEPTvalues(50,SALES,BeiJing)”和”COMMIT”操作后,突然意外斷電,那么事務(wù)變化記載到了哪種文件中?控制文件和數(shù)據(jù)文件的SCN值是否一致?控制文件和重做日志的SCN值是否一致?,33,分析,在執(zhí)行COMMIT操作時,后臺進程LGWR要開始工作,所以事務(wù)變化被記載到重做日志中。因為只有在發(fā)出檢查點時,才會將SCN值寫入控制文件和數(shù)據(jù)文件頭部,所以控制文件和數(shù)據(jù)文件的SCN值保持一致,并且存放的是先前檢查點的SCN值。控制文件和數(shù)據(jù)文件的SCN值一致,與重做日志不一致!,34,SMON,如果數(shù)據(jù)庫未正常關(guān)閉,文件中數(shù)據(jù)不同步。因為最近檢查點SCN到COMMIT時間點SCN之間的事務(wù)變化都被記載到了重做日志中,所以在重新打開數(shù)據(jù)庫之前,Oracle會自動執(zhí)行這兩個時間點之間的事務(wù)操作,并同步所有數(shù)據(jù)文件、控制文件和重做日志文件,然后才會打開數(shù)據(jù)庫。該過程被稱為應(yīng)急恢復(fù),正是由SMON完成的,SMON還負責(zé)在啟動實例時清理臨時段和合并區(qū)碎片。,35,一致性處理,如果數(shù)據(jù)文件、控制文件、重做日志的當(dāng)前SCN值完全一致,則系統(tǒng)會直接打開所有數(shù)據(jù)文件和重做日志。如果控制文件和數(shù)據(jù)文件的當(dāng)前SCN值完全一致,并小于重做日志的當(dāng)前SCN值,則需要進行實例恢復(fù)。如果控制文件和數(shù)據(jù)文件的當(dāng)前SCN值不匹配,則表示數(shù)據(jù)文件或控制文件存在損壞,此時需要進行介質(zhì)恢復(fù),以恢復(fù)損壞文件。,36,思考,假定你在客戶端運行SQL*PLUS訪問OracleServer,那么Oracle將在服務(wù)器端分配相應(yīng)的服務(wù)器進程。假如你正常退出了SQL*PLUS或該進程出現(xiàn)了意外情況,那么Oracle會如何處理服務(wù)器進程呢?,系統(tǒng)當(dāng)然要釋放服務(wù)器進程所占用的資源。,37,PMON,Oracle如何確定用戶進程是處于連接狀態(tài)、斷開連接還是異常狀態(tài)?,這個任務(wù)由PMON來完成。,資源回收(鎖、SGA、PGA)狀態(tài)恢復(fù)(將用戶的操作回退到最近一次事務(wù)提交時的狀態(tài)),38,一個典型的獨立型Oracle實例,39,一個并行的Oracle服務(wù)器實例(OracleParallelServer),40,Oracle結(jié)構(gòu)圖,Oracle數(shù)據(jù)庫服務(wù)器,實例,數(shù)據(jù)庫,Oracle進程,SGA區(qū),后臺進程,服務(wù)進程,物理存儲,邏輯存儲,數(shù)據(jù)文件控制文件日志文件,初始化文件密碼文件歸檔文件,表空間,段,區(qū),塊,41,請大家看一下書上3.1Oracle數(shù)據(jù)庫的物理結(jié)構(gòu),42,Oracle數(shù)據(jù)庫物理存儲結(jié)構(gòu),Oracle數(shù)據(jù)庫在物理上是存儲于硬盤的各種文件。它是活動的,可擴充的,隨著數(shù)據(jù)的添加和應(yīng)用程序的增大而變化。,43,數(shù)據(jù)文件,Oracle數(shù)據(jù)庫模式對象中的所有數(shù)據(jù)均存儲在數(shù)據(jù)文件中,也就是說,數(shù)據(jù)文件是Oracle數(shù)據(jù)庫的唯一物理存儲對象,所以每個Oracle數(shù)據(jù)庫至少由一個數(shù)據(jù)文件組成。數(shù)據(jù)文件用來存儲數(shù)據(jù)庫中的全部數(shù)據(jù),如數(shù)據(jù)庫表中的數(shù)據(jù)和索引數(shù)據(jù)。數(shù)據(jù)文件通常是后綴名為.dbf格式的文件。,44,數(shù)據(jù)文件,數(shù)據(jù)文件實際上是一個操作系統(tǒng)文件,這些文件中的數(shù)據(jù)格式是只有Oracle數(shù)據(jù)庫系統(tǒng)才能夠正確識別的二進制格式。,45,數(shù)據(jù)文件,Oracle數(shù)據(jù)庫至少要包含一個數(shù)據(jù)文件,并且數(shù)據(jù)文件是表空間的物理組成元素,一個表空間可以包含多個數(shù)據(jù)文件,并且每個數(shù)據(jù)文件只能唯一地屬于某個表空間。,數(shù)據(jù)庫,SYSTEM表空間,表空間一,表空間二,數(shù)據(jù)文件,邏輯組成,物理組成,46,重做日志文件,重做日志是用于記錄數(shù)據(jù)庫變化的物理文件,其目的是為了在出現(xiàn)意外時恢復(fù)Oracle數(shù)據(jù)庫,數(shù)據(jù)庫至少要包含2個重做日志組,并且這些重做日志組是循環(huán)使用的。,日志組一,日志組二,日志組三,47,歸檔,當(dāng)數(shù)據(jù)庫處于ARCHIVELOG(自動歸檔)模式時,在進行日志切換時,Oracle會自動將重做日志內(nèi)容復(fù)制到歸檔日志中。,48,多元化重做日志,用戶可以為相同的日志文件建立一個文件組,將同一個文件組中的文件放在不同的磁盤上建立一些副本。,LOG1A,LOG2A,LOG1B,LOG2B,磁盤A,磁盤B,LGWR,日志組1,日志組2,49,控制文件,每個Oracle數(shù)據(jù)庫都有一個控制文件(名字通常為Ctr*.ctl格式),用以記錄與描述數(shù)據(jù)庫的物理結(jié)構(gòu),包括以下信息:Oracle數(shù)據(jù)庫名稱與建立時間。數(shù)據(jù)文件與重做日志文件名稱及所在位置。日志記錄序列號(logsequencenumber)。數(shù)據(jù)庫檢查點信息。,50,數(shù)據(jù)庫的數(shù)據(jù)文件和重做日志文件均是一些操作系統(tǒng)文件,Oracle在操作數(shù)據(jù)庫時,怎樣將指定數(shù)據(jù)庫中的這些文件同普通的操作系統(tǒng)文件和其他數(shù)據(jù)庫文件區(qū)分開來,這正是數(shù)據(jù)庫控制文件的功能。如果把數(shù)據(jù)文件比作一個倉庫,那么重做日志文件就相當(dāng)于該倉庫的貨物進出記錄賬本,控制文件就是該倉庫的管理中心。,控制文件,51,Oracle結(jié)構(gòu)圖,Oracle數(shù)據(jù)庫服務(wù)器,實例,數(shù)據(jù)庫,Oracle進程,SGA區(qū),后臺進程,服務(wù)進程,物理存儲,邏輯存儲,數(shù)據(jù)文件控制文件日志文件,初始化文件密碼文件歸檔文件,表空間,段,區(qū),塊,52,Oracle數(shù)據(jù)庫的邏輯結(jié)構(gòu),邏輯上,數(shù)據(jù)庫是由一個或多個表空間組成的,并且一個表空間只能屬于一個數(shù)據(jù)庫。物理上,表空間又是由一個或多個數(shù)據(jù)文件組成的。,表空間1,表空間2,表空間1,Oracle邏輯結(jié)構(gòu),Oracle物理結(jié)構(gòu),53,Oracle邏輯結(jié)構(gòu),邏輯,物理,54,表空間(Tablespace),如果將圖書館比喻為數(shù)據(jù)庫的話,那么可以將圖書館的每個書架看作為表空間類似于書架,不同表空間將用于存放不同類型的數(shù)據(jù)。,55,表空間的類型,系統(tǒng)表空間回滾表空間臨時表空間用戶表空間索引表空間用戶創(chuàng)建的表空間,56,表空間的作用1,能夠?qū)?shù)據(jù)字典與用戶數(shù)據(jù)分離。能夠?qū)⒒赝藬?shù)據(jù)與用戶數(shù)據(jù)分離,避免由于硬盤損壞而帶來的永久性數(shù)據(jù)丟失。能夠?qū)⒈砜臻g的數(shù)據(jù)文件分散保存到不同的硬盤上,平均分布物理I/O操作。,57,能夠?qū)⒛硞€表空間設(shè)置為脫機狀態(tài)或聯(lián)機狀態(tài),以便對數(shù)據(jù)庫的一部分進行備份和恢復(fù)。能夠為某種特殊用途專門設(shè)置一個表空間,如臨時表空間,以優(yōu)化表空間的使用效率。能夠更加靈活地為用戶設(shè)置表空間限額。,表空間的作用2,58,Oracle邏輯結(jié)構(gòu),邏輯,物理,59,段(segment),段用于存儲特定邏輯結(jié)構(gòu)的所有數(shù)據(jù)。當(dāng)建立數(shù)據(jù)對象(表、索引、簇等)時,Oracle會自動給這些數(shù)據(jù)對象分配相應(yīng)的存儲控件,以存放它們的數(shù)據(jù)信息。在一個表空間上可以包含一個或多個段,一個段只能存放在一個表空間上,并且段是由一個或多個區(qū)組成的。,60,段的類型,根據(jù)段中存儲的模式對象不同,段分為以下幾類:數(shù)據(jù)段:保存數(shù)據(jù)表中的記錄。索引段:當(dāng)執(zhí)行CREATEINDEX語句時,Oracle自動創(chuàng)建索引段。臨時段:在執(zhí)行查詢、排序、創(chuàng)建索引等操作時,Oracle使用臨時段保存臨時數(shù)據(jù)。回滾段:用于存放數(shù)據(jù)修改之前的值。,61,Oracle邏輯結(jié)構(gòu),邏輯,物理,62,區(qū)(Extent),區(qū)由連續(xù)的數(shù)據(jù)塊組成,它是Oracle空間分配的邏輯單元。Oracle為段分配空間是以區(qū)為單位進行分配的。例如:當(dāng)建立表EMP時,Oracle會為該表建立相應(yīng)的表段EMP,假定初始時該表段只包含一個區(qū)(1M),那么當(dāng)數(shù)據(jù)占滿1M空間之后,再插入數(shù)據(jù)時,Oracle會自動擴展該段,并為其分配第二個區(qū)。,63,Oracle邏輯結(jié)構(gòu),邏輯,物理,64,數(shù)據(jù)塊(DataBlock),數(shù)據(jù)塊也稱為Oracle塊,它是Oracle在數(shù)據(jù)文件上執(zhí)行I/O操作的最小單位。例子:假定某用戶執(zhí)行”SELECT*FROMempWHEREempno=7788”只會返回100B的數(shù)據(jù),而數(shù)據(jù)塊尺寸為2KB,那么Oracle讀取多少數(shù)據(jù)到數(shù)據(jù)高速緩存呢?,2KB,65,Oracle結(jié)構(gòu)圖,Oracle數(shù)據(jù)庫服務(wù)器,實例,數(shù)據(jù)庫,Oracle進程,SGA區(qū),后臺進程,服務(wù)進程,物理存儲,邏輯存儲,數(shù)據(jù)文件控制文件日志文件,初始化文件密碼文件歸檔文件,表空間,段,區(qū),塊,66,企業(yè)管理器(OracleEnterpriseManager),企業(yè)管理器(OEM)是Oracle為管理用戶提供的可視化管理工具,該工具幾乎包含了對數(shù)據(jù)庫對象的所有管理.,67,OEM體系結(jié)構(gòu),OracleManagement,OracleManagement,Repository,Oracle,Agent,Oracle,Agent,Oracle,Agent,WebBrowser,Console,Console,68,OEM三層結(jié)構(gòu)-1,第一層客戶端工具,如OEMConsol

溫馨提示

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

評論

0/150

提交評論