




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
Oracle數據庫的體系結構經典課件1第2章Oracle數據庫的體系結構本章要點:了解Oracle的物理存儲結構。了解Oracle的邏輯存儲結構。了解Oracle進程結構。了解Oracle內存結構。熟悉Oracle中的數據字典。理解數據字典的作用。2第2章Oracle數據庫的體系結構本章要點:22.1物理存儲結構Oracle的物理存儲結構是由存儲在磁盤中的操作系統文件所組成的,Oracle在運行時需要使用這些文件。一般Oracle數據庫在物理上主要由3種類型的文件組成,分別是數據文件(*.dbf)、控制文件(*.ctl)和重做日志文件(*.log)。32.1物理存儲結構Oracle的物理存儲結構是由存儲在磁2.1.1數據文件數據文件(DataFile)是指存儲數據庫數據的文件。數據文件一般有以下幾個特點。(1) 一個表空間由一個或多個數據文件組成。(2) 一個數據文件只對應一個數據庫。而一個數據庫通常包含多個數據文件。(3) 數據文件可以通過設置其自動擴展參數,實現其自動擴展的功能。如果想要了解數據文件的信息,可以查詢數據字典dba_data_files和v$datafile。其中,dba_data_files主要有如下字段。file_name:數據文件的名稱以及存放路徑。file_id:數據文件在數據庫中的ID號。tablespace_name:數據文件對應的表空間名。bytes:數據文件的大小。blocks:數據文件所占用的數據塊數。status:數據文件的狀態。autoextensible:數據文件是否可擴展。42.1.1數據文件數據文件(DataFile)是指存儲2.1.1數據文件另一個數據字典v$datafile則記錄了數據文件的動態信息,它主要有如下字段。file#:存放數據文件的編號。status:數據文件的狀態。checkpoint_change#:數據文件的同步號,隨著系統的運行自動修改,以維持所有數據文件的同步。bytes:數據文件的大小。blocks:數據文件所占用的數據塊數。name:數據文件的名稱以及存放路徑。52.1.1數據文件另一個數據字典v$datafile則記2.1.2控制文件控制文件(ControlFile)是一個很小的二進制文件,用于描述和維護數據庫的物理結構。在Oracle數據庫中,控制文件相當重要,它存放有數據庫中數據文件和日志文件的信息。【例2.3】使用數據字典v$controlfile,查看當前數據庫的控制文件的名稱與路徑,具體如下:SQL>COLUMNnameFORMATA50;SQL>SELECTnameFROMv$controlfile;NAME-------------------------------------------------E:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL01.CTLE:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL02.CTLE:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL03.CTL62.1.2控制文件控制文件(ControlFile)是2.1.3重做日志文件重做日志文件(RedoLogFile)是記錄數據庫中所有修改信息的文件,簡稱日志文件。日志文件是數據庫系統的最重要的文件之一,它可以保證數據庫安全,是進行數據庫備份與恢復的重要手段。如果日志文件受損,數據庫同樣可能會無法正常運行。Oracle中的日志文件組是循環使用的,當所有日志文件組的空間都被填滿后,系統將重新切換到第一個日志文件組。發生日志切換時,日志文件組中已有的日志信息是否被覆蓋,取決于數據庫的運行模式。72.1.3重做日志文件重做日志文件(RedoLogF2.1.4其他文件1.參數文件參數文件用于記錄Oracle數據庫的基本參數信息,主要包括數據庫名和控制文件所在路徑等。參數文件分為文本參數文件和服務器參數文件。2.備份文件文件受損時,可以借助于備份文件對受損文件進行恢復。對文件進行還原的過程,就是用備份文件替換該文件的過程。3.歸檔重做日志文件歸檔重做日志文件用于對寫滿的日志文件進行復制并保存,具體功能由歸檔進程ARCn實現,該進程負責將寫滿的重做日志文件復制到歸檔日志目標中。4.警告、跟蹤日志文件當一個進程發現了一個內部錯誤時,它可以將關于錯誤的信息存儲到它的跟蹤文件中。而警告文件則是一種特殊的跟蹤文件,它包含錯誤事件的說明,而隨之產生的跟蹤文件則記錄該錯誤的詳細信息。82.1.4其他文件1.參數文件82.2邏輯存儲結構Oracle數據庫的邏輯存儲結構如圖2-1所示。92.2邏輯存儲結構Oracle數據庫的邏輯存儲結構如圖22.2.1表空間(Tablespace)表空間是Oracle中最大的邏輯存儲結構,它與物理上的一個或多個數據文件相對應,每個Oracle數據庫都至少擁有一個表空間,表空間的大小等于構成該表空間的所有數據文件大小的總和。在安裝Oracle時,Oracle數據庫系統一般會自動創建一系列表空間(如system)。可以通過數據字典dba_tablespaces查看表空間的信息。102.2.1表空間(Tablespace)表空間是Orac2.2.1表空間(Tablespace)表
空
間說
明sysaux輔助系統表空間。用于減少系統表空間的負荷,提高系統的作業效率。該表空間由Oracle系統內部自動維護,一般不用于存儲用戶數據system系統表空間,用于存儲系統的數據字典、系統的管理信息和用戶數據表等temp臨時表空間。用于存儲臨時的數據,例如存儲排序時產生的臨時數據。一般情況下,數據庫中的所有用戶都使用temp作為默認的臨時表空間。臨時表空間本身不是臨時存在的,而是永久存在的,只是保存在臨時表空間中的段是臨時的。臨時表空間的存在,可以減少臨時段與存儲在其他表空間中的永久段之間的磁盤I/O爭用undotbs1撤消表空間。用于在自動撤消管理方式下存儲撤消信息。在撤消表空間中,除了回退段以外,不能建立任何其他類型的段。所以,用戶不可以在撤消表空間中創建任何數據庫對象users用戶表空間。用于存儲永久性用戶對象和私有信息112.2.1表空間(Tablespace)表空間說2.2.2段(Segment)按照段中所存儲數據的特征,可以將段分為4種類型1.數據段2.索引段3.臨時段4.回退段122.2.2段(Segment)按照段中所存儲數據的特征,2.2.3區(Extent)在Oracle數據庫中,區是磁盤空間分配的最小單位,由一個或多個數據塊組成。當一個段中的所有空間被使用完后,系統將自動為該段分配一個新的區。一個或多個區組成一個段,所以段的大小由區的個數決定。不過,一個數據段可以包含的區的個數并不是無限制的,它由如下兩個參數決定。minextents:定義段初始分配的區的個數,也就是段最少可分配的區的個數。maxextents:定義一個段最多可以分配的區的個數。132.2.3區(Extent)在Oracle數據庫中,區是2.2.4數據塊(Block)數據塊(也可以簡稱為塊)是用來管理存儲空間的最基本單位,也是最小的邏輯存儲單位。Oracle數據庫在進行輸入輸出操作時,都是以塊為單位進行邏輯讀寫操作的。數據塊都具有相同的結構,其結構如圖2-2所示。塊的默認大小,由初始化參數db_block_size指定,數據庫創建完成之后,該參數值無法再修改。通過SHOWPARAMETER語句可以查看該參數的信息,如下:SQL>SHOWPARAMETERdb_block_size;NAME TYPE VALUE--------------------------- --------- ------------------------db_block_size integer 8192142.2.4數據塊(Block)數據塊(也可以簡稱為塊)是2.3Oracle進程結構Oracle數據庫啟動時,會啟動多個Oracle后臺進程,后臺進程是用于執行特定任務的可執行代碼塊,在系統啟動后異步地為所有數據庫用戶執行不同的任務。通過查詢數據字典v$bgprocess,可以了解數據庫中啟動的后臺進程信息。152.3Oracle進程結構Oracle數據庫啟動時,會啟2.3.1DBWn進程DBWn(DatabaseWriter,數據庫寫入)進程,是Oracle中采用LRU(LeastRecentlyUsed,最近最少使用)算法將數據緩沖區中的數據寫入數據文件的進程。DBWn進程主要有如下幾個作用:管理數據緩沖區,以便用戶進程總能找到空閑的緩沖區。將所有修改后的緩沖區數據寫入數據文件。使用LRU算法將最近使用過的塊保留在內存中。通過延遲寫來優化磁盤I/O讀寫。162.3.1DBWn進程DBWn(DatabaseWri2.3.1DBWn進程其工作過程如下。(1) 當一個用戶進程產生后,服務器進程查找內存緩沖區中是否存在用戶進程所需要的數據。(2) 如果內存中沒有需要的數據,則服務器進程從數據文件中讀取數據。這時,服務器進程會首先從LRU中查找是否有存放數據的空閑塊。(3) 如果LRU中沒有空閑塊,則將LRU中的DIRTY數據塊移入DIRTYLIST(弄臟表)。(4) 如果DIRTYLIST超長,服務器進程將會通知DBWn進程將數據寫入磁盤,刷新緩沖區。(5) 當LRU中有空閑塊后,服務器進程從磁盤的數據文件中讀取數據并存放到數據緩沖區中。172.3.1DBWn進程其工作過程如下。172.3.2LGWR進程LGWR(LogWriter,日志寫入)進程,是負責管理日志緩沖區的一個后臺進程,用于將日志緩沖區中的日志數據寫入磁盤的日志文件中。LGWR進程將日志信息同步地寫入在線日志文件組的多個日志成員文件中,如果日志文件組中的某個成員文件被刪除或者不可使用,則LGWR進程可以將日志信息寫入該組的其他文件中,從而不影響數據庫正常運行,但會在警告日志文件中記錄錯誤。182.3.2LGWR進程LGWR(LogWriter,日2.3.3CKPT進程CKPT(CheckPoint,檢查點或檢驗點)進程,一般在發生日志切換時自動產生,用于縮短實例恢復所需的時間。在檢查點期間,CKPT進程更新控制文件與數據文件的標題,從而反映最近成功的SCN(SystemChangeNumber,系統更改號)。在Oracle數據庫中,控制檢查點產生的參數有如下兩種。log_checkpoint_timeoutlog_checkpoint_interval192.3.3CKPT進程CKPT(CheckPoint,2.3.4SMON進程SMON(SystemMonitor,系統監控)進程,用于數據庫實例出現故障或系統崩潰時,通過將聯機重做日志文件中的條目應用于數據文件,執行崩潰恢復。SMON進程一般用于定期合并字典管理的表空間中的空閑空間,此外,它還用于在系統重新啟動期間清理所有表空間中的臨時段。202.3.4SMON進程SMON(SystemMonit2.3.5PMON進程PMON(ProcessMonitor,進程監控)進程,用于在用戶進程出現故障時執行進程恢復操作,負責清理內存存儲區和釋放該進程所使用的資源。PMON進程周期性檢查調度進程和服務器進程的狀態,如果發現進程已死,則重新啟動它。PMON進程被有規律地喚醒,檢查是否需要使用,或者其他進程發現需要時也可以調用此進程。212.3.5PMON進程PMON(ProcessMoni2.3.6ARCn進程ARCn(ArchiveProcess,歸檔)進程,用于將寫滿的日志文件復制到歸檔日志文件中,防止日志文件組中的日志信息由于日志文件組的循環使用而被覆蓋。一個Oracle數據庫實例中,允許啟動的ARCn進程的個數由參數log_archive_max_processes決定。222.3.6ARCn進程ARCn(ArchiveProc2.3.7RECO進程RECO(Recovery,恢復)進程存在于分布式數據庫系統中,用于自動解決在分布式數據庫中出現的事務故障。當一個數據庫服務器的RECO進程試圖與一個遠程服務器建立通信時,如果遠程服務器不可用或者無法建立網絡連接,則RECO進程將自動在一個時間間隔之后再次連接。232.3.7RECO進程RECO(Recovery,恢復)2.4Oracle內存結構Oracle內存結構是影響數據庫性能的主要因素之一,其結構如圖2-3所示。242.4Oracle內存結構Oracle內存結構是影響數據2.4.1系統全局區(SGA)系統全局區(SystemGlobalArea,SGA)是Oracle為系統分配的一組共享的內存結構,可以包含一個數據庫實例的數據或控制信息。1.數據緩沖區數據緩沖區用于存儲從磁盤數據文件中讀取的數據,供所有用戶共享。由于系統讀取內存的速度要比讀取磁盤快得多,所以數據緩沖區的存在可以提高數據庫的整體效率。2.日志緩沖區日志緩沖區用于存儲數據庫的修改操作信息。3.共享池共享池用于保存最近執行的SQL語句、PL/SQL程序的數據字典信息,它是對SQL語句和PL/SQL程序進行語法分析、編譯和執行的內存區域。共享池主要包括如下兩種子緩存。庫緩存(LibraryCache)數據字典緩存(DataDictionaryCache)4.大型池大型池,用于提供一個大的緩沖區供數據庫的備份與恢復操作使用,它是SGA的可選區域。5.Java池Java池,用于在數據庫中支持Java的運行。252.4.1系統全局區(SGA)系統全局區(System2.4.2程序全局區(PGA)程序全局區(ProgramGlobalArea,PGA)是Oracle系統分配給一個進程的私有內存區域。程序全局區的大小由參數pga_aggregate_target決定,可以通過SHOWPARAMETER語句查看該參數的信息,如下:SQL>SHOWPARAMETERpga_aggregate_target;NAME TYPE VALUE-------------------------------- ------------- ----------pga_aggregate_target biginteger 20M262.4.2程序全局區(PGA)程序全局區(Program2.5數據字典數據字典是由Oracle自動創建并更新的一組表,它是Oracle數據庫的重要組成部分,提供了數據庫結構、數據庫對象空間分配和數據庫用戶等有關的信息。數據字典的所有者為sys用戶,而數據字典表和數據字典視圖都被保存在system表空間中。272.5數據字典數據字典是由Oracle自動創建并更2.5.1Oracle數據字典介紹Oracle數據字典(DataDictionary)是存儲在數據庫中的所有對象信息的知識庫,Oracle數據庫管理系統使用數據字典獲取對象信息和安全信息,而用戶和數據庫系統管理員則用數據字典來查詢數據庫信息。Oracle數據字典保存有數據庫中對象和段的信息,例如表、視圖、索引、包、存儲過程以及與用戶、權限、角色、審計和約束等相關的信息。282.5.1Oracle數據字典介紹Oracle數據字典(2.5.1Oracle數據字典介紹視圖類型說
明USER視圖USER視圖的名稱以user_為前綴,用來記錄用戶對象的信息。例如user_tables視圖,它記錄用戶的表信息ALL視圖ALL視圖的名稱以all_為前綴,用來記錄用戶對象的信息以及被授權訪問的對象信息。例如all_synonyms視圖,它記錄用戶可以存取的所有同義詞信息DBA視圖DBA視圖的名稱以dba_為前綴,用來記錄數據庫實例的所有對象的信息。例如dba_tables視圖,通過它可以訪問所有用戶的表信息V$視圖V$視圖的名稱以v$為前綴,用來記錄與數據庫活動相關的性能統計動態信息。例如v$datafile視圖,它記錄有關數據文件的統計信息GV$視圖GV$視圖的名稱以gv$為前綴,用來記錄分布式環境下所有實例的動態信息。例如gv$lock視圖,它記錄出現鎖的數據庫實例的信息292.5.1Oracle數據字典介紹視圖類型說明USE2.5.2Oracle常用數據字典1.基本的數據字典Oracle中基本的數據字典如表2-3所示。字典名稱說
明dba_tables所有用戶的所有表的信息dba_tab_columns所有用戶的表的字段信息dba_views所有用戶的所有視圖信息dba_synonyms所有用戶的同義詞信息dba_sequences所有用戶的序列信息dba_constraints所有用戶的表的約束信息dba_indexes所有用戶的表的索引簡要信息dba_ind_columns所有用戶的索引的字段信息dba_triggers所有用戶的觸發器信息dba_sources所有用戶的存儲過程信息dba_segments所有用戶的段的使用空間信息dba_extents所有用戶的段的擴展信息dba_objects所有用戶對象的基本信息cat當前用戶可以訪問的所有基表tab當前用戶創建的所有基表、視圖和同義詞等dict構成數據字典的所有表的信息302.5.2Oracle常用數據字典1.基本的數據字典字典2.5.2Oracle常用數據字典2.與數據庫組件相關的數據字典Oracle中與數據庫組件相關的數據字典如表2-4所示。數據庫組件數據字典中的表或視圖說
明數據庫v$datafile記錄系統的運行情況表空間dba_tablespaces記錄系統表空間的基本信息dba_free_space記錄系統表空間的空閑空間的信息控制文件v$controlfile記錄系統控制文件的基本信息v$controlfile_record_section記錄系統控制文件中記錄文檔段的信息v$parameter記錄系統各參數的基本信息數據文件dba_data_files記錄系統數據文件以及表空間的基本信息v$filestat記錄來自控制文件的數據文件信息v$datafile_header記錄數據文件頭部分的基本信息段dba_segments記錄段的基本信息數據區dba_extents記錄數據區的基本信息日志v$thread記錄日志線程的基本信息v$log記錄日志文件的基本信息v$logfile記錄日志文件的概要信息歸檔v$archived_log記錄歸檔日志文件的基本信息v$archive_dest記錄歸檔日志文件的路徑信息數據庫實例v$instance記錄實例的基本信息v$system_parameter記錄實例當前有效的參數信息內存結構v$sga記錄SGA區的大小信息v$sgastat記錄SGA的使用統計信息v$db_object_cache記錄對象緩存的大小信息v$sql記錄SQL語句的詳細信息v$sqltext記錄SQL語句的語句信息v$sqlarea記錄SQL區的SQL基本信息后臺進程v$bgprocess顯示后臺進程信息v$session顯示當前會話信息312.5.2Oracle常用數據字典2.與數據庫組件相關的2.5.2Oracle常用數據字典3.常用動態性能視圖Oracle中常用的動態性能視圖如表2-5所示。視圖名稱說
明v$fixed_table顯示當前發行的固定對象的說明v$instance顯示當前實例的信息v$latch顯示鎖存器的統計數據v$librarycache顯示有關庫緩存性能的統計數據v$rollstat顯示聯機的回滾段的名字v$rowcache顯示活動數據字典的統計v$sga顯示有關系統全局區的總結信息v$sgastat顯示有關系統全局區的詳細信息v$sort_usage顯示臨時段的大小及會話v$sqlarea顯示SQL區的SQL信息v$sqltext顯示在SGA中屬于共享游標的SQL語句內容v$stsstat顯示基本的實例統計數據v$system_event顯示一個事件的總計等待時間v$waitstat顯示塊競爭統計數據322.5.2Oracle常用數據字典3.常用動態性能視圖視2.6習題參見教材P35332.6習題參見教材P3533Oracle數據庫的體系結構經典課件34第2章Oracle數據庫的體系結構本章要點:了解Oracle的物理存儲結構。了解Oracle的邏輯存儲結構。了解Oracle進程結構。了解Oracle內存結構。熟悉Oracle中的數據字典。理解數據字典的作用。35第2章Oracle數據庫的體系結構本章要點:22.1物理存儲結構Oracle的物理存儲結構是由存儲在磁盤中的操作系統文件所組成的,Oracle在運行時需要使用這些文件。一般Oracle數據庫在物理上主要由3種類型的文件組成,分別是數據文件(*.dbf)、控制文件(*.ctl)和重做日志文件(*.log)。362.1物理存儲結構Oracle的物理存儲結構是由存儲在磁2.1.1數據文件數據文件(DataFile)是指存儲數據庫數據的文件。數據文件一般有以下幾個特點。(1) 一個表空間由一個或多個數據文件組成。(2) 一個數據文件只對應一個數據庫。而一個數據庫通常包含多個數據文件。(3) 數據文件可以通過設置其自動擴展參數,實現其自動擴展的功能。如果想要了解數據文件的信息,可以查詢數據字典dba_data_files和v$datafile。其中,dba_data_files主要有如下字段。file_name:數據文件的名稱以及存放路徑。file_id:數據文件在數據庫中的ID號。tablespace_name:數據文件對應的表空間名。bytes:數據文件的大小。blocks:數據文件所占用的數據塊數。status:數據文件的狀態。autoextensible:數據文件是否可擴展。372.1.1數據文件數據文件(DataFile)是指存儲2.1.1數據文件另一個數據字典v$datafile則記錄了數據文件的動態信息,它主要有如下字段。file#:存放數據文件的編號。status:數據文件的狀態。checkpoint_change#:數據文件的同步號,隨著系統的運行自動修改,以維持所有數據文件的同步。bytes:數據文件的大小。blocks:數據文件所占用的數據塊數。name:數據文件的名稱以及存放路徑。382.1.1數據文件另一個數據字典v$datafile則記2.1.2控制文件控制文件(ControlFile)是一個很小的二進制文件,用于描述和維護數據庫的物理結構。在Oracle數據庫中,控制文件相當重要,它存放有數據庫中數據文件和日志文件的信息。【例2.3】使用數據字典v$controlfile,查看當前數據庫的控制文件的名稱與路徑,具體如下:SQL>COLUMNnameFORMATA50;SQL>SELECTnameFROMv$controlfile;NAME-------------------------------------------------E:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL01.CTLE:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL02.CTLE:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL03.CTL392.1.2控制文件控制文件(ControlFile)是2.1.3重做日志文件重做日志文件(RedoLogFile)是記錄數據庫中所有修改信息的文件,簡稱日志文件。日志文件是數據庫系統的最重要的文件之一,它可以保證數據庫安全,是進行數據庫備份與恢復的重要手段。如果日志文件受損,數據庫同樣可能會無法正常運行。Oracle中的日志文件組是循環使用的,當所有日志文件組的空間都被填滿后,系統將重新切換到第一個日志文件組。發生日志切換時,日志文件組中已有的日志信息是否被覆蓋,取決于數據庫的運行模式。402.1.3重做日志文件重做日志文件(RedoLogF2.1.4其他文件1.參數文件參數文件用于記錄Oracle數據庫的基本參數信息,主要包括數據庫名和控制文件所在路徑等。參數文件分為文本參數文件和服務器參數文件。2.備份文件文件受損時,可以借助于備份文件對受損文件進行恢復。對文件進行還原的過程,就是用備份文件替換該文件的過程。3.歸檔重做日志文件歸檔重做日志文件用于對寫滿的日志文件進行復制并保存,具體功能由歸檔進程ARCn實現,該進程負責將寫滿的重做日志文件復制到歸檔日志目標中。4.警告、跟蹤日志文件當一個進程發現了一個內部錯誤時,它可以將關于錯誤的信息存儲到它的跟蹤文件中。而警告文件則是一種特殊的跟蹤文件,它包含錯誤事件的說明,而隨之產生的跟蹤文件則記錄該錯誤的詳細信息。412.1.4其他文件1.參數文件82.2邏輯存儲結構Oracle數據庫的邏輯存儲結構如圖2-1所示。422.2邏輯存儲結構Oracle數據庫的邏輯存儲結構如圖22.2.1表空間(Tablespace)表空間是Oracle中最大的邏輯存儲結構,它與物理上的一個或多個數據文件相對應,每個Oracle數據庫都至少擁有一個表空間,表空間的大小等于構成該表空間的所有數據文件大小的總和。在安裝Oracle時,Oracle數據庫系統一般會自動創建一系列表空間(如system)。可以通過數據字典dba_tablespaces查看表空間的信息。432.2.1表空間(Tablespace)表空間是Orac2.2.1表空間(Tablespace)表
空
間說
明sysaux輔助系統表空間。用于減少系統表空間的負荷,提高系統的作業效率。該表空間由Oracle系統內部自動維護,一般不用于存儲用戶數據system系統表空間,用于存儲系統的數據字典、系統的管理信息和用戶數據表等temp臨時表空間。用于存儲臨時的數據,例如存儲排序時產生的臨時數據。一般情況下,數據庫中的所有用戶都使用temp作為默認的臨時表空間。臨時表空間本身不是臨時存在的,而是永久存在的,只是保存在臨時表空間中的段是臨時的。臨時表空間的存在,可以減少臨時段與存儲在其他表空間中的永久段之間的磁盤I/O爭用undotbs1撤消表空間。用于在自動撤消管理方式下存儲撤消信息。在撤消表空間中,除了回退段以外,不能建立任何其他類型的段。所以,用戶不可以在撤消表空間中創建任何數據庫對象users用戶表空間。用于存儲永久性用戶對象和私有信息442.2.1表空間(Tablespace)表空間說2.2.2段(Segment)按照段中所存儲數據的特征,可以將段分為4種類型1.數據段2.索引段3.臨時段4.回退段452.2.2段(Segment)按照段中所存儲數據的特征,2.2.3區(Extent)在Oracle數據庫中,區是磁盤空間分配的最小單位,由一個或多個數據塊組成。當一個段中的所有空間被使用完后,系統將自動為該段分配一個新的區。一個或多個區組成一個段,所以段的大小由區的個數決定。不過,一個數據段可以包含的區的個數并不是無限制的,它由如下兩個參數決定。minextents:定義段初始分配的區的個數,也就是段最少可分配的區的個數。maxextents:定義一個段最多可以分配的區的個數。462.2.3區(Extent)在Oracle數據庫中,區是2.2.4數據塊(Block)數據塊(也可以簡稱為塊)是用來管理存儲空間的最基本單位,也是最小的邏輯存儲單位。Oracle數據庫在進行輸入輸出操作時,都是以塊為單位進行邏輯讀寫操作的。數據塊都具有相同的結構,其結構如圖2-2所示。塊的默認大小,由初始化參數db_block_size指定,數據庫創建完成之后,該參數值無法再修改。通過SHOWPARAMETER語句可以查看該參數的信息,如下:SQL>SHOWPARAMETERdb_block_size;NAME TYPE VALUE--------------------------- --------- ------------------------db_block_size integer 8192472.2.4數據塊(Block)數據塊(也可以簡稱為塊)是2.3Oracle進程結構Oracle數據庫啟動時,會啟動多個Oracle后臺進程,后臺進程是用于執行特定任務的可執行代碼塊,在系統啟動后異步地為所有數據庫用戶執行不同的任務。通過查詢數據字典v$bgprocess,可以了解數據庫中啟動的后臺進程信息。482.3Oracle進程結構Oracle數據庫啟動時,會啟2.3.1DBWn進程DBWn(DatabaseWriter,數據庫寫入)進程,是Oracle中采用LRU(LeastRecentlyUsed,最近最少使用)算法將數據緩沖區中的數據寫入數據文件的進程。DBWn進程主要有如下幾個作用:管理數據緩沖區,以便用戶進程總能找到空閑的緩沖區。將所有修改后的緩沖區數據寫入數據文件。使用LRU算法將最近使用過的塊保留在內存中。通過延遲寫來優化磁盤I/O讀寫。492.3.1DBWn進程DBWn(DatabaseWri2.3.1DBWn進程其工作過程如下。(1) 當一個用戶進程產生后,服務器進程查找內存緩沖區中是否存在用戶進程所需要的數據。(2) 如果內存中沒有需要的數據,則服務器進程從數據文件中讀取數據。這時,服務器進程會首先從LRU中查找是否有存放數據的空閑塊。(3) 如果LRU中沒有空閑塊,則將LRU中的DIRTY數據塊移入DIRTYLIST(弄臟表)。(4) 如果DIRTYLIST超長,服務器進程將會通知DBWn進程將數據寫入磁盤,刷新緩沖區。(5) 當LRU中有空閑塊后,服務器進程從磁盤的數據文件中讀取數據并存放到數據緩沖區中。502.3.1DBWn進程其工作過程如下。172.3.2LGWR進程LGWR(LogWriter,日志寫入)進程,是負責管理日志緩沖區的一個后臺進程,用于將日志緩沖區中的日志數據寫入磁盤的日志文件中。LGWR進程將日志信息同步地寫入在線日志文件組的多個日志成員文件中,如果日志文件組中的某個成員文件被刪除或者不可使用,則LGWR進程可以將日志信息寫入該組的其他文件中,從而不影響數據庫正常運行,但會在警告日志文件中記錄錯誤。512.3.2LGWR進程LGWR(LogWriter,日2.3.3CKPT進程CKPT(CheckPoint,檢查點或檢驗點)進程,一般在發生日志切換時自動產生,用于縮短實例恢復所需的時間。在檢查點期間,CKPT進程更新控制文件與數據文件的標題,從而反映最近成功的SCN(SystemChangeNumber,系統更改號)。在Oracle數據庫中,控制檢查點產生的參數有如下兩種。log_checkpoint_timeoutlog_checkpoint_interval522.3.3CKPT進程CKPT(CheckPoint,2.3.4SMON進程SMON(SystemMonitor,系統監控)進程,用于數據庫實例出現故障或系統崩潰時,通過將聯機重做日志文件中的條目應用于數據文件,執行崩潰恢復。SMON進程一般用于定期合并字典管理的表空間中的空閑空間,此外,它還用于在系統重新啟動期間清理所有表空間中的臨時段。532.3.4SMON進程SMON(SystemMonit2.3.5PMON進程PMON(ProcessMonitor,進程監控)進程,用于在用戶進程出現故障時執行進程恢復操作,負責清理內存存儲區和釋放該進程所使用的資源。PMON進程周期性檢查調度進程和服務器進程的狀態,如果發現進程已死,則重新啟動它。PMON進程被有規律地喚醒,檢查是否需要使用,或者其他進程發現需要時也可以調用此進程。542.3.5PMON進程PMON(ProcessMoni2.3.6ARCn進程ARCn(ArchiveProcess,歸檔)進程,用于將寫滿的日志文件復制到歸檔日志文件中,防止日志文件組中的日志信息由于日志文件組的循環使用而被覆蓋。一個Oracle數據庫實例中,允許啟動的ARCn進程的個數由參數log_archive_max_processes決定。552.3.6ARCn進程ARCn(ArchiveProc2.3.7RECO進程RECO(Recovery,恢復)進程存在于分布式數據庫系統中,用于自動解決在分布式數據庫中出現的事務故障。當一個數據庫服務器的RECO進程試圖與一個遠程服務器建立通信時,如果遠程服務器不可用或者無法建立網絡連接,則RECO進程將自動在一個時間間隔之后再次連接。562.3.7RECO進程RECO(Recovery,恢復)2.4Oracle內存結構Oracle內存結構是影響數據庫性能的主要因素之一,其結構如圖2-3所示。572.4Oracle內存結構Oracle內存結構是影響數據2.4.1系統全局區(SGA)系統全局區(SystemGlobalArea,SGA)是Oracle為系統分配的一組共享的內存結構,可以包含一個數據庫實例的數據或控制信息。1.數據緩沖區數據緩沖區用于存儲從磁盤數據文件中讀取的數據,供所有用戶共享。由于系統讀取內存的速度要比讀取磁盤快得多,所以數據緩沖區的存在可以提高數據庫的整體效率。2.日志緩沖區日志緩沖區用于存儲數據庫的修改操作信息。3.共享池共享池用于保存最近執行的SQL語句、PL/SQL程序的數據字典信息,它是對SQL語句和PL/SQL程序進行語法分析、編譯和執行的內存區域。共享池主要包括如下兩種子緩存。庫緩存(LibraryCache)數據字典緩存(DataDictionaryCache)4.大型池大型池,用于提供一個大的緩沖區供數據庫的備份與恢復操作使用,它是SGA的可選區域。5.Java池Java池,用于在數據庫中支持Java的運行。582.4.1系統全局區(SGA)系統全局區(System2.4.2程序全局區(PGA)程序全局區(ProgramGlobalArea,PGA)是Oracle系統分配給一個進程的私有內存區域。程序全局區的大小由參數pga_aggregate_target決定,可以通過SHOWPARAMETER語句查看該參數的信息,如下:SQL>SHOWPARAMETERpga_aggregate_target;NAME TYPE VALUE-------------------------------- ------------- ----------pga_aggregate_target biginteger 20M592.4.2程序全局區(PGA)程序全局區(Program2.5數據字典數據字典是由Oracle自動創建并更新的一組表,它是Oracle數據庫的重要組成部分,提供了數據庫結構、數據庫對象空間分配和數據庫用戶等有關的信息。數據字典的所有者為sys用戶,而數據字典表和數據字典視圖都被保存在system表空間中。602.5數據字典數據字典是由Oracle自動創建并更2.5.1Oracle數據字典介紹Oracle數據字典(DataDictionary)是存儲在數據庫中的所有對象信息的知識庫,Oracle數據庫管理系統使用數據字典獲取對象信息和安全信息,而用戶和數據庫系統管理員則用數據字典來查詢數據庫信息。Oracle數據字典保存有數據庫中對象和段的信息,例如表、視圖、索引、包、存儲過程以及與用戶、權限、角色、審計和約束等相關的信息。612.5.1Oracle數據字典介紹Oracle數據字典(2.5.1Oracle數據字典介紹視圖類型說
明USER視圖USER視圖的名稱以user_為前綴,用來記錄用戶對象的信息。例如user_tables視圖,它記錄用戶的表信息ALL視圖ALL視圖的名稱以all_為前綴,用來記錄用戶對象的信息以及被授權訪問的對象信息。例如all_synonyms視圖,它記錄用戶可以存取的所有同義詞信息DBA視圖DBA視圖的名稱以dba_為前綴,用來記錄數據庫實例的所有對象的信息。例如dba_tables視圖,通過它可以訪問所有用戶的表信息V$視圖V$視圖的名稱以v$為前綴,用來記錄與數據庫活動相關的性能統計動態信息。例如v$datafile視圖,它記錄有關數據文件的統計信息GV$視圖GV$視圖的名稱以gv$為前綴,用來記錄分布式環境下所有實例的動態信息。例如gv$lock視圖,它記錄出現鎖的數據庫實例的信息622.5.1O
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年SIC涂層石英玻璃管合作協議書
- 2025年物理治療康復設備項目建議書
- 專業水平及證書考取成績證明書(5篇)
- 醫學專家職業能力證明書(5篇)
- 公司股份認購協議書條款內容
- 游戲玩家賬號買賣協議
- 快遞物流行業配送中心建設協議
- 綠色農產品供應購銷協議樣板文件
- 體育場館服務管理合同
- 漁業資源捕撈與供應保障協議
- 赤峰市垃圾焚燒發電項目
- 2025年心理咨詢師執業資格考試試題及答案
- 殯葬單位面試題及答案
- 網絡科學在社會網絡分析中的應用-全面剖析
- 民法典講座課件
- 2024年蚌埠市龍子湖區產業發展有限公司招聘筆試真題
- 2025-2030中國螢石行業分析及供需形勢與投資風險研究報告
- 【安全隨行】新員工入場三級安全教育培訓
- 【《生育意愿及影響因素研究的國內外文獻綜述》3400字】
- 圖文廣告服務投標方案(技術方案)
- 建筑工地各工種安全操作規程
評論
0/150
提交評論