數據庫實例概述_第1頁
數據庫實例概述_第2頁
數據庫實例概述_第3頁
數據庫實例概述_第4頁
數據庫實例概述_第5頁
已閱讀5頁,還剩48頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第7章數據庫實例本章內容Oracle實例概述Oracle內存結構Oracle后臺進程本章要求掌握Oracle實例基本概念掌握Oracle實例的內存結構、功能及管理了解Oracle進程分類及其作用掌握Oracle后臺進程、功能及管理7.1實例概述Oracle實例的概念Oracle數據庫主要由放在磁盤中的物理數據庫和對物理數據庫進行管理的數據庫管理系統。其中數據庫管理系統是處于用戶與物理數據庫之間的一個中間層軟件,又稱為實例,由一系列內存結構和后臺進程組成。在啟動數據庫時,Oracle首先在內存中獲取一定的空間,啟動各種用途的后臺進程,即創建一個數據庫實例,然后由實例裝載數據文件和重做日志文件,最后打開數據庫。用戶操作數據庫的過程實質上是與數據庫實例建立連接,然后通過實例來連接、操作數據庫的過程。數據庫與實例的關系單實例數據庫系統多實例數據庫系統實例組成內存結構:系統全局區(SGA)和程序全局區(PGA)后臺進程組成

處理數據的內存結構實例

后臺進程

客戶應用程序

服務器進程

數據庫實例SGA日志緩存共享池數據字典緩沖區庫緩沖區DBWRSMONPMONCKPTLGWROthers用戶進程服務器進程PGA控制文件數據文件歸檔日志文件參數文件口令文件重做日志文件數據庫數據庫緩存7.2Oracle內存結構系統全局區(SystemGlobalArea,SGA)程序全局區(ProgramGlobalArea,PGA)SGASGA是由Oracle分配的共享內存結構,包含一個數據庫實例共享的數據和控制信息。當多個用戶同時連接同一個實例時,SGA數據可供多個用戶共享,SGA又稱為共享全局區(SharedGlobalArea)。用戶對數據庫的各種操作主要在SGA中進行。該內存區隨數據庫實例的創建而分配,隨實例的終止而釋放。PGAPGA是在用戶進程連接數據庫、創建一個會話時,由Oracle為用戶分配的內存區域,保存當前用戶私有的數據和控制信息,因此該區又稱為私有全局區(PrivateGlobalArea)。每個服務器進程只能訪問自己的PGA,所有服務器進程的PGA總和即為實例的PGA的大小。SGA包含的的內存存結構構有::數據高高速緩緩沖區區(DatabaseBufferCache)共享池池(SharedPool)重做日日志緩緩沖區區(RedoLogCache)大型池池(LargePool)Java池(JavaPool)流池((StreamsPool)其他結結構((如固固定SGA、鎖管管理等等)(1)數據據高速速緩沖沖區功能存儲從從數據據文件件中檢檢索出出來的的數據據拷貝貝。應應用程程序要要訪問問的數數據必必須從從磁盤盤的數數據文文件讀讀到數數據緩緩沖區區中處處理。。在數據據緩沖沖區中中被修修改后后的數數據由由數據據寫入入進程程寫到到硬盤盤的數數據文文件中中永久久保存存。提高獲獲取和和更新新數據據的性性能。。數據高高速緩緩沖區區的工工作過過程緩沖塊塊的類類型臟緩存存塊((DirtyBuffers)臟緩存存塊中中保存存的是是已經經被修修改過過的數數據。。當一一條SQL語句對某某個緩存存塊中的的數據進進行修改改后,這這個緩存存塊就被被標記為為臟緩存存塊。它它們最終終將由DBWR進程寫入入數據文文件,以以永久性性地保存存修改結結空閑緩存存塊(FreeBuffers)空閑緩存存塊中不不包含任任何數據據,它們們等待后后臺進程程或服務務器進程程向其中中寫入數數據。當當Oracle從數據文文件中讀讀取數據據時,將將會尋找找空閑緩緩存塊,,以便將將數據寫寫入其中中命中緩存存塊(PinnedBuffers)正被使用用,或者者被顯式式地聲明明為保留留的緩存存塊。這這些緩存存塊始終終保留在在數據高高速緩沖沖區中,,不會被被換出內內存。緩存塊的的管理臟緩存塊塊列表::包含那那些已經經被修改改但還沒沒有寫入入數據文文件的臟臟緩存塊塊。LRU列表(LeastRecentlyUsed):包含含所有的的空閑緩緩存塊、、命中緩緩存塊和和那些還還沒有來來得及移移入到臟臟緩存塊塊列表中中的臟緩緩存塊。。在該列列表中,,最近被被訪問的的緩存塊塊被移動動到列表表的頭部部,而其其他緩存存塊向列列表尾部部移動,,最近最最少被訪訪問的緩緩存塊最最先被移移出LRU列表,從從而保證證最頻繁繁使用的的緩存塊塊始終保保存在內內存中。。數據高速速緩沖區區大小數據高速速緩沖區區越大,,用戶需需要的數數據在內內存中的的可能性性就越大大,即緩緩存命中中率越高高,從而而減少了了Oracle訪問硬盤盤數據的的次數,,提高了了數據庫庫系統執執行的效效率。然然而,如如果數據據高速緩緩沖區的的值太大大,Oracle就不得不在內內存中尋找更更多的塊來定定位所需要的的數據,反而而降低了系統統性能。顯然然需要確定一一個合理的數數據高速緩沖沖區大小。DB_CACHE_SIZE(標準塊)(2)重做日志緩緩沖區功能重做日志緩沖沖區用于緩存存用戶對數據據庫進行修改改操作時生成成的重做記錄錄。為了提高工作作效率,重做做記錄并不是是直接寫入重重做日志文件件中,而是首首先被服務器器進程寫入重重做日志緩沖沖區中,在一一定條件下,,再由日志寫寫入進程(LGWR)把重做日志志緩沖區的內內容寫入重做做日志文件中中做永久性保保存。在歸檔檔模式下,當當重做日志切切換時,由歸歸檔進程(ARCH)將重做日志志文件的內容容寫入歸檔文文件中重做日志緩沖沖區的工作過過程重做日志緩沖沖區的大小LOG_BUFFER較大的重做日日志緩沖區,,可以減少對對重做日志文文件寫的次數數,適合長時時間運行的、、產生大量重重做記錄的事事務。(3)共享池池功能共享池用于緩緩存最近執行行過的SQL語句、PL/SQL程序和數據字字典信息,是是對SQL語句、PL/SQL程序進行語法法分析、編譯譯、執行的區區域。組成庫緩存庫緩存用于緩緩存已經解釋釋并執行過的的SQL語句和PL/SQL程序代碼,以以提高SQL或PL/SQL程序的執行效效率。包括SQL工作區和PL/SQL工作區數據字典緩存存區數據字典緩存存區保存最常常用的數據字字典信息共享池大小SHARED_POOL_SIZE合適的共享池池大小,可使使編譯過的程程序代碼長駐駐內存,大大大降低重復執執行相同的SQL語句、PL/SQL程序的系統開開銷,從而提提高數據庫的的性能。(4)大型池池功能大型池是一個個可選的內存存配置項,主主要為Oracle多線程服務器器、服務器I/O進程、數據庫庫備份與恢復復操作、執行行具有大量排排序操作的SQL語句、執行并并行化的數據據庫操作等需需要大量緩存存的操作提供供內存空間。。如果沒有在在SGA區中創建大型型池,上述操操作所需要的的緩存空間將將在共享池或或PGA中分配,因而而影響共享池池或PGA的使用效率。。大型池大小LARGE_POOL_SIZE(5)Java池功能Java提供對Java程序設計的支支持,用于存存儲Java代碼、Java語句的語法分分析表、Java語句的執行方方案和進行Java程序開發。Java池大小JAVA_POOL_SIZE通常不小于20M,以便安裝Java虛擬機(6)流池功能流池是一個可可選的內存配配置項,用于于對流的支持持。流池大小STREAMS_POOL_SIZE的管理SGA組件大小調整整DB_CACHE_SIZELOG_BUFFERSHARED_POOL_SIZELARGE_POOL_SIZEJava_POOL_SIZESTRAMS_POOL_SIZESGA_MAX_SIZE注意除了SGA_MAX_SIZE不能修改外外,其他幾幾個參數可可以使用ALTERSYSTEM語句進行動動態調整。。SGA自動管理在Oracle10g中,通過設設置初始化化參數SGA_TARGET,可以實現現對SGA中的數據高高速緩沖區區、共享池池、大型池池、Java池和流池的的自動管理理,即這幾幾個組件的的內存調整整不需要DBA來干預,系系統自動進進行調整。。但是對于于日志緩沖沖區、非標標準塊的數數據高速緩緩沖區、保保留池、回回收池等其其他區域的的調整還需需要DBA使用ALTERSYSTEM語句手動進進行調整。。設置SGA自動管理的的方法計算參數SGA_TARGET的大小SELECT((SELECTSUM(value)FROMV$SGA)-(SELECTCURRENT_SIZEFROMV$SGA_DYNAMIC_FREE_MEMORY))/1024/1024||'MB'"SGA_TARGET"FROMDUAL;設置參數SGA_TARGET通過ALTERSYSTEM語句設置參參數SGA_TARGET的值,該值值可以是((1)中計算出出來的結果果,也可以以是當前SGA大小與SGA_MAX_SIZE之間的某個個值。例如如將SGA中與自動管管理相關的的組件大小小設置為0ALTERSYSTEMSETSHARED_POOL_SIZE=0;SQL>ALTERSYSTEMSETLARGE_POOL_SIZE=0;SQL>ALTERSYSTEMSETJava_POOL_SIZE=0;SQL>ALTERSYSTEMSETLARGE_POOL_SIZE=0;SQL>ALTERSYSTEMSETSTREAMS_POOL_SIZE=0;如果要取消消自動管理理,只需將將參數SGA_TARGET設置為0即可。7.2.3PGA功能PGA是為每一個個與Oracle數據庫連接接的用戶保保留的內存存區,主要要存儲該連連接使用的的變量信息息和與用戶戶進程交換換的信息。。是非共享享的,只有有服務進程程本身才能能訪問它自自己的PGA區組成由排序區、、會話區、、游標區以以及堆棧區區組成排序區主要要用于存放放排序操作作所產生的的臨時數據據,其大小小由初始化化參數SORT_AREA_SIZE定義;會話話區用于保保存用戶會會話所具有有的權限、、角色、性性能統計信信息;游標標區用于存存放執行游游標操作時時所產生的的數據;堆堆棧區用于于保存會話話過程中的的綁定變量量、會話變變量等信息息。UserprocessStackspaceSessioninformationsortarea,cursorinformationSGASharedSQLareasSGASessioninformationPGADedicatedserverSharedserverServer

processSharedSQLareasStackspacesortarea,cursorinformation在OEM中管理數據據庫實例的的內存結構構7.3Oracle后臺進程Oracle進程概述Oracle后臺進程7.3.1Oracle進程概述進程的概念念進程是操作作系統中一一個獨立的的可以調度度的活動,,用于完成成指定的任任務。進程程與程序的的區別在于于:進程是動態態的概念,,即動態創創建,完成成任務后立立即消亡;;而程序是是一個靜態態實體。進程強調執執行過程,,而程序僅僅僅是指令令的有序集集合。進程的類型型用戶進程服務器進程程后臺進程用戶進程當用戶連接接數據庫執執行一個應應用程序時時,會創建建一個用戶戶進程,來來完成用戶戶所指定的的任務。服務器進程程服務器進程程由Oracle自身創建,,用于處理理連接到數數據庫實例例的用戶進進程所提出出的請求。。用戶進程程只有通過過服務器進進程才能實實現對數據據庫的訪問問和操作。。服務器進程程分為專用用服務器進進程和共享享服務器進進程兩種。。服務器進程程主要完成成以下任務務:解析并執行行用戶提交交的SQL語句和PL/SQL程序;在SGA的數據高速速緩沖區中中搜索用戶戶進程所要要訪問的數數據,如果果數據不在在緩沖區中中,則需要要從硬盤數數據文件中中讀取所需需的數據,,再將它們們復制到緩緩沖區中;;將用戶改變變數據庫的的操作信息息寫入日志志緩沖區中中。將查詢或執執行后的結結果數據返返回給用戶戶進程。后臺進程后臺進程作作用為了保證Oracle數據庫在任任意一個時時刻可以處處理多用戶戶的并發請請求,進行行復雜的數數據操作,,而且還要要優化系統統性能,Oracle數據庫起用用了一些相相互獨立的的附加進程程,稱為后后臺進程。。服務器進進程在執行行用戶進程程請求時,,調用后臺臺進程來實實現對數據據庫的操作作。后臺進程主主要完成以以下任務::在內存與磁磁盤之間進進行I/O操作;監視各個服服務器進程程狀態;協調各個服服務器進程程的任務;;維護系統性性能和可靠靠性等。后臺進程DBWR數據庫寫入入進程LGWR日志寫入進進程CKPT檢查點進程程SMON系統監控進進程PMON進程監控進進程ARCH歸檔檔進進程程RECO恢復復進進程程LCKn封鎖鎖進進程程Dnnn調度度進進程程Snnn共享享服服務務器器進進程程(1)DBWR(數據據庫庫寫寫入入進進程程)功能能::數據據庫庫寫寫入入進進程程負負責責把把數數據據高高速速緩緩沖沖區區中中已已經經被被修修改改過過的的數數據據((“臟”緩存存塊塊))成成批批寫寫入入數數據據文文件件中中永永久久保保存存,,同同時時使使數數據據高高速速緩緩沖沖區區有有更更多多的的空空閑閑緩緩存存塊塊,,保保證證服服務務器器進進程程將將所所需需要要的的數數據據從從數數據據文文件件讀讀取取到到數數據據高高速速緩緩沖沖區區中中,,提提高高緩緩存存命命中中率率。。InstanceSGADatabaseBuffer

CacheDBWnControlfilesDatafilesRedologfilesDatabase啟動動DBWR進程程執行行INSERT、UPDATE等操操作作時時,,沒沒有有足足夠夠的的空空閑閑塊塊當檢檢查查點點發發生生時時,,將將啟啟動動DBWR進程程當數數據據緩緩存存的的LRU列表表的的長長度度達達到到初初始始化化DB_BLOCK_WRITE_BATCH指定定值值的的一一半半時時若發發生生超超時時((大大約約3秒未未被被啟啟動動))LGWR(日日志志寫寫入入進進程程))功能能日志志寫寫入入進進程程負負責責把把重重做做日日志志緩緩沖沖區區的的數數據據寫寫入入重重做做日日志志文文件件中中永永久久保保存存。。數據據寫寫入入進進程程在在工工作作之之前前,,需需要要了了解解日日志志寫寫入入進進程程是是否否已已經經把把相相關關的的日日志志緩緩沖沖區區中中記記載載的的數數據據寫寫入入硬硬盤盤中中,,如如果果相相關關的的日日志志緩緩沖沖區區中中的的記記錄錄還還沒沒有有被被寫寫入入,,DBWR會通通知知LGWR完成成相相應應的的工工作作,,然然后后DBWR才開開始始寫寫入入。InstanceSGADBWnRedoLogBufferControlfilesDatafilesRedologfilesLGWRDatabase啟動LGWR進程用戶通過過COMMIT語句提交交當前事事務重做日志志緩存被被寫滿三三分之一一DBWR進程開始始將臟緩緩存塊寫寫入數據據文件每隔3秒,即發發生一次次超時,,將啟動動LGWR事務提交交機制快速提交交組提交CKPT(檢查點點進程))檢查點概概念檢查點是是一個事事件,當當該事件件發生時時(每隔隔一段時時間發生生),DBWR進程把數數據高速速緩沖區區中臟緩緩存塊寫寫入數據據文件中中,同時時Oracle將對數據據庫控制制文件和和數據文文件的頭頭部的同同步序號號進行更更新,以以記錄下下當前的的數據庫庫結構和和狀態,,保證數數據的同同步。InstanceSGADWW0RedoLogBufferLGWRInstanceSGADBWnLGWRCKPTControlfilesDatafilesRedologfilesCKPT進程的作作用更新控制制文件與與數據文文件的頭頭部,使使其同步步觸發DBWR進程,將將臟緩存存塊寫入入數據文文件檢查點的的級別數據庫檢檢查點::每一次次日志切切換時,,執行一一個數據據庫檢查查點,DBWR進程將數數據高速速緩沖區區中的臟臟緩存塊塊寫入數數據文件件中;表空間檢檢查點::當一個個表空間間設置為為脫機狀狀態時,,執行一一個表空空間檢查查點,DBWR進程把把數據據高速速緩存存中與與該表表空間間相關關的臟臟緩存存塊寫寫入數數據文文件中中。時間檢檢查點點:可可以設設置以以時間間為基基礎的的檢查查點,,每隔隔一段段時間間執行行一次次檢查查點。。需要要為檢檢查點點設置置一個個合適適的執執行間間隔,,間隔隔太短短,將將會產產生過過多的的硬盤盤I/O操作;;間隔隔太長長,數數據庫庫的恢恢復將將耗費費太多多時間間。檢查點點事件件的觸觸發每一個個日志志切換換時當實例例以如如下方方式關關閉時時NORMAL,TRANSACTION,IMMEDIATE當使用用ALTERTABLESPACE[OFFLINENORMAL|READONLY|BEGINBACKUP],作用用于某某個數數據文文件上上的檢檢查點點發生生時.設置以以時間間為基基礎的的檢查查點事事件當數據據庫管管理員員需要要手工工操作作時ALTERSYSTEMCHECKPOINT與檢查查點的的相關關初始始化參參數LOG_CHECKPOINT_INTERVAL用來指指定重重做日日志文文件每每寫多多少操操作系系統塊塊發生生一次次檢查查點事事件例如重重做日日志文文件1M,系統統操作作塊為為1K:設置置此參參數為為500,則重重做日日志文文件寫寫入500K時,檢檢查點點事件件發生生LOG_CHECKPOINT_TIMEOUT用來指指定每每隔多多長時時間發發生一一次檢檢查點點如1800,表示示每隔隔1800秒,如如果為為0,表示示此參參數無無效ELOG_CHECKPOINT_TO_ALERT用于設設置是是否將將檢查查點信信息記記錄到到警告告日志志中數數SMON(系統統監控控進程程)功能在實例例啟動動時負負責對對數據據庫進進行恢恢復;;回收不不再使使用的的臨時時空間間。將各個個表空空間的的空閑閑碎片片合并并(表表空間間的存存儲參參數PCTINCREASE不為0時)。。InstanceSGASMONControlfilesDatafilesRedologfilesInstanceSGASMONDatabasePMON(進程監控控進程)功能負責恢復失失敗的用戶戶進程或服服務器進程程,并且釋釋放進程所所占用的資資源;清除非正常常中斷的用用戶進程留留下的孤兒兒會話,

溫馨提示

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

評論

0/150

提交評論