




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第2章Oracle數據庫的體系結構第2章Oracle數據庫的體系結構12.1Oracle數據庫的物理存儲結構Oracle數據庫的物理存儲結構由存儲在磁盤中的操作系統文件組成。包括構成數據庫的各種物理文件,包括數據文件,控制文件,重演日志文件,歸檔重演日志文件,參數文件,警告、跟蹤日志文件和備份文件等。2.1Oracle數據庫的物理存儲結構Oracle數據庫2Oracle數據庫存儲結構
物理存儲結構數據文件(DataFile)重做日志文件(RedoLogFile)控制文件(ControlFile)邏輯存儲結構表空間(TableSpace)段(Segment)區(Extent)塊(Block)Oracle數據庫存儲結構物理存儲結構3Oracle數據庫文件類型及其關聯Oracle數據庫文件類型及其關聯42.1.1數據文件(DataFile)數據庫中所有的數據最終都保存在數據文件中。每個Oracle數據庫都有一個或多個物理數據文件數據文件中包括表數據索引數據數據字典定義回滾事務所需的信息存儲過程、函數和數據包的代碼用來排序的臨時數據2.1.1數據文件(DataFile)數5一個數據文件只能與一個數據庫相關聯(N:1)??梢詫祿募O置一些特性,在數據庫空間用完的情況下可以自動擴展。一個或多個數據文件構成了一個數據庫存儲的邏輯單元——表空間(tablespace)。
提示:表空間是數據庫存儲的邏輯單位。數據庫文件如果離開了表空間將失去意義,而表空間如果離開了數據文件將失去物理基礎數據文件的特點數據文件的特點6例:使用數據字典dba_data_files查看表空間system所對應的數據文件的部分信息。SQL>descdba_data_files;SQL>selectfile_name,tablespace_name,autoextensiblefromdba_data_fileswheretablespace_name=‘SYSTEM’;dba_data_files表結構:例:使用數據字典dba_data_files查看表空間sys7查詢執行結果:查詢執行結果:82.1.2控制文件數據庫控制文件(controlfile)是一個很小的二進制文件,用于維護數據庫的全局物理結構,它存放著數據庫中數據文件和日志文件的信息。創建數據庫時,同時就提供了與之對應的控制文件。每一個控制文件只能與一個Oracle數據庫相關聯??刂莆募藬祿鞂嵗趩雍驼2僮鲿r,訪問數據庫所需的關于數據庫的信息。一旦損壞,數據庫將無法正常工作2.1.2控制文件數據庫控制文件(controlfil9查詢當前數據庫的控制文件信息(使用數據字典:V$controlfile)提示:Oracle一般會默認創建3個包含相同信息的控制文件,分別存儲在不同磁盤互為鏡像,以防其中之一受損時,數據庫可以調用其他控制文件繼續工作SQL>columnnameformata50;SQL>selectnamefromV$controlfile;查詢當前數據庫的控制文件信息提示:Oracl10控制文件包含的信息數據庫名稱數據庫創建的時間戳相關的數據文件、重演日志文件的名稱和位置表空間信息數據文件脫機范圍日志歷史歸檔日志信息備份組和備份塊信息備份數據文件和重演日志信息數據文件拷貝信息當前日志序列數檢查點(checkpoint)信息控制文件包含的信息數據庫名稱112.1.3重做日志文件每一個Oracle數據庫都有一個由兩個或多個重演日志文件(redologfile)構成的文件組,這組重演日志文件合稱為數據庫的重演日志。一個重演日志文件是由重做條目(redoentry,也叫重做記錄)組成的。重演日志的主要功能是記錄下所有數據的改變。重演日志文件中的信息可以用在數據庫從系統失敗或者介質失敗的恢復之中。
記錄數據庫所有修改信息的文件,簡稱日志文件,是數據庫最重要的文件之一。其中修改信息包括數據的修改信息或者數據庫結構的修改信息等。2.1.3重做日志文件每一個Oracle數據庫都有一個由12為了確保日志文件的安全,在實際應用中,允許對日志文件進行鏡像,它們構成一個日志文件組,同一個族的日志文件最好放在不同的磁盤中。Oracle中的多個日志文件組是循環使用的。當所有的日志文件組的空間都被填滿后,系統將重新切換到第一個日志文件組,發生日志切換時,日志文件組中已有的信息是否被覆蓋取決于系統運行的模式(歸檔模式和非歸檔模式。)日志文件組為了確保日志文件的安全,在實際應用中,允許對日志文件進行鏡像132.1.4其他文件
1.歸檔重演日志文件歸檔重演日志文件(archivelogfile)就是對寫滿的重演日志文件進行復制并保存而生成的文件。
可以通過設置數據庫為歸檔模式(ARCHIVELOGmode)下來自動地保存日志文件。歸檔進程(ARCO)在后臺負責把寫滿的重演日志文件復制到歸檔日志目標中。歸檔日志文件在數據庫恢復時起決定性作用。2.1.4其他文件1.歸檔重演日志文件142.參數文件(parameterfile)
參數文件包含了一組關于數據庫和實例的配置參數。主要包括數據庫名和控制文件所在路徑。有文本參數文件(parameterFile,簡稱Pfile。ini<SID>.ora)和服務器參數文件(ServerParameterFile,簡稱Spfile,spfile<SID>.ora)兩種類型。
Oracle推薦用戶使用一個服務器參數文件作為維護初始化參數的動態手段。一個服務器參數文件允許用戶在一個服務器端的磁盤文件里持久地保存和管理初始化參數。2.參數文件(parameterfile)153.警告、跟蹤日志文件
每一個服務器和后臺進程都可以寫入一個相關的跟蹤文件(tracefile)。當一個進程發現了一個內部錯誤的時候,它把關于錯誤的信息轉儲到它的跟蹤文件里。寫入到跟蹤文件的一部分信息是給數據庫管理員使用的,而其他信息是給Oracle支持服務的。跟蹤文件信息還可以用于調整應用程序和實例。警告文件(alertfile)是一種特殊的跟蹤文件,一個數據庫的警告文件就是包括按時間排序的消息和錯誤的記錄。
3.警告、跟蹤日志文件每一個服務器和后臺進程都164.備份文件用戶管理的備份和恢復實際上就是要求用戶在試圖恢復備份的時候先還原備份文件。服務器管理的備份和恢復管理了備份過程,例如,調度備份及恢復過程就是在需要恢復的時候施加正確的備份文件。4.備份文件用戶管理的備份和恢復實際上就是要求用17主要的邏輯存儲結構:表空間各種段數據段索引段臨時段回滾段區間數據塊2.2Oracle數據庫的邏輯存儲結構表空間段數據塊數據塊數據庫表空間段區區………Oracle數據庫的邏輯結構主要的邏輯存儲結構:2.2Oracle數據庫的邏輯存儲結18表空間是Oracle中最大的邏輯存儲結構,它與物理上的一個或多個數據文件相對應,每個Oracle數據庫都至少擁有一個表空間。表空間的大小等于構成表空間的所有數據文件大小的總和。表空間用于存儲用戶在數據庫中創建的所有的內容。2.2.1表空間(Tablespace)表空間是Oracle中最大的邏輯存儲結構,它與物理上的一個或19表空間與數據文件的關系一個表空間與硬盤上的一個或多個物理數據文件相對應。表空間與數據文件的關系20例:通過數據字典dba_tablespaces,查看當前數據庫的所有表空間的名稱SQL>selecttablespace_namefromdba_tablespaces;Oracle自動創建的表空間的說明:見P23頁中表2-1例:通過數據字典dba_tablespaces,查看當前數據21系統表空間臨時表空間工具表空間用戶表空間數據庫索引表空間回滾表空間主要的數據庫表空間主要的數據庫表空間22Oracle允許在逐個表空間基礎上控制數據庫數據的可用性在聯機表空間中的數據對于應用程序和數據庫來說是可用的在脫機表空間中的數據對于應用程序和數據庫來說是不可用的,即使當數據庫是可用的也是如此。聯機和脫機表空間Oracle允許在逐個表空間基礎上控制數據庫數據的可用性聯機23永久表空間和臨時表空間在Oracle數據庫中,大多數表空間是永久表空間。永久表空間存儲單個SQL請求和事務中必須存留的信息。Oracle還允許在數據庫中創建臨時表空間。臨時表空間使事務能夠用于處理復雜SQL操作的大量臨時工作空間,如存儲查詢、連接查詢和建立索引等。永久表空間和臨時表空間在Oracle數據庫中,大多數表空間是24段是一組盤區,是Oracle管理數據庫對象的單位。是終端用戶能處理的最小單位。Oracle為段分配的空間是以數據區為單位的,當斷的數據區已滿,Oracle圍棋分配另一個數據區。段的數據區可以是不連續的磁盤空間。段可以分為:數據段、索引段、臨時段、回退段四種類型。2.2.2段(Segment)段是一組盤區,是Oracle管理數據庫對象的單位。是終端用戶251.數據段用于存儲表中的數據。數據段的名稱與表的名稱相同。系統為分區表的每個分區分配一個數據段。2.索引段用于存儲表中國的所有索引信息。索引段的名稱與索引相同。分區索引的每一個分區對應一個索引段。3.臨時表臨時段用于存儲臨時數據。排序或者匯總時所產生的臨時數據都存儲在臨時段中,該段由系統在用戶的臨時表空間中自動創建,兵在排序或者匯總結束是自動消除。4.回退段用于存儲用戶數據被修改之前的值。用于用戶進行回退(恢復)操作時使用。每個Oracle數據庫至少擁有一個回退段。1.數據段用于存儲表中的數據。數據段的名稱與表的名稱相同。262.2.3區(EXtent)區時磁盤空間分配的最小單位,由一個或多個數據塊組成。當段中的所有空間被使用完后,系統將自動為該段分配一個新的區。段所包含的區的個數由:minextents和maxextents參數決定。2.2.3區(EXtent)區時磁盤空間分配的最小單位,由272.2.4數據塊是用來管理存儲空間的最基本的單位,也是最小的邏輯存儲單位。塊頭部:包含數據塊中的餓一般屬性信息,如物理地址、所屬斷的類型等。表目錄:用來存儲相關對象的信息。行目錄:用來存儲數據塊中有效的行信息??臻e空間:數據塊中還沒有使用的存儲空間。行空間:數據塊中已使用的存儲空間塊頭部表目錄行目錄空閑空間行空間塊頭部信息區塊的默認大小,由db_block_size參數在數據庫創建時指定,一旦數據庫創建成功后無法修改。2.2.4數據塊是用來管理存儲空間的最基本的單位,也是最小282.2.5表空間、段、分區和數據塊的關系圖2.2.5表空間、段、分區和數據塊的關系圖292.3Oracle數據庫系統結構與實例Oracle數據庫系統結構包括:Oracle實例(Instance)、數據庫文件、用戶進程、服務器進程,以及其他文件如:密碼文件、和歸檔文件(ArchiveLogFile)等。Oracle數據庫管理系統包括:Oracle數據庫和Oracle實例Oracle數據庫是一組相關的操作系統文件的集合2.3.1Oracle數據庫系統結構2.3Oracle數據庫系統結構與實例Oracle數據庫30LibrarycacheDatadictcacheOracle數據庫系統結構LibraryDatadictOracle數據庫系統結構31Oracle系統結構圖Oracle系統結構圖322.3.2Oracle數據庫實例Oracle實例由一些內存區和后臺進程組成。內存區域主要包括:數據庫高速緩存、共享池、流池以及其他可選內存區(如java池)。后臺進程主要由:系統監控進程(SMON)、進程監控(PMON)、數據庫寫進程(DBWR)、日志寫進程(LGWR)、檢驗點進程(CKPT)、其他進程(如ARCn進程、RECO進程)2.3.2Oracle數據庫實例Oracle331.實例和數據庫之間的關系1.實例和數據庫之間的關系342.Oracle實例與參數文件每個實例都要用稱為SID(systemidentifier,系統標識符)的符號來標識決定實例的大小及組成的參數存儲在初始化參數文件(init.ora)中,啟動實例時讀取這個文件,在運行時可由數據庫管理員修改對該文件的任何修改都只有在數據庫下一次啟動時才起作用2.Oracle實例與參數文件每個實例都要用稱為SID352.3.3Oracle數據庫系統的內存結構1.系統全局區(SGA)主要部分組成數據庫高速緩存區共享池重做日志緩存區大緩存池固定的SGA。緩沖區域共享區域系統全局區(SGA)軟件代碼區域棧空間會話信息其他區程序全局區(PGA)Oracle內存結構圖2.3.3Oracle數據庫系統的內存結構1.系統全局區36數據庫高速緩存區
(DatabaseBufferCache)圖2.8數據庫高速緩存區用于存儲從磁盤數據文件中讀取的數據,供所有用戶共享,以提高數據庫的整體效率數據庫高速緩存區
(DatabaseBufferCach37共享池Sharepool圖2.9共享池中的內存結構
用于保存最近執行的SQL語句、PL/SQL程序的數據字典信息,以用于系統對其進行語法分析、編譯和執行的內存區域。共享池Sharepool圖2.9共享池中的內存結構38重做日志緩存區用于在內存中存儲未被刷新寫入聯機重做日志文件的重做信息是Oracle在循環方式下使用的先進先出的緩沖區大小可在初始化參數文件中由logbuffer參數設定,以字節為單位大緩存池是Oracle的一個可選內存區,主要用于多線程的服務器或備份還原等操作固定的SGA用于存儲極大量的值。為了對實例進行操作,這些值需要在內部進行記錄。重做日志緩存區39程序全局區(PGA)
獨立于SGA,不會出現在SGA中。由操作系統在本地分配。在系統全局區可用的共享內存連接到Oracle數據庫的進程的私有的內存區--程序全局區(PGA)程序全局區不能共享程序全局區含有單個進程工作時需要的數據、控制信息、進程會話變量和內部數組等程序全局區(PGA)
獨立于SGA,不會出現在SGA中。由操402.3.4Oracle數據庫系統的后臺進程圖2.10典型的Oracle后臺進程集合
在NT服務器上,后臺進程的執行是作為OracleService的多線程實現的,它允許Oracle進程更有效地使用共享內存地址空間,從而減少了NT操作系統處理。Oracle數據庫啟動時,會啟動多個Oracle后臺進程,用于異步執行不同的特定任務。通過查詢數據字典v$bgprocess可以查看它們的相關信息。2.3.4Oracle數據庫系統的后臺進程圖2.1041DBWn進程:數據庫寫入進程,負責將數據緩沖區中的數據寫入數據文件。其主要有以下幾個作用:管理數據緩沖區,一遍用戶進程總能找到空閑的緩沖區。將所有修改后的緩沖區數據(dirtydata)寫入數據文件。使用LRU算法將最近使用過的塊保留在內存中。通過延遲些來優化磁盤I/O讀寫。DBWn進程最多可以啟動20個,分別命名為DBW0,DBW1….DBW9,DBWa,,,DBWj。由參數db_writer_processes決定。LGWR進程日志寫入進程,負責管理日志緩沖區的后臺進程。將日志信息同步的寫入在線日志文件組中。若整個日志文件組均無法使用,則進程會被掛起,直至問題被解決。CKPT進程檢驗點進程。一般在發生日志切換時自動產生,用于縮短實例恢復所需要的時間。在檢查點期間,該進程更新控制文件與數據文件的標題,從而反映最近成功SCN(系統更改號)。參數Log_checkpoint_timeout:設置檢查點產生的時間間隔,默認1800秒。參數Log_checkpoint_interval:設置一個檢查點需要填充的日志文件塊的數目。默認為0。DBWn進程:42SMON進程:系統監控進程,所負責的工作有:數據庫實例故障恢復管理和維護表空間中的空閑空間系統啟動期間,回收所有表空間中的臨時段PMON進程:用戶進程監控進程,負責用戶進程故障恢復,清理釋放用戶進程的內存區域。周期性檢查調度進程和服務器進程狀態。ARCn進程:歸檔進程。用于將邪門的日志文件復制到歸檔日志文件中,防止日志文件組中的日志信息被覆蓋或者破壞。運行在數據庫服務器歸檔模式下。RECO進程:存在于分布式數據庫系統中,用于自動解決在分布式數據庫系統中出現的事務故障。主要負責事務回滾,保持分布式系統中數據的一致性。SMON進程:系統監控進程,所負責的工作有:432.3.5數據庫字典Oracle數據庫字典(datadictionary),是存儲在數據庫中的所有對象信息的知識庫,Oracle數據庫管理系統使用數據字典獲取對象信息和安全信息。而用戶和數據庫系統管理員則用數據字典查詢數據庫信息。數據字典中保存有數據庫中對象和段的信息,如:表、索引、視圖、包、存儲過程以及與用戶、權限、角色、審計和約束等相關的信息數據字典試只讀的,用戶不能修改數據信息和結構。數據字典主要有:user視圖,all視圖,dba視圖,v$視圖,GV$視圖。詳見P32表2-2。2.3.5數據庫字典Oracle數據庫字典(datadi442.4Oracle數據庫的應用結構主要的應用結構有:多磁盤結構磁盤映像系統客戶/服務器系統多線程服務器系統并行數據庫系統分布式數據庫系統OracleWebServer系統2.4Oracle數據庫的應用結構主要的應用結構有:452.4.1多磁盤結構圖2.14多磁盤結構上的Oracle服務器
2.4.1多磁盤結構圖2.14多磁盤結構上的Ora462.4.2磁盤映像系統磁盤映像的好處。磁盤映像可以作為磁盤失效時的備份來使用。可以改進系統的性能2.4.2磁盤映像系統磁盤映像的好處。472.4.3客戶/服務器系統
應用程序運行在客戶端的工作站上,Oracle數據庫運行在服務器上,二者通過以太網連接在一起。為了使客戶和服務器易于連接,Oracle提供了SQL*Net的高層網絡協議。在客戶/服務器環境下,所有客戶都安裝了SQL*Net客戶端軟件,服務器則安裝相應的服務端軟件。SQL*Net提供了一個程序代碼的公用接口,而不用考慮其底層的實現。2.4.3客戶/服務器系統應用程48基于客戶/服務器的Oracle系統
圖2.15基于客戶/服務器的Oracle系統基于客戶/服務器的Oracle系統圖2.15基于客戶49客戶機與服務器通信必須進行的幾步操作服務器必須配置成通過網絡接受通信。服務器必須識別哪個數據庫允許網絡登錄。服務器必須運行SQL*Net??蛻魴C必須配置成通過網絡進行通信??蛻魴C必須有充足的內存和磁盤資源可供使用。客戶機必須已安裝有SQL*Net,并指定一個連接字符串??蛻魴C與服務器通信必須進行的幾步操作服務器必須配置成通過網絡50三層模式的Oracle系統computerserver客戶機1客戶機2數據庫服務器應用程序服務器圖2.16三層模式的Oracle系統三層模式的Oracle系統computerserver客戶機51三層配置的優點可量測性有利于應用程序的執行易于分布式處理提高了性能能簡化對客戶機的維護三層配置的優點可量測性522.4.4多線程服務器系統多線程服務器(MTS)允許多用戶會話共享一組服務器進程,因而減少了支持大量用戶所必要的資源開銷。同時,多線程服務器的體系結構也允許降低這些服務器會話的全部空閑時間。多線程服務器的體系結構不同于專用服務器。共享服務器進程不直接與調度器或服務器進程交互,而是監控請求隊列。
2.4.4多線程服務器系統多線程服務器(MTS)允許多用53多線程服務器的下列參數進行設置mts_dispatchersmts_serversmts_max_servers可以通過在SQL*Plus中查詢動態視圖V$SESSION來確定當前連接到啟動數據庫的類型,若結果是DEDICATED,則目前是專用服務器配置;若結果是SHARED,則目前是多線程服務器。查詢命令為:{SELECTserverFROMV$SESSIONWHEREaudsid=USERENV('SESSIONID');}多線程服務器的下列參數進行設置mts_dispatchers542.4.5并行數據庫系統配置針對一個Oracle實例訪問的數據庫針對兩個或兩個以上數據庫實例(服務器)訪問同一個數據庫--Oracle并行服務器(oracleparallelserver,OPS)2.4.5并行數據庫系統配置針對一個Oracle實例訪問553個獨立的Oracle實例共享同一數據庫文件
圖2.18Oracle并行服務器
3個獨立的Oracle實例共享同一數據庫文件圖2.1856并行服務器的好處可以增加數據庫資源的數量或凈值數量允許數據庫為更多的用戶處理更多的工作提供了一種對災難進行恢復的手段可以根據執行的進程的類型對用戶進行分組,并且大量占用CPU的用戶可以留在與常規聯機處理事務相分離的一個主機上并行服務器的好處可以增加數據庫資源的數量或凈值數量57設計使用并行數據庫時需要注意的問題可以使用不同的初始化參數配置在并行服務器數據庫上運行的各種實例。用戶可以把系統設計為使用具有一個或多個富余實例的并行服務器,以便在主實例不可獲取時仍能支持自己的所有用戶。如果硬件可以支持足夠的節點,可以在相同的數據庫上使用并行服務器的伸縮特性及故障恢復能力。設計使用并行數據庫時需要注意的問題可以使用不同的初始化參數配58設計使用并行數據庫時需要注意的問題在設計多實例數據庫時,在伸縮特性及故障恢復能力這兩個功能之間進行明確的區分是非常重要的。需要做好準備修改單實例數據庫使用的初始化參數文件中的參數,以使并行服務器使用的多個實例可以成功地相互作用。
設計使用并行數據庫時需要注意的問題在設計多實例數據庫時,在伸59在并行方式下啟動一個實例的兩種方法需要將初始化文件中的parallelserver設為true。通過在SQL*Plus的STARTUP命令中包括PARALLEL或SHARED關鍵字。在數據庫管理器總控臺的實例管理屏上使用SHARED單選按鈕。在并行方式下啟動一個實例的兩種方法需要將初始化文件中的par602.4.6分布式數據庫系統
分布式數據庫系統是作為一個單獨的數據庫但位于不同場所的系統。這些場所可以在任何地方,可以在緊鄰的辦公室,也可以在地球的另一端。在一個由不同節點連接起來的網絡環境中,分布式數據庫擔當一個單獨的系統。在一個分布式環境中,不同服務器(主機)上的數據庫彼此共享數據。每個服務器既能在物理上分離,又可以保持彼此間的邏輯關系。2.4.6分布式數據庫系統分布式數61分布式數據庫系統圖2.19分布式數據庫系統分布式數據庫系統圖2.19分布式數據庫系統62分布式事務會的好處其他服務器上的數據庫可以被更新,并且這些事務可以與其他事務組成一個邏輯單元數據庫對2PC的使用分布式事務會的好處其他服務器上的數據庫可以被更新,并且這些事63接收的數據庫的3種響應方式準備好——已準備好進行更新只讀——沒有準備的必要退出——子處理不能執行更新接收的數據庫的3種響應方式642.4.7OracleWebserver系統隨著網絡技術的迅猛發展,數據庫技術也面臨著一場深刻的變革OracleWebServer相當于一個簡單請求傳送者的角色OracleWebServer支持用內建的過程創建HTML文檔2.4.7OracleWebserver系統隨著網絡65OracleWebServer的基本組成及功能
Web監聽器在Oracle主機上的HTTP引擎,它接受并管理服務請求,它可以監聽多個遠程客戶的服務請求并把這些請求交給Web請求代理器Web請求代理器一個異步請求處理程序,它具有一個能使它與各種后端程序組件動態無縫地進行交互的應用程序接口公共網關接口和Web請求代理器的作用類似,也是把用戶的請求與Web服務器聯系起來一些Cartridge是Oracle中的一些組件或稱為工具的一組程序OracleWebServer的基本組成及功能Web監66OracleWebServer的體系結構
圖2.20OracleWebServer的體系結構OracleWebServer的體系結構圖2.20672.5本章小結介紹了Oracle10g數據庫系統的體系結構數據庫是通過各種存儲結構有組織地存儲數據的Oracle的存儲結構可以分為物理結構和邏輯結構Oracle系統是由數據庫文件和作用在文件之上的實例構成的Oracle在實際中的廣泛應用決定了Oracle數據庫的多樣的、適用的應用解決方案2.5本章小結介紹了Oracle10g數據庫系682.6習題選擇題(1) ()是一個小二進制文件,它維護著數據庫的全局物理結構,用以支持數據庫成功地啟動和運行。A. 數據文件 B. 控制文件C. 日志文件 D. 參數文件(2) 如果出現了失敗故障,用戶修改的數據沒有永久地寫入到數據文件里,那么就可以利用()找到數據的更改,這樣做過的工作就不會丟失了。A. 數據文件 B. 控制文件C. 日志文件 D. 參數文件2.6習題選擇題692.6習題填空題(1) 從存儲結構的角度來說,Oracle數據庫可分為
和
。(2) Oracle實例,也被稱作數據庫服務或服務器,是一組
和
,Oracle使用它們來管理數據庫訪問。(3) 內存結構是指一個進程在其中進行自身對話或與其他進程對話的內存區域,Oracle使用兩種類型的內存結構,一種是
;另一種是
。2.6習題填空題702.6習題簡答題(1) 簡要介紹表空間和數據文件之間的關系。(2) 簡要介紹段、區間和數據塊之間的關系。(3) Oracle實例有哪些后臺進程,各實現了什么功能?2.6習題簡答題712.6習題上機操作題(1) 在SQL*Plus環境下,查詢構成一個數據庫的各種文件:① 查詢構成數據庫的數據文件列表;② 查詢數據庫的控制文件的名字和位置。(2) 在SQL*Plus環境下,查詢當前與Oracle的會話,以確定連接到數據庫的類型。2.6習題上機操作題72第2章Oracle數據庫的體系結構第2章Oracle數據庫的體系結構732.1Oracle數據庫的物理存儲結構Oracle數據庫的物理存儲結構由存儲在磁盤中的操作系統文件組成。包括構成數據庫的各種物理文件,包括數據文件,控制文件,重演日志文件,歸檔重演日志文件,參數文件,警告、跟蹤日志文件和備份文件等。2.1Oracle數據庫的物理存儲結構Oracle數據庫74Oracle數據庫存儲結構
物理存儲結構數據文件(DataFile)重做日志文件(RedoLogFile)控制文件(ControlFile)邏輯存儲結構表空間(TableSpace)段(Segment)區(Extent)塊(Block)Oracle數據庫存儲結構物理存儲結構75Oracle數據庫文件類型及其關聯Oracle數據庫文件類型及其關聯762.1.1數據文件(DataFile)數據庫中所有的數據最終都保存在數據文件中。每個Oracle數據庫都有一個或多個物理數據文件數據文件中包括表數據索引數據數據字典定義回滾事務所需的信息存儲過程、函數和數據包的代碼用來排序的臨時數據2.1.1數據文件(DataFile)數77一個數據文件只能與一個數據庫相關聯(N:1)??梢詫祿募O置一些特性,在數據庫空間用完的情況下可以自動擴展。一個或多個數據文件構成了一個數據庫存儲的邏輯單元——表空間(tablespace)。
提示:表空間是數據庫存儲的邏輯單位。數據庫文件如果離開了表空間將失去意義,而表空間如果離開了數據文件將失去物理基礎數據文件的特點數據文件的特點78例:使用數據字典dba_data_files查看表空間system所對應的數據文件的部分信息。SQL>descdba_data_files;SQL>selectfile_name,tablespace_name,autoextensiblefromdba_data_fileswheretablespace_name=‘SYSTEM’;dba_data_files表結構:例:使用數據字典dba_data_files查看表空間sys79查詢執行結果:查詢執行結果:802.1.2控制文件數據庫控制文件(controlfile)是一個很小的二進制文件,用于維護數據庫的全局物理結構,它存放著數據庫中數據文件和日志文件的信息。創建數據庫時,同時就提供了與之對應的控制文件。每一個控制文件只能與一個Oracle數據庫相關聯??刂莆募藬祿鞂嵗趩雍驼2僮鲿r,訪問數據庫所需的關于數據庫的信息。一旦損壞,數據庫將無法正常工作2.1.2控制文件數據庫控制文件(controlfil81查詢當前數據庫的控制文件信息(使用數據字典:V$controlfile)提示:Oracle一般會默認創建3個包含相同信息的控制文件,分別存儲在不同磁盤互為鏡像,以防其中之一受損時,數據庫可以調用其他控制文件繼續工作SQL>columnnameformata50;SQL>selectnamefromV$controlfile;查詢當前數據庫的控制文件信息提示:Oracl82控制文件包含的信息數據庫名稱數據庫創建的時間戳相關的數據文件、重演日志文件的名稱和位置表空間信息數據文件脫機范圍日志歷史歸檔日志信息備份組和備份塊信息備份數據文件和重演日志信息數據文件拷貝信息當前日志序列數檢查點(checkpoint)信息控制文件包含的信息數據庫名稱832.1.3重做日志文件每一個Oracle數據庫都有一個由兩個或多個重演日志文件(redologfile)構成的文件組,這組重演日志文件合稱為數據庫的重演日志。一個重演日志文件是由重做條目(redoentry,也叫重做記錄)組成的。重演日志的主要功能是記錄下所有數據的改變。重演日志文件中的信息可以用在數據庫從系統失敗或者介質失敗的恢復之中。
記錄數據庫所有修改信息的文件,簡稱日志文件,是數據庫最重要的文件之一。其中修改信息包括數據的修改信息或者數據庫結構的修改信息等。2.1.3重做日志文件每一個Oracle數據庫都有一個由84為了確保日志文件的安全,在實際應用中,允許對日志文件進行鏡像,它們構成一個日志文件組,同一個族的日志文件最好放在不同的磁盤中。Oracle中的多個日志文件組是循環使用的。當所有的日志文件組的空間都被填滿后,系統將重新切換到第一個日志文件組,發生日志切換時,日志文件組中已有的信息是否被覆蓋取決于系統運行的模式(歸檔模式和非歸檔模式。)日志文件組為了確保日志文件的安全,在實際應用中,允許對日志文件進行鏡像852.1.4其他文件
1.歸檔重演日志文件歸檔重演日志文件(archivelogfile)就是對寫滿的重演日志文件進行復制并保存而生成的文件。
可以通過設置數據庫為歸檔模式(ARCHIVELOGmode)下來自動地保存日志文件。歸檔進程(ARCO)在后臺負責把寫滿的重演日志文件復制到歸檔日志目標中。歸檔日志文件在數據庫恢復時起決定性作用。2.1.4其他文件1.歸檔重演日志文件862.參數文件(parameterfile)
參數文件包含了一組關于數據庫和實例的配置參數。主要包括數據庫名和控制文件所在路徑。有文本參數文件(parameterFile,簡稱Pfile。ini<SID>.ora)和服務器參數文件(ServerParameterFile,簡稱Spfile,spfile<SID>.ora)兩種類型。
Oracle推薦用戶使用一個服務器參數文件作為維護初始化參數的動態手段。一個服務器參數文件允許用戶在一個服務器端的磁盤文件里持久地保存和管理初始化參數。2.參數文件(parameterfile)873.警告、跟蹤日志文件
每一個服務器和后臺進程都可以寫入一個相關的跟蹤文件(tracefile)。當一個進程發現了一個內部錯誤的時候,它把關于錯誤的信息轉儲到它的跟蹤文件里。寫入到跟蹤文件的一部分信息是給數據庫管理員使用的,而其他信息是給Oracle支持服務的。跟蹤文件信息還可以用于調整應用程序和實例。警告文件(alertfile)是一種特殊的跟蹤文件,一個數據庫的警告文件就是包括按時間排序的消息和錯誤的記錄。
3.警告、跟蹤日志文件每一個服務器和后臺進程都884.備份文件用戶管理的備份和恢復實際上就是要求用戶在試圖恢復備份的時候先還原備份文件。服務器管理的備份和恢復管理了備份過程,例如,調度備份及恢復過程就是在需要恢復的時候施加正確的備份文件。4.備份文件用戶管理的備份和恢復實際上就是要求用89主要的邏輯存儲結構:表空間各種段數據段索引段臨時段回滾段區間數據塊2.2Oracle數據庫的邏輯存儲結構表空間段數據塊數據塊數據庫表空間段區區………Oracle數據庫的邏輯結構主要的邏輯存儲結構:2.2Oracle數據庫的邏輯存儲結90表空間是Oracle中最大的邏輯存儲結構,它與物理上的一個或多個數據文件相對應,每個Oracle數據庫都至少擁有一個表空間。表空間的大小等于構成表空間的所有數據文件大小的總和。表空間用于存儲用戶在數據庫中創建的所有的內容。2.2.1表空間(Tablespace)表空間是Oracle中最大的邏輯存儲結構,它與物理上的一個或91表空間與數據文件的關系一個表空間與硬盤上的一個或多個物理數據文件相對應。表空間與數據文件的關系92例:通過數據字典dba_tablespaces,查看當前數據庫的所有表空間的名稱SQL>selecttablespace_namefromdba_tablespaces;Oracle自動創建的表空間的說明:見P23頁中表2-1例:通過數據字典dba_tablespaces,查看當前數據93系統表空間臨時表空間工具表空間用戶表空間數據庫索引表空間回滾表空間主要的數據庫表空間主要的數據庫表空間94Oracle允許在逐個表空間基礎上控制數據庫數據的可用性在聯機表空間中的數據對于應用程序和數據庫來說是可用的在脫機表空間中的數據對于應用程序和數據庫來說是不可用的,即使當數據庫是可用的也是如此。聯機和脫機表空間Oracle允許在逐個表空間基礎上控制數據庫數據的可用性聯機95永久表空間和臨時表空間在Oracle數據庫中,大多數表空間是永久表空間。永久表空間存儲單個SQL請求和事務中必須存留的信息。Oracle還允許在數據庫中創建臨時表空間。臨時表空間使事務能夠用于處理復雜SQL操作的大量臨時工作空間,如存儲查詢、連接查詢和建立索引等。永久表空間和臨時表空間在Oracle數據庫中,大多數表空間是96段是一組盤區,是Oracle管理數據庫對象的單位。是終端用戶能處理的最小單位。Oracle為段分配的空間是以數據區為單位的,當斷的數據區已滿,Oracle圍棋分配另一個數據區。段的數據區可以是不連續的磁盤空間。段可以分為:數據段、索引段、臨時段、回退段四種類型。2.2.2段(Segment)段是一組盤區,是Oracle管理數據庫對象的單位。是終端用戶971.數據段用于存儲表中的數據。數據段的名稱與表的名稱相同。系統為分區表的每個分區分配一個數據段。2.索引段用于存儲表中國的所有索引信息。索引段的名稱與索引相同。分區索引的每一個分區對應一個索引段。3.臨時表臨時段用于存儲臨時數據。排序或者匯總時所產生的臨時數據都存儲在臨時段中,該段由系統在用戶的臨時表空間中自動創建,兵在排序或者匯總結束是自動消除。4.回退段用于存儲用戶數據被修改之前的值。用于用戶進行回退(恢復)操作時使用。每個Oracle數據庫至少擁有一個回退段。1.數據段用于存儲表中的數據。數據段的名稱與表的名稱相同。982.2.3區(EXtent)區時磁盤空間分配的最小單位,由一個或多個數據塊組成。當段中的所有空間被使用完后,系統將自動為該段分配一個新的區。段所包含的區的個數由:minextents和maxextents參數決定。2.2.3區(EXtent)區時磁盤空間分配的最小單位,由992.2.4數據塊是用來管理存儲空間的最基本的單位,也是最小的邏輯存儲單位。塊頭部:包含數據塊中的餓一般屬性信息,如物理地址、所屬斷的類型等。表目錄:用來存儲相關對象的信息。行目錄:用來存儲數據塊中有效的行信息。空閑空間:數據塊中還沒有使用的存儲空間。行空間:數據塊中已使用的存儲空間塊頭部表目錄行目錄空閑空間行空間塊頭部信息區塊的默認大小,由db_block_size參數在數據庫創建時指定,一旦數據庫創建成功后無法修改。2.2.4數據塊是用來管理存儲空間的最基本的單位,也是最小1002.2.5表空間、段、分區和數據塊的關系圖2.2.5表空間、段、分區和數據塊的關系圖1012.3Oracle數據庫系統結構與實例Oracle數據庫系統結構包括:Oracle實例(Instance)、數據庫文件、用戶進程、服務器進程,以及其他文件如:密碼文件、和歸檔文件(ArchiveLogFile)等。Oracle數據庫管理系統包括:Oracle數據庫和Oracle實例Oracle數據庫是一組相關的操作系統文件的集合2.3.1Oracle數據庫系統結構2.3Oracle數據庫系統結構與實例Oracle數據庫102LibrarycacheDatadictcacheOracle數據庫系統結構LibraryDatadictOracle數據庫系統結構103Oracle系統結構圖Oracle系統結構圖1042.3.2Oracle數據庫實例Oracle實例由一些內存區和后臺進程組成。內存區域主要包括:數據庫高速緩存、共享池、流池以及其他可選內存區(如java池)。后臺進程主要由:系統監控進程(SMON)、進程監控(PMON)、數據庫寫進程(DBWR)、日志寫進程(LGWR)、檢驗點進程(CKPT)、其他進程(如ARCn進程、RECO進程)2.3.2Oracle數據庫實例Oracle1051.實例和數據庫之間的關系1.實例和數據庫之間的關系1062.Oracle實例與參數文件每個實例都要用稱為SID(systemidentifier,系統標識符)的符號來標識決定實例的大小及組成的參數存儲在初始化參數文件(init.ora)中,啟動實例時讀取這個文件,在運行時可由數據庫管理員修改對該文件的任何修改都只有在數據庫下一次啟動時才起作用2.Oracle實例與參數文件每個實例都要用稱為SID1072.3.3Oracle數據庫系統的內存結構1.系統全局區(SGA)主要部分組成數據庫高速緩存區共享池重做日志緩存區大緩存池固定的SGA。緩沖區域共享區域系統全局區(SGA)軟件代碼區域棧空間會話信息其他區程序全局區(PGA)Oracle內存結構圖2.3.3Oracle數據庫系統的內存結構1.系統全局區108數據庫高速緩存區
(DatabaseBufferCache)圖2.8數據庫高速緩存區用于存儲從磁盤數據文件中讀取的數據,供所有用戶共享,以提高數據庫的整體效率數據庫高速緩存區
(DatabaseBufferCach109共享池Sharepool圖2.9共享池中的內存結構
用于保存最近執行的SQL語句、PL/SQL程序的數據字典信息,以用于系統對其進行語法分析、編譯和執行的內存區域。共享池Sharepool圖2.9共享池中的內存結構110重做日志緩存區用于在內存中存儲未被刷新寫入聯機重做日志文件的重做信息是Oracle在循環方式下使用的先進先出的緩沖區大小可在初始化參數文件中由logbuffer參數設定,以字節為單位大緩存池是Oracle的一個可選內存區,主要用于多線程的服務器或備份還原等操作固定的SGA用于存儲極大量的值。為了對實例進行操作,這些值需要在內部進行記錄。重做日志緩存區111程序全局區(PGA)
獨立于SGA,不會出現在SGA中。由操作系統在本地分配。在系統全局區可用的共享內存連接到Oracle數據庫的進程的私有的內存區--程序全局區(PGA)程序全局區不能共享程序全局區含有單個進程工作時需要的數據、控制信息、進程會話變量和內部數組等程序全局區(PGA)
獨立于SGA,不會出現在SGA中。由操1122.3.4Oracle數據庫系統的后臺進程圖2.10典型的Oracle后臺進程集合
在NT服務器上,后臺進程的執行是作為OracleService的多線程實現的,它允許Oracle進程更有效地使用共享內存地址空間,從而減少了NT操作系統處理。Oracle數據庫啟動時,會啟動多個Oracle后臺進程,用于異步執行不同的特定任務。通過查詢數據字典v$bgprocess可以查看它們的相關信息。2.3.4Oracle數據庫系統的后臺進程圖2.10113DBWn進程:數據庫寫入進程,負責將數據緩沖區中的數據寫入數據文件。其主要有以下幾個作用:管理數據緩沖區,一遍用戶進程總能找到空閑的緩沖區。將所有修改后的緩沖區數據(dirtydata)寫入數據文件。使用LRU算法將最近使用過的塊保留在內存中。通過延遲些來優化磁盤I/O讀寫。DBWn進程最多可以啟動20個,分別命名為DBW0,DBW1….DBW9,DBWa,,,DBWj。由參數db_writer_processes決定。LGWR進程日志寫入進程,負責管理日志緩沖區的后臺進程。將日志信息同步的寫入在線日志文件組中。若整個日志文件組均無法使用,則進程會被掛起,直至問題被解決。CKPT進程檢驗點進程。一般在發生日志切換時自動產生,用于縮短實例恢復所需要的時間。在檢查點期間,該進程更新控制文件與數據文件的標題,從而反映最近成功SCN(系統更改號)。參數Log_checkpoint_timeout:設置檢查點產生的時間間隔,默認1800秒。參數Log_checkpoint_interval:設置一個檢查點需要填充的日志文件塊的數目。默認為0。DBWn進程:114SMON進程:系統監控進程,所負責的工作有:數據庫實例故障恢復管理和維護表空間中的空閑空間系統啟動期間,回收所有表空間中的臨時段PMON進程:用戶進程監控進程,負責用戶進程故障恢復,清理釋放用戶進程的內存區域。周期性檢查調度進程和服務器進程狀態。ARCn進程:歸檔進程。用于將邪門的日志文件復制到歸檔日志文件中,防止日志文件組中的日志信息被覆蓋或者破壞。運行在數據庫服務器歸檔模式下。RECO進程:存在于分布式數據庫系統中,用于自動解決在分布式數據庫系統中出現的事務故障。主要負責事務回滾,保持分布式系統中數據的一致性。SMON進程:系統監控進程,所負責的工作有:1152.3.5數據庫字典Oracle數據庫字典(datadictionary),是存儲在數據庫中的所有對象信息的知識庫,Oracle數據庫管理系統使用數據字典獲取對象信息和安全信息。而用戶和數據庫系統管理員則用數據字典查詢數據庫信息。數據字典中保存有數據庫中對象和段的信息,如:表、索引、視圖、包、存儲過程以及與用戶、權限、角色、審計和約束等相關的信息數據字典試只讀的,用戶不能修改數據信息和結構。數據字典主要有:user視圖,all視圖,dba視圖,v$視圖,GV$視圖。詳見P32表2-2。2.3.5數據庫字典Oracle數據庫字典(datadi1162.4Oracle數據庫的應用結構主要的應用結構有:多磁盤結構磁盤映像系統客戶/服務器系統多線程服務器系統并行數據庫系統分布式數據庫系統OracleWebServer系統2.4Oracle數據庫的應用結構主要的應用結構有:1172.4.1多磁盤結構圖2.14多磁盤結構上的Oracle服務器
2.4.1多磁盤結構圖2.14多磁盤結構上的Ora1182.4.2磁盤映像系統磁盤映像的好處。磁盤映像可以作為磁盤失效時的備份來使用。可以改進系統的性能2.4.2磁盤映像系統磁盤映像的好處。1192.4.3客戶/服務器系統
應用程序運行在客戶端的工作站上,Oracle數據庫運行在服務器上,二者通過以太網連接在一起。為了使客戶和服務器易于連接,Oracle提供了SQL*Net的高層網絡協議。在客戶/服務器環境下,所有客戶都安裝了SQL*Net客戶端軟件,服務器則安裝相應的服務端軟件。SQL*Net提供了一個程序代碼的公用接口,而不用考慮其底層的實現。2.4.3客戶/服務器系統應用程120基于客戶/服務器的Oracle系統
圖2.15基于客戶/服務器的Oracle系統基于客戶/服務器的Oracle系統圖2.15基于客戶121客戶機與服務器通信必須進行的幾步操作服務器必須配置成通過網絡接受通信。服務器必須識別哪個數據庫允許網絡登錄。服務器必須運行SQL*Net??蛻魴C必須配置成通過網絡進行通信??蛻魴C必須有充足的內存和磁盤資源可供使用??蛻魴C必須已安裝有SQL*Net,并指定一個連接字符串。客戶機與服務器通信必須進行的幾步操作服務器必須配置成通過網絡122三層模式的Oracle系統computerserver客戶機1客戶機2數據庫服務器應用程序服務器圖2.16三層模式的Oracle系統三層模式的Oracle系統computerserver客戶機123三層配置的優點可量測性有利于應用程序的執行易于分布式處理提高了性能能簡化對客戶機的維護三層配置的優點可量測性1242.4.4多線程服務器系統多線程服務器(MTS)允許多用戶會話共享一組服務器進程,因而減少了支持大量用戶所必要的資源開銷。同時,多線程服務器的體系結構也允許降低這些服務器會話的全部空閑時間。多線程服務器的體系結構不同于專用服務器。共享服務器進程不直接與調度器或服務器進程交互,而是監控請求隊列。
2.4.4多線程服務器系統多線程服務器(MTS)允許多用125多線程服務器的下列參數進行設置mts_dispatchersmts_serversmts_max_servers可以通過在SQL*Plus中查詢動態視圖V$SESSION來確定當前連接到啟動數據庫的類型,若結果是DEDICATED,則目前是專用服務器配置;若結果是SHARED,則目前是多線程服務器。查詢命令為:{SELECTserverFROMV$SESSIONWHEREaudsid=USERENV('SESSIONID');}多線程服務器的下列參數進行設置mts_dispatchers1262.4.5并行數據庫系統配置針對一個Oracle實例訪問的數據庫針對兩個或兩個以上數據庫實例(服務器)訪問同一個數據庫--Oracle并行服務器(oracleparallelserver,OPS)2.4.5并行數據庫系統配置針對一個Oracle實例訪問1273個獨立的Oracle實例共享同一數據庫文件
圖2.18Oracle并行服務器
3個獨立的Oracle實例共享同一數據庫文件圖2.18128并行服務器的好處可以增加數據庫資源的數量或凈值數量允許數據庫為更多的用戶處理更多的工作提供了一種對災難進行恢復的手段可以根據執行的進程的類型對用戶進行分組,并且大量占用CPU的用戶可以留在與常規聯機處理事務相分離的一個主機上并行服務器的好處可以增加數據庫資源的數量或凈值數量129設計使用并行數據庫時需要注意的問題可以使用不同的初始化參
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030中國甲板設備行業產業運行態勢及投資規劃深度研究報告
- 儲運罐區培訓課件
- 安全培訓課件及教案
- 教育技術在全球教育發展中的角色與影響
- 教育數據安全與隱私保護的倫理框架構建
- 教育技術創新在實驗室建設中的價值體現
- 教育變革背景下的虛擬現實教育財務策略探討
- 教育技術創新與VR課堂實踐研究報告
- 培養未來創意人才美術項目化教學的教育理念
- 抖音商戶直播用戶畫像更新與分析制度
- 鐵路營業線安全管理辦法
- 酒類銷售用人勞務合同
- 2025老年教育政策環境分析及教學模式創新路徑研究報告
- 2025年中國伺服電纜行業市場發展前景及發展趨勢與投資戰略研究報告
- 【大數跨境】全球移動電源市場洞察報告
- 勝動燃氣發電機組基本構造與工作原理課件
- 七年級數學下冊一元一次不等式組說課稿人教新課標版
- 校長專業水平測試題
- 腹腔鏡膽囊切除術后護理查房
- 配電架空線路驗收規范表
- 壓力分散型錨索張拉方案
評論
0/150
提交評論