Oracle10g體系結構_第1頁
Oracle10g體系結構_第2頁
Oracle10g體系結構_第3頁
Oracle10g體系結構_第4頁
Oracle10g體系結構_第5頁
已閱讀5頁,還剩102頁未讀 繼續免費閱讀

付費下載

下載本文檔

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

文檔簡介

1、Version 3.0體系結構 DBA的職責的職責 Oracle體系結構由內存結構、進程結構、存體系結構由內存結構、進程結構、存儲結構組成儲結構組成 內存結構由內存結構由SGA、PGA組成組成 存儲結構由邏輯存儲、物理存儲組成存儲結構由邏輯存儲、物理存儲組成 進程結構由用戶進程和進程結構由用戶進程和Oracle進程組成進程組成. 數據庫管理員是一個或一組全面負責管理和控制數據庫系統的人員。簡稱:DBA(Data Base Administrator) 了解了解ORACLE數據庫的體系結構數據庫的體系結構 負責數據庫管理系統的安裝和升級負責數據庫管理系統的安裝和升級 啟動和關閉數據庫啟動和關閉數

2、據庫 管理和監控數據庫用戶管理和監控數據庫用戶 管理數據庫特權管理數據庫特權 管理存儲空間管理存儲空間 建立數據庫建立數據庫 后備和恢復數據庫后備和恢復數據庫 作為一名合格的DBA,必須深入地掌握Oracle 10g數據庫的體系結構.在理論知識的指導下,才會使許多難以理解和掌握的操作變得容易.客戶客戶服務器服務器服務器進程服務器進程(PGA區區)用戶進程用戶進程(SQL語句語句)Oracle server數據庫系統處理過程示意數據庫系統處理過程示意處理過程可以簡單的描述為處理過程可以簡單的描述為:1.用戶在其機器上運行基于用戶在其機器上運行基于Oracle的應用程序的應用程序(如如:SQL*P

3、LUS、PL/SQL Developer等等),即啟動用戶進程即啟動用戶進程.2.客戶機、服務器之間建立連接客戶機、服務器之間建立連接(Connect).3.服務器為用戶建立會話服務器為用戶建立會話(Session),并為該會話建立一個并為該會話建立一個PGA(Program Global Area,程序全局區程序全局區)以存儲與該會話相關的信息以存儲與該會話相關的信息.在同一個連接中在同一個連接中,不同的用戶有不同的會話不同的用戶有不同的會話.4.啟動服務進程啟動服務進程,由該服務進程負責執行該會話的各項任務由該服務進程負責執行該會話的各項任務.5.用戶進程發送用戶進程發送SQL語句語句(s

4、elect、update、commit.)6.服務器進程解析、編譯、執行服務器進程解析、編譯、執行SQL語句,然后將結果寫入數據庫語句,然后將結果寫入數據庫并返回結果給用戶進程。并返回結果給用戶進程。7.用戶進程接收返回的用戶進程接收返回的SQL執行結果。執行結果。8.在應用程序中顯示在應用程序中顯示SQL執行結果執行結果.客戶服務器服務器進程(PGA區)用戶進程(SQL語句)Oracle server用戶進程用戶進程服務器進程服務器進程解析解析StatementOKHandle執行執行OKHandle提取提取ResultsSELECT *FROM empORDER BY ename;總體結構

5、的三大部分總體結構的三大部分其中其中:內存結構:包括包括SGA和和PGA.使用內存最多的是使用內存最多的是SGA,同時同時也是影響數據庫性能的最大參數也是影響數據庫性能的最大參數.進程結構:包括前臺進程、后臺進程包括前臺進程、后臺進程.前臺進程是指服前臺進程是指服務進程和用戶進程務進程和用戶進程.前臺進程是根據實際需要而運行的,前臺進程是根據實際需要而運行的,并在需要結束后立刻結束。后臺進程是指在并在需要結束后立刻結束。后臺進程是指在Oracle數據數據庫啟動后庫啟動后,自動啟動的幾個操作系統進程自動啟動的幾個操作系統進程.存儲結構:包括控制文件、數據結構、日志文件等操包括控制文件、數據結構、

6、日志文件等操作系統文件作系統文件.Oracle數據庫的存儲結構分為邏輯存儲結構和物理存儲數據庫的存儲結構分為邏輯存儲結構和物理存儲結構結構,這兩種存儲結構既相互獨立又相互聯系這兩種存儲結構既相互獨立又相互聯系.數數據據庫庫結結構構數據文件數據文件日志文件日志文件控制文件控制文件參數文件參數文件物理結構物理結構表空間表空間段段范圍范圍數據庫塊數據庫塊邏輯結構邏輯結構 邏輯存儲結構主要描述邏輯存儲結構主要描述Oracle數據庫的內部數據庫的內部存儲結構存儲結構,即從技術概念上描述在即從技術概念上描述在Oracle數據數據庫種如何組織、管理數據庫種如何組織、管理數據. 因此因此,邏輯存儲結構是和操作

7、系統平臺無關邏輯存儲結構是和操作系統平臺無關的的,是由是由Oracle數據庫創建和管理的數據庫創建和管理的. 物理存儲結構主要描述物理存儲結構主要描述Oracle數據庫的外部數據庫的外部存儲結構存儲結構,即在操作系統種如何組織、管理即在操作系統種如何組織、管理數據數據. 因此,物理存儲結構是和操作系統平臺有因此,物理存儲結構是和操作系統平臺有關的關的. 必須對這兩種存儲結構有清晰的理解,并且要清楚在一個具體數據庫應用系統中,這兩種存儲結構的具體對應關系,否則就不能進行正常的管理操作、數據庫備份與恢復、性能優化等。物理存儲結構與邏輯存儲結構之間的關系物理存儲結構與邏輯存儲結構之間的關系從物理上看

8、從物理上看,數據庫數據庫由控制文件、數據文由控制文件、數據文件、重做日志文件等件、重做日志文件等操作系統文件組成;操作系統文件組成;從邏輯上來看,數據從邏輯上來看,數據庫是由系統表空間、庫是由系統表空間、用戶表空間等組成。用戶表空間等組成。表空間是最大的邏輯表空間是最大的邏輯單位,塊是最小的邏單位,塊是最小的邏輯單位。輯單位。邏輯存儲結構中的塊邏輯存儲結構中的塊最后對應到操作系統最后對應到操作系統中的塊中的塊.Version 3.0邏輯結構Oracle的邏輯結構是由一個或多個表空間組成。是由一個或多個表空間組成。 一個表空間一個表空間(tablespace)由一組段組成由一組段組成 一個段一個

9、段(segment)由一組區組成由一組區組成 一個區一個區(extent)由一批數據庫塊組成由一批數據庫塊組成 一個數據庫塊一個數據庫塊(block)對應一個或多個物理塊對應一個或多個物理塊TablespaceDatabase BlocksExtent84KSegment112KDatabaseDataFile表空間表空間段段區區塊塊 數據庫塊(Database Block)是數據庫使是數據庫使用的用的I/O最小單元,又稱邏輯塊或最小單元,又稱邏輯塊或ORACLE塊。塊。 一個數據庫塊對應一個或多個物理塊,塊一個數據庫塊對應一個或多個物理塊,塊的大小由參數的大小由參數DB_BLOCK_SIZE

10、確定。確定。 塊的大小是操作系統塊大小的整數倍塊的大小是操作系統塊大小的整數倍. 以以Win2K為例為例,操作系統塊操作系統塊(OS block)的大小為的大小為4kb,所以所以Oracle Block的大小可以是的大小可以是4kb,8kb,16kb等等。等等。 如果塊的大小為如果塊的大小為4kb,某表每行的數據是,某表每行的數據是100 bytes.,如果某查詢語句只返回,如果某查詢語句只返回1行數據行數據,那么,在那么,在將數據讀入到數據高速緩存時將數據讀入到數據高速緩存時,讀取的數據量時讀取的數據量時4kb而不是而不是100 bytes. 標題:包括通用的塊信息,如塊地址包括通用的塊信息

11、,如塊地址/段類型段類型等,最佳大小為等,最佳大小為85-100bytes。 表目錄:存儲聚集中表的信息,這些信息用存儲聚集中表的信息,這些信息用于聚集段。于聚集段。 行目錄:包括這塊中的有效行信息,允許使包括這塊中的有效行信息,允許使用每行開頭的用每行開頭的2bytes。 自由空間:這塊中能插入或修改的一組空間。這塊中能插入或修改的一組空間。 行數據:存儲表或索引的數據。存儲表或索引的數據。Command and Variable HeaderTable DirectoryRow DirectoryFree SpaceROW DATA數據庫塊的結構格式數據庫塊的結構格式pctfree 20%

12、左右 它們是互相消漲的pctused 40%左右Inittrans 在單一塊中最初活動的交易事務數Maxtrans 在單一塊中最大交易事務數PCTUSED(占用百分比) 用于行的用于行的INSERT的操作,當塊的百分的操作,當塊的百分比小于比小于PCTUSED時,可通過行時,可通過行DELETE或或UPDATE來減少列存儲。來減少列存儲。PCTFREE(自由百分比) 用于行的用于行的UPDATE操作,在遇到操作,在遇到PCTFREE后,這塊被填滿且不能進行后,這塊被填滿且不能進行INSERT操作。操作。PCTFREE = 20%PCTUSED = 40%PCTFREE = 20%PCTUSED

13、 = 40%Free Space 區(Extent)是數據庫存儲空間分配的是數據庫存儲空間分配的邏輯單位,一個邏輯單位,一個區區由一組數據庫塊組由一組數據庫塊組成,成,區區是由段分配的,分配的第一個是由段分配的,分配的第一個區區稱稱初始初始區區,以后分配的,以后分配的區區稱稱增量增量區區。 initial 最初分配的空間數(缺省為10k,5 個數據塊)next 下一步分配的空間數maxextents 最大分配的extent數minextents 最小分配的extnet數,所有重 做日志回滾段的存儲結構,必 須成對地分配extentpctincrease 增長率,指數級增長,optimal 盡量

14、設小,或為0(缺省為空, 僅用于回滾段)freelist pctincrease100()n1+ 段(Segment)是表空間中一個指定類是表空間中一個指定類型的邏輯存儲結構,它由一個或多個型的邏輯存儲結構,它由一個或多個區組成組成,段將占用并增長存儲空間。,段將占用并增長存儲空間。引導段引導段(Bootstrap Segment)存儲數據字典表的定義段的分段的分類類回滾段回滾段(Rollback Segment)存儲修改之前的位置和值索引段索引段(Index Segment)存儲表上最佳查詢的所有索引數據臨時段臨時段(Temporary Segment)存儲表排序操作期間建立的臨時表的數據數

15、據數據(表表)段段(Data Segment)存儲表中的所有數據 表空間是最大的邏輯單位,表空間是最大的邏輯單位,對應一個對應一個或多個數據文件,表空間的大小是它或多個數據文件,表空間的大小是它所對應的數據文件大小的總和所對應的數據文件大小的總和。數據庫、表空間、數據文件、方案對象數據庫、表空間、數據文件、方案對象(schema object)之間的關系之間的關系 Oracle 10g自動創建的表空間有自動創建的表空間有:Example(實例表空間實例表空間)Sysaux(輔助系統表空間輔助系統表空間)System(系統表空間系統表空間)Temp(臨時表空間臨時表空間)Undotbs(重做表空

16、間重做表空間)Users(用戶的表空間用戶的表空間) System : 系統表空間系統表空間,存放關于表空間的存放關于表空間的名稱、控制文件、數據文件等管理信息,名稱、控制文件、數據文件等管理信息,是最重要的表空間是最重要的表空間. 它屬于它屬于Sys、System兩個兩個schema(方案方案),僅,僅被這兩個或其他具有足夠權限的用戶使用。被這兩個或其他具有足夠權限的用戶使用。 但是均不可刪除或者重命名但是均不可刪除或者重命名System表空間表空間. Temp: 臨時表空間存放臨時表和臨時數據,臨時表空間存放臨時表和臨時數據,用于排序。用于排序。 Users: 用戶表空間,永久存放用戶對象

17、和私用戶表空間,永久存放用戶對象和私有信息,也被成為數據表空間。有信息,也被成為數據表空間。 Sysaux:輔助系統表空間,用于減少系統負荷,輔助系統表空間,用于減少系統負荷,提高系統的作業效率提高系統的作業效率. 一般地:系統用戶使用一般地:系統用戶使用system表空間表空間,非非系統用戶使用系統用戶使用Users表空間表空間Version 3.0物理結構 數據文件 日志文件 控制文件 參數文件 數據文件(Data File)是物理存儲是物理存儲Oracle數據庫數據數據庫數據的文件。其特點如下:的文件。其特點如下: 每一個數據文件只與一個數據庫相聯系。每一個數據文件只與一個數據庫相聯系。

18、 數據文件一旦被建立則不能修改其大小。數據文件一旦被建立則不能修改其大小。 一個表空間可包含一個或多個數據文件。一個表空間可包含一個或多個數據文件。 一個數據文件只能屬于一個表空間一個數據文件只能屬于一個表空間. 重做日志文件(Redo Log File)記錄所有對數據庫數據的修改,記錄所有對數據庫數據的修改,以備恢復數據時使用。其特點如下:以備恢復數據時使用。其特點如下: 每一個數據庫至少包含兩個日志文件組。每一個數據庫至少包含兩個日志文件組。 日志文件組以循環方式進行寫操作。日志文件組以循環方式進行寫操作。 每一個日志文件成員對應一個物理文件。每一個日志文件成員對應一個物理文件。 日志開關

19、(Log Switch)是為實現日志文件組的循環使用而是為實現日志文件組的循環使用而設置的。出現日志開關的情況如下:設置的。出現日志開關的情況如下: 當一個日志文件組被填滿時當一個日志文件組被填滿時 關閉數據庫時關閉數據庫時 DBA手動轉移日志開關手動轉移日志開關Log File 1Log File 2Member 2.1Member 1.1 鏡像日志文件是為防止日志文件的丟失,在不是為防止日志文件的丟失,在不同磁盤上同時維護兩個或多個聯機日志文件的同磁盤上同時維護兩個或多個聯機日志文件的副本。副本。 其特點如下:其特點如下: 每個日志文件組至少包含兩個日志文件成員。每個日志文件組至少包含兩個

20、日志文件成員。 每組的成員數目相同。每組的成員數目相同。 同組的所有成員同時被修改。同組的所有成員同時被修改。 同組的成員大小相同同組的成員大小相同,不同組的成員大小可不同不同組的成員大小可不同.Log File 1Log File 2Member 2.1Member 1.1Log File 3Log File 4Member 2.2Member 1.2Disk 1Disk 2 控制文件(Control File)是一個較小的二進是一個較小的二進制文件,用于描述數據庫結構。制文件,用于描述數據庫結構。描述信息如下:描述信息如下:數據庫建立的日期。數據庫建立的日期。數據庫名。數據庫名。數據庫中所

21、有數據數據庫中所有數據文件和日志文件的文件和日志文件的文件名及路徑。文件名及路徑。恢復數據庫時所需恢復數據庫時所需的同步信息。的同步信息。要點注意:要點注意:在打開和存取數據庫時在打開和存取數據庫時都要訪問該文件。都要訪問該文件。鏡像控制文件。鏡像控制文件。記錄控制文件名及路徑記錄控制文件名及路徑的參數為:的參數為:CONTROL_FILES 參數文件(Parameter File)是一個文本文件,可直接使用操是一個文本文件,可直接使用操作系統下的文本編輯器對其內容進行修改。該文件只在建作系統下的文本編輯器對其內容進行修改。該文件只在建立數據庫或啟動實例時才被訪問,在修改該文件之前必須立數據庫

22、或啟動實例時才被訪問,在修改該文件之前必須關閉實例。關閉實例。 初始參數文件:初始參數文件:init.ora 生成參數文件:生成參數文件:initSID.ora config.ora參數文件的作用:參數文件的作用: 確定存儲結構的大小。確定存儲結構的大小。 設置數據庫的全部缺省值。設置數據庫的全部缺省值。 設置數據庫的范圍。設置數據庫的范圍。 設置數據庫的各種物理屬性。設置數據庫的各種物理屬性。 優化數據庫性能。優化數據庫性能。參數文件中參數的數據類型:參數文件中參數的數據類型: 整型整型 例:例:DB_BLOCK_SIZE = 2048 字符型字符型 例:例:DB_NAME = ora9 邏

23、輯型邏輯型 例:例:CHECKPOINT_PROCESS = trueVersion 3.01.3 軟件結構 Oracle數據庫結構又稱為例程結構數據庫結構又稱為例程結構. 數據庫啟動時:數據庫啟動時: Oracle首先要在內存中獲取、劃分、保留各種用途的區域,運行各種用途的后臺,即:創建一個例程(instance); 然后由該例程裝載(mount)、打開(open)數據庫; 最后由這個例程來訪問和控制數據庫的各種物理結構 如果把如果把Oracle數據庫比作一部汽車,數據庫比作一部汽車,instance相當于汽車的發動機一樣相當于汽車的發動機一樣,啟動啟動oracle數據庫數據庫前提應先啟動前

24、提應先啟動instance. 當用戶連接到數據庫并使用數據庫時,實際上是當用戶連接到數據庫并使用數據庫時,實際上是連接到該數據庫的例程,通過例程來連接、使用連接到該數據庫的例程,通過例程來連接、使用數據庫。數據庫。 所以例程是用戶和數據庫之間的中間層。所以例程是用戶和數據庫之間的中間層。 例程與數據庫的區別:例程與數據庫的區別: 數據庫指的是存儲數據的物理結構,總是實際存在的; 例程則是由內存結構和一系列進程組成,可以啟動和關閉。 一臺計算機上可以創建多個一臺計算機上可以創建多個Oracle數據庫,數據庫,一個數據庫上可以有多個例程。一個數據庫上可以有多個例程。 為了使例程間不混淆,每個例程都

25、稱為:為了使例程間不混淆,每個例程都稱為:SID(SystemIDentify)加以區分。加以區分。實例( INSTANCE ) 是存取和控制數據庫的軟件機制,它由系統全局區(是存取和控制數據庫的軟件機制,它由系統全局區(System Global Area,簡稱,簡稱SGA)和后臺進程組成。)和后臺進程組成。后臺進程后臺進程實例實例SGA數據數據高速緩存高速緩存共享池共享池日志日志高速緩存高速緩存內存結構內存結構進程結構進程結構內存結構和進程結構共同組成了軟件結構內存結構和進程結構共同組成了軟件結構 內存結構是內存結構是Oracle數據庫體系中最為重要的數據庫體系中最為重要的一部分,內存也是

26、影響數據庫性能的第一一部分,內存也是影響數據庫性能的第一因素因素. 按照內存的使用方法的不同按照內存的使用方法的不同,Oracle數據庫的數據庫的內存又可以分為內存又可以分為SGA(Syste Global Area)和和PGA(Program Global Area). SGA是是ORACLE系統為實例分配的一組共享緩沖系統為實例分配的一組共享緩沖存儲區,用于存放數據庫數據和控制信息,以實存儲區,用于存放數據庫數據和控制信息,以實現對數據庫數據的管理和操作。現對數據庫數據的管理和操作。 每個例程都只有一個每個例程都只有一個SGA. 它是不同用戶進程與服務進程進行通信的中心它是不同用戶進程與服

27、務進程進行通信的中心,數據庫的各種操作主要在數據庫的各種操作主要在SGA中進行中進行,所以稱其為所以稱其為系統全局區系統全局區. 創建例程時,Oracle為SGA分配內存; 終止例程時,釋放SGA所占用的內存. 必須對SGA的組成和原理有所了解. 系統全局區由以下幾個部分組成: 保存最近從數據文件中讀取的數據塊保存最近從數據文件中讀取的數據塊,其中的數其中的數據被所有用戶共享據被所有用戶共享. 兩個參數影響兩個參數影響DBC: DB_BLOCK_SIZE 緩沖區數據塊大小 DB_BLOCK_BUFFERS 緩沖區數據塊個數 初次訪問數據時初次訪問數據時,Oracle將讀取將讀取磁盤上的數據文件

28、磁盤上的數據文件,將數據放入將數據放入數據高速緩存,再處理數據;數據高速緩存,再處理數據; 如果數據已經位于數據高速緩如果數據已經位于數據高速緩存中時存中時,Oracle直接操作數據。直接操作數據。數據緩沖區數據文件DBC的緩存塊分為三類的緩存塊分為三類: 臟緩存塊 存放已經被修改過的緩存塊存放已經被修改過的緩存塊. 當當SQL修改某個緩存塊中的數據,則這個緩修改某個緩存塊中的數據,則這個緩存塊被標記為臟緩存塊存塊被標記為臟緩存塊 空閑緩存塊 等待寫入數據的空閑緩存塊等待寫入數據的空閑緩存塊. 命中緩存塊 最近正在被訪問的緩存塊最近正在被訪問的緩存塊.Oracle通過通過2個列表來管理上述緩存

29、塊個列表來管理上述緩存塊: 臟列表臟列表(DIRTY) 包括被修改過但尚未寫到數據文件的緩沖包括被修改過但尚未寫到數據文件的緩沖塊。塊。 LRU(Least Recently Used)列表列表 包括空閑緩沖塊、命中緩存塊包括空閑緩沖塊、命中緩存塊,以及還沒以及還沒有移到臟列表的緩沖塊。有移到臟列表的緩沖塊。1.讀數據入讀數據入DBC之前之前,先在先在LRU中搜索空閑緩存塊中搜索空閑緩存塊;在搜索過程中如果發現臟緩在搜索過程中如果發現臟緩存塊存塊,則將其移入則將其移入DIRTY;2.找到足夠的空閑塊找到足夠的空閑塊,將所有數據讀入;將所有數據讀入;3,4.如果空閑塊不足,則暫停搜索,如果空閑塊

30、不足,則暫停搜索,Oralce立刻啟動立刻啟動DBWR進程進程,將將DIRTY中的中的臟緩存塊數據寫入數據文件釋放足夠的空閑緩存塊。臟緩存塊數據寫入數據文件釋放足夠的空閑緩存塊。數據庫寫進程數據庫寫進程 當執行當執行DML(Data Manipulation Language, 數據操縱語言數據操縱語言)如如:update、delete、insert或者或者create、alter、drop 等語句時等語句時,Oracle都會為這都會為這些操作生成重做記錄些操作生成重做記錄. 重做日志高速緩存就是用于存儲重做記重做日志高速緩存就是用于存儲重做記錄的緩存錄的緩存.為提高效率為提高效率,重做記錄并

31、不直接寫入磁盤的重做日志文件重做記錄并不直接寫入磁盤的重做日志文件,而是先寫入而是先寫入重做日志緩存重做日志緩存;當重做日志緩存中的重做記錄達到一定數量時當重做日志緩存中的重做記錄達到一定數量時,由由LGWR進程寫入重進程寫入重做日志做日志.(先內存后磁盤先內存后磁盤)當當2個個(至少至少2個個)重做日志切換時重做日志切換時,由由ARCH將重做日志中的數據寫入歸將重做日志中的數據寫入歸檔日志文件,以做備份檔日志文件,以做備份.日志寫進程日志寫進程歸檔進程歸檔進程 共享池保存了最近執行的共享池保存了最近執行的SQL語句、語句、PL/SQL程序和數據字典信息程序和數據字典信息,是對是對SQL語句和

32、語句和PL/SQL程序進行語法分析、編譯、執行的內程序進行語法分析、編譯、執行的內存區存區.共享池共享池由庫緩存和數據字典緩存組成。參數SHARED_POOL_SIZE 確定共享池的大小。庫緩存庫緩存(Library Cache)區包括區包括解析用戶進程提交的解析用戶進程提交的SQL語句或語句或PL/SQL程序程序保存最近解析過的保存最近解析過的 SQL語句或語句或PL/SQL程序程序數據字典區數據字典區(Dictionary cache)用于存放數據字典信息行。用于存放數據字典信息行。 Oracle DBMS執行各種執行各種SQL、PL/SQL之前之前,要對其進要對其進行語法上的解析、對象上

33、的確認、權限上的判斷、行語法上的解析、對象上的確認、權限上的判斷、操作上的優化等一系列操作,并生成執行計劃。操作上的優化等一系列操作,并生成執行計劃。 庫緩存保存了已經解析的庫緩存保存了已經解析的SQL和和PL/SQL。 所以,請盡量使用預處理查詢所以,請盡量使用預處理查詢. 在在Oracle運行過程中運行過程中,Oracle會頻繁的對數據字典會頻繁的對數據字典中的表、視圖進行訪問,以便確定操作的數據對中的表、視圖進行訪問,以便確定操作的數據對象是否存在、是否具有合適的權限等信息。象是否存在、是否具有合適的權限等信息。 數據字典緩保存了最常用的數據字典信息。數據字典緩保存了最常用的數據字典信息

34、。 數據字典緩存中存放的記錄是一條一條的數據字典緩存中存放的記錄是一條一條的, 而其他緩存區中保存的是數據塊而其他緩存區中保存的是數據塊.大池用于需要大內存操作提供相對獨立的內存空大池用于需要大內存操作提供相對獨立的內存空間,以便提高性能。間,以便提高性能。大池是可選的內存結構。大池是可選的內存結構。 DBA可以決定是否需要在可以決定是否需要在SGA中創建大池。中創建大池。 需要大池的操作需要大池的操作: 數據庫備份和恢復數據庫備份和恢復 大量排序的大量排序的SQL語句語句 并行化的數據庫操作并行化的數據庫操作 8i以后提供的對以后提供的對Java的支持的支持,用于存放用于存放Java代碼、代

35、碼、Java程序等程序等. 一般不小于一般不小于20M,以便虛擬機運行以便虛擬機運行. PGA是用戶進程連接到數據庫是用戶進程連接到數據庫,并創建一個對應并創建一個對應的會話時,由的會話時,由Oracle為服務進程分配的,專門用于為服務進程分配的,專門用于當前用戶會話的內存區。當前用戶會話的內存區。 PGA是非共享的,而是非共享的,而SGA是共享的。是共享的。 PGA大小由操作系統決定,并且分配后保持不大小由操作系統決定,并且分配后保持不變;變; 會話終止時,自動釋放會話終止時,自動釋放PGA所占的內存。所占的內存。排序區排序區會話區會話區游標區游標區堆棧區堆棧區PGA服務器進程服務器進程 執

36、行執行order by、group by等包含排序操作的等包含排序操作的SQL語句時所產生的臨時數據語句時所產生的臨時數據. Oracle將準備排序的數據先臨時存儲到排將準備排序的數據先臨時存儲到排序區中,并在排序區中排序,然后將排序序區中,并在排序區中排序,然后將排序好的數據返回給用戶好的數據返回給用戶. 保存會話所具有的權限、角色、性能統計保存會話所具有的權限、角色、性能統計信息信息. 當運行帶有游標當運行帶有游標(course)的的PL/SQL語句時,語句時,Oracle會在共享池中為該語句分配上下文會在共享池中為該語句分配上下文(Context),游標實際上是指向該上下文的指,游標實際

37、上是指向該上下文的指針。針。 保存會話中的綁定變量、會話變量以及保存會話中的綁定變量、會話變量以及SQL語句運行時的內存結構信息。語句運行時的內存結構信息。 例如:例如: select * from emp where emp=:a; :a就是綁定變量就是綁定變量,提示用戶輸入提示用戶輸入. 在等待用戶輸入時,先將該變量存入堆棧,在等待用戶輸入時,先將該變量存入堆棧,以便可以同時運行其他語句以便可以同時運行其他語句. 進程時操作系統中的一個概念,是一個可以獨立進程時操作系統中的一個概念,是一個可以獨立調用的活動,用于完成指定的任務。調用的活動,用于完成指定的任務。 進程與程序的區別是:進程與程

38、序的區別是: 進程是動態創建的,完成后銷毀;程序是靜態的實體,可以復制、編輯。 進程強調執行過程,程序僅僅是指令的有序集合。 進程在內存中,程序在外存中。 Oracle包括用戶進程和包括用戶進程和Oracle進程兩類:進程兩類: 用 戶 進 程 服務器進程 后 臺 進 程Oracle進程 當用戶運行一個應用程序時,當用戶運行一個應用程序時,就建立一個用戶進程。就建立一個用戶進程。 服務器進程 處理用戶進程的請求。處理用戶進程的請求。 處理過程 分析SQL命令并生成執行方案。 從數據緩沖存儲區中讀取數據。 將執行結果返回給用戶。后臺進程后臺進程 為所有數據庫用戶異步完成各種任務。主要的后臺進程有

39、主要的后臺進程有 DBWR 數據庫寫進程 LGWR 日志寫進程 CKPT 檢查點寫進程 SMON 系統監控進程 PMON 進程監控進程 ARCH 歸檔進程 RECO 恢復進程 LCKn 封鎖進程DBWR(Data Base Writer) 將數據緩沖區中所有修改過的緩沖塊數據將數據緩沖區中所有修改過的緩沖塊數據寫到數據文件中,并使用寫到數據文件中,并使用LRU算法來保持緩算法來保持緩沖區中的數據塊為最近經常使用的,以減沖區中的數據塊為最近經常使用的,以減少少I/O次數。次數。 該進程在啟動實例時自動啟動。該進程在啟動實例時自動啟動。臟列表達到最低限制。臟列表達到最低限制。 相當于參數相當于參數

40、DB_BLOCK_WRITE_BATCH值的一半。值的一半。一個進程在一個進程在LRU列表中掃描指定數目的緩沖塊,未找到空閑緩沖列表中掃描指定數目的緩沖塊,未找到空閑緩沖塊。塊。 參數參數DB_BLOCK_MAX_SCAN_CNT確定掃描數目。確定掃描數目。出現超時出現超時 3秒鐘內該進程未活動,則該進程將在秒鐘內該進程未活動,則該進程將在LRU列表中查找尚未查找的列表中查找尚未查找的緩沖塊,這組緩沖塊的數目相當于參數緩沖塊,這組緩沖塊的數目相當于參數DB_BLOCK_WRITE_BATCH值的值的2倍。倍。出現檢查點。出現檢查點。檢查點(Checkpoint) : 在檢查點出現期間,在檢查點

41、出現期間,DBWR進程將數據緩進程將數據緩沖區中的所有臟緩沖塊寫到數據文件中,沖區中的所有臟緩沖塊寫到數據文件中,LGWR進程將日志緩沖區中的所有記錄項寫進程將日志緩沖區中的所有記錄項寫到日志文件中,以確保上一個檢查點至今到日志文件中,以確保上一個檢查點至今修改過的所有數據塊都被寫到磁盤上。修改過的所有數據塊都被寫到磁盤上。檢查點: 預定數目的記錄項被填滿。預定數目的記錄項被填滿。 參數參數LOG_CHECKPOINT_INTERVAL確定了預定數確定了預定數目。目。 設置指定的秒數。設置指定的秒數。 參數參數LOG_CHECKPOINT_TIMEOUT確定了間隔秒數。確定了間隔秒數。 每個日

42、志開關處每個日志開關處 關閉實例時關閉實例時LGWR(Log Writer) 將日志緩沖區中的所有記錄項寫將日志緩沖區中的所有記錄項寫到日志文件中。到日志文件中。 該進程在啟動實例時自動啟動。該進程在啟動實例時自動啟動。 用戶進程提交一個事務(用戶進程提交一個事務(Commit) 日志緩沖區達到日志緩沖區達到1/3范圍范圍 DBWR對一個檢查點需要清除緩沖塊對一個檢查點需要清除緩沖塊 出現超時(出現超時(3秒鐘內未活動,則進行一秒鐘內未活動,則進行一次寫操作。)次寫操作。)CKPT(Checkpointer) 在控制文件中記錄檢查點。參數在控制文件中記錄檢查點。參數CHECKPOINT_PRO

43、CESS 確定了檢查點的啟動確定了檢查點的啟動/不啟動狀態。不啟動狀態。 若若CKPT進程不啟動,則該進程的工作將由進程不啟動,則該進程的工作將由LGWR進程代進程代勞。(如果數據庫的數據文件過多,這樣操作會降低系統勞。(如果數據庫的數據文件過多,這樣操作會降低系統性能。)性能。)ARCH(Archiver) 在日志文件組出現切換時,將舊日在日志文件組出現切換時,將舊日志文件的內容拷貝到脫機存儲介質上,志文件的內容拷貝到脫機存儲介質上,出現介質失敗時用于恢復數據。出現介質失敗時用于恢復數據。 LOG_ARCHIVE_START 確定了該進程的啟動確定了該進程的啟動/不啟動狀態不啟動狀態ARCH

44、存儲介質 LOG_ARCHIVE_DEST 當數據庫在歸檔模式下操作時,該當數據庫在歸檔模式下操作時,該參數確定了日志文件的歸檔目標。參數確定了日志文件的歸檔目標。 LOG_ARCHIVE_FORMAT 當數據庫在歸檔模式下操作時,該當數據庫在歸檔模式下操作時,該參數確定了歸檔日志文件的缺省文件參數確定了歸檔日志文件的缺省文件名格式。名格式。ARCH存儲介質 SMON(System Monitor,系統檢視進程) 負責完成自動實例恢復。該進程在啟動實例時負責完成自動實例恢復。該進程在啟動實例時自動啟動。自動啟動。 PMON(Process Monitor,進程檢視進程) 撤消異常中斷的用戶進程

45、,并釋放該進程已獲撤消異常中斷的用戶進程,并釋放該進程已獲得的系統資源或鎖。得的系統資源或鎖。 RECO(Recover,恢復進程) 在分布式操作的情況下,恢復一個事務的在分布式操作的情況下,恢復一個事務的失敗。失敗。 LCKn(Lock,鎖進程) 在并行服務器系統間加鎖,最多可加在并行服務器系統間加鎖,最多可加10個個鎖,分別為鎖,分別為LCK0,LCK1,LCK9。處理SQL語句的三個階段 語法分析語法分析 執行執行 返回指令返回指令Server共享池數據緩沖區日志緩沖區UserUserUserSQL SELECT ename FROM emp ;Server共享池數據緩沖區日志緩沖區Us

46、erUserUserSMITHALLENWARD Server共享池數據緩沖區日志緩沖區SELECT操作操作SQL SELECT sal FROM emp WHERE job = CLERK ;Server共享池數據緩沖區UserUserUserB1B2EMP TableBlock 1Block2UPDATE操作 為了支持讀一致性,恢復和回滾,所有為了支持讀一致性,恢復和回滾,所有修改操作需要回滾段。修改操作執行:修改操作需要回滾段。修改操作執行: 將數據塊送到數據緩沖區將數據塊送到數據緩沖區 將回滾塊送到數據緩沖區將回滾塊送到數據緩沖區 在修改行上設置行鎖在修改行上設置行鎖 保存回滾數據到回滾段塊保存回滾數據到回滾段塊 將修改寫到數據塊將修改寫到數據塊SQL SELECT sal FROM emp WHERE job = CLERK ;Server1UserUserUser1Server2UserUserUser2共享池數據緩沖區B1B2R2R1EMP TableBlock 1Block2RB01R1R2Data File 1Data File 2 SQL UPDATE emp SET sal = sal * 1.1 WHERE j

溫馨提示

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

評論

0/150

提交評論