版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Oracle數(shù)據(jù)庫體系結(jié)構(gòu)專題講義Oracle數(shù)據(jù)庫體系結(jié)構(gòu)專題講義內(nèi)容簡(jiǎn)介本課主要講授Oracle10g體系結(jié)構(gòu)適用于數(shù)據(jù)庫管理員(DBA)Oracle9i同樣適用2廈門理工學(xué)院計(jì)算機(jī)系內(nèi)容簡(jiǎn)介本課主要講授Oracle10g體系結(jié)構(gòu)2廈門理工學(xué)概要DBA的職責(zé)Oracle體系結(jié)構(gòu)由內(nèi)存結(jié)構(gòu)、進(jìn)程結(jié)構(gòu)、存儲(chǔ)結(jié)構(gòu)組成內(nèi)存結(jié)構(gòu)由SGA、PGA組成存儲(chǔ)結(jié)構(gòu)由邏輯存儲(chǔ)、物理存儲(chǔ)組成進(jìn)程結(jié)構(gòu)由用戶進(jìn)程和Oracle進(jìn)程組成.3廈門理工學(xué)院計(jì)算機(jī)系概要DBA的職責(zé)3廈門理工學(xué)院計(jì)算機(jī)系什么是DBA?數(shù)據(jù)庫管理員是一個(gè)或一組全面負(fù)責(zé)管理和控制數(shù)據(jù)庫系統(tǒng)的人員。
簡(jiǎn)稱:DBA(DataBaseAdministrator)4廈門理工學(xué)院計(jì)算機(jī)系什么是DBA?數(shù)據(jù)庫管理員是一個(gè)或一組全面負(fù)責(zé)管理和控制數(shù)據(jù)DBA的主要職責(zé)了解ORACLE數(shù)據(jù)庫的體系結(jié)構(gòu)負(fù)責(zé)數(shù)據(jù)庫管理系統(tǒng)的安裝和升級(jí)啟動(dòng)和關(guān)閉數(shù)據(jù)庫管理和監(jiān)控?cái)?shù)據(jù)庫用戶管理數(shù)據(jù)庫特權(quán)管理存儲(chǔ)空間建立數(shù)據(jù)庫后備和恢復(fù)數(shù)據(jù)庫5廈門理工學(xué)院計(jì)算機(jī)系DBA的主要職責(zé)了解ORACLE數(shù)據(jù)庫的體系結(jié)構(gòu)5廈門理工學(xué)DBA與理論知識(shí)作為一名合格的DBA,必須深入地掌握Oracle10g數(shù)據(jù)庫的體系結(jié)構(gòu).在理論知識(shí)的指導(dǎo)下,才會(huì)使許多難以理解和掌握的操作變得容易.6廈門理工學(xué)院計(jì)算機(jī)系DBA與理論知識(shí)作為一名合格的DBA,必須深入地掌握OracOracle工作原理客戶服務(wù)器服務(wù)器進(jìn)程(PGA區(qū))用戶進(jìn)程(SQL語句)Oracleserver數(shù)據(jù)庫系統(tǒng)處理過程示意7廈門理工學(xué)院計(jì)算機(jī)系Oracle工作原理客戶服務(wù)器服務(wù)器進(jìn)程用戶進(jìn)程Oracle處理過程可以簡(jiǎn)單的描述為:用戶在其機(jī)器上運(yùn)行基于Oracle的應(yīng)用程序(如:SQL*PLUS、PL/SQLDeveloper等),即啟動(dòng)用戶進(jìn)程.客戶機(jī)、服務(wù)器之間建立連接(Connect).服務(wù)器為用戶建立會(huì)話(Session),并為該會(huì)話建立一個(gè)PGA(ProgramGlobalArea,程序全局區(qū))以存儲(chǔ)與該會(huì)話相關(guān)的信息.在同一個(gè)連接中,不同的用戶有不同的會(huì)話.啟動(dòng)服務(wù)進(jìn)程,由該服務(wù)進(jìn)程負(fù)責(zé)執(zhí)行該會(huì)話的各項(xiàng)任務(wù).用戶進(jìn)程發(fā)送SQL語句(select、update、commit….)服務(wù)器進(jìn)程解析、編譯、執(zhí)行SQL語句,然后將結(jié)果寫入數(shù)據(jù)庫并返回結(jié)果給用戶進(jìn)程。用戶進(jìn)程接收返回的SQL執(zhí)行結(jié)果。在應(yīng)用程序中顯示SQL執(zhí)行結(jié)果.Oracle工作原理客戶服務(wù)器服務(wù)器進(jìn)程(PGA區(qū))用戶進(jìn)程(SQL語句)Oracleserver8廈門理工學(xué)院計(jì)算機(jī)系處理過程可以簡(jiǎn)單的描述為:Oracle工作原理客戶服務(wù)器服務(wù)處理查詢用戶進(jìn)程服務(wù)器進(jìn)程解析StatementOKHandle執(zhí)行OKHandle提取ResultsSELECT*FROMempORDERBYename;9廈門理工學(xué)院計(jì)算機(jī)系處理查詢用戶進(jìn)程服務(wù)器進(jìn)程解析StatementOKHand總體結(jié)構(gòu)總體結(jié)構(gòu)的三大部分10廈門理工學(xué)院計(jì)算機(jī)系總體結(jié)構(gòu)總體結(jié)構(gòu)的三大部分10廈門理工學(xué)院計(jì)算機(jī)系總體結(jié)構(gòu)11廈門理工學(xué)院計(jì)算機(jī)系總體結(jié)構(gòu)11廈門理工學(xué)院計(jì)算機(jī)系總體結(jié)構(gòu)其中:內(nèi)存結(jié)構(gòu):包括SGA和PGA.使用內(nèi)存最多的是SGA,同時(shí)也是影響數(shù)據(jù)庫性能的最大參數(shù).進(jìn)程結(jié)構(gòu):包括前臺(tái)進(jìn)程、后臺(tái)進(jìn)程.前臺(tái)進(jìn)程是指服務(wù)進(jìn)程和用戶進(jìn)程.前臺(tái)進(jìn)程是根據(jù)實(shí)際需要而運(yùn)行的,并在需要結(jié)束后立刻結(jié)束。后臺(tái)進(jìn)程是指在Oracle數(shù)據(jù)庫啟動(dòng)后,自動(dòng)啟動(dòng)的幾個(gè)操作系統(tǒng)進(jìn)程.存儲(chǔ)結(jié)構(gòu):包括控制文件、數(shù)據(jù)結(jié)構(gòu)、日志文件等操作系統(tǒng)文件.12廈門理工學(xué)院計(jì)算機(jī)系總體結(jié)構(gòu)其中:12廈門理工學(xué)院計(jì)算機(jī)系存儲(chǔ)結(jié)構(gòu)Oracle數(shù)據(jù)庫的存儲(chǔ)結(jié)構(gòu)分為邏輯存儲(chǔ)結(jié)構(gòu)和物理存儲(chǔ)結(jié)構(gòu),這兩種存儲(chǔ)結(jié)構(gòu)既相互獨(dú)立又相互聯(lián)系.數(shù)據(jù)庫結(jié)構(gòu)數(shù)據(jù)文件日志文件控制文件參數(shù)文件物理結(jié)構(gòu)表空間段范圍數(shù)據(jù)庫塊邏輯結(jié)構(gòu)13廈門理工學(xué)院計(jì)算機(jī)系存儲(chǔ)結(jié)構(gòu)Oracle數(shù)據(jù)庫的存儲(chǔ)結(jié)構(gòu)分為邏輯存儲(chǔ)結(jié)構(gòu)和物理存物理存儲(chǔ)結(jié)構(gòu)物理存儲(chǔ)結(jié)構(gòu)主要描述Oracle數(shù)據(jù)庫的外部存儲(chǔ)結(jié)構(gòu),即在操作系統(tǒng)種如何組織、管理數(shù)據(jù).因此,物理存儲(chǔ)結(jié)構(gòu)是和操作系統(tǒng)平臺(tái)有關(guān)的.14廈門理工學(xué)院計(jì)算機(jī)系物理存儲(chǔ)結(jié)構(gòu)物理存儲(chǔ)結(jié)構(gòu)主要描述Oracle數(shù)據(jù)庫的外部存儲(chǔ)邏輯存儲(chǔ)結(jié)構(gòu)邏輯存儲(chǔ)結(jié)構(gòu)主要描述Oracle數(shù)據(jù)庫的內(nèi)部存儲(chǔ)結(jié)構(gòu),即從技術(shù)概念上描述在Oracle數(shù)據(jù)庫種如何組織、管理數(shù)據(jù).因此,邏輯存儲(chǔ)結(jié)構(gòu)是和操作系統(tǒng)平臺(tái)無關(guān)的,是由Oracle數(shù)據(jù)庫創(chuàng)建和管理的.15廈門理工學(xué)院計(jì)算機(jī)系邏輯存儲(chǔ)結(jié)構(gòu)邏輯存儲(chǔ)結(jié)構(gòu)主要描述Oracle數(shù)據(jù)庫的內(nèi)部存儲(chǔ)DBA注意DBA必須對(duì)這兩種存儲(chǔ)結(jié)構(gòu)有清晰的理解,并且要清楚在一個(gè)具體數(shù)據(jù)庫應(yīng)用系統(tǒng)中,這兩種存儲(chǔ)結(jié)構(gòu)的具體對(duì)應(yīng)關(guān)系,否則就不能進(jìn)行正常的管理操作、數(shù)據(jù)庫備份與恢復(fù)、性能優(yōu)化等。16廈門理工學(xué)院計(jì)算機(jī)系DBA注意DBA必須對(duì)這兩種存儲(chǔ)結(jié)構(gòu)有清晰的理解,并且要清楚存儲(chǔ)結(jié)構(gòu)物理存儲(chǔ)結(jié)構(gòu)與邏輯存儲(chǔ)結(jié)構(gòu)之間的關(guān)系從物理上看,數(shù)據(jù)庫由控制文件、數(shù)據(jù)文件、重做日志文件等操作系統(tǒng)文件組成;從邏輯上來看,數(shù)據(jù)庫是由系統(tǒng)表空間、用戶表空間等組成。表空間是最大的邏輯單位,塊是最小的邏輯單位。邏輯存儲(chǔ)結(jié)構(gòu)中的塊最后對(duì)應(yīng)到操作系統(tǒng)中的塊.17廈門理工學(xué)院計(jì)算機(jī)系存儲(chǔ)結(jié)構(gòu)物理存儲(chǔ)結(jié)構(gòu)與邏輯存儲(chǔ)結(jié)構(gòu)之間的關(guān)系從物理上看,數(shù)據(jù)Oracle10g體系結(jié)構(gòu)--2.1物理結(jié)構(gòu)18Oracle10g體系結(jié)構(gòu)--2.1物理結(jié)構(gòu)18Oracle數(shù)據(jù)庫物理結(jié)構(gòu)數(shù)據(jù)文件日志文件控制文件參數(shù)文件19廈門理工學(xué)院計(jì)算機(jī)系Oracle數(shù)據(jù)庫物理結(jié)構(gòu)數(shù)據(jù)文件19廈門理工學(xué)院計(jì)算機(jī)系
數(shù)據(jù)文件(DataFile)是物理存儲(chǔ)Oracle數(shù)據(jù)庫數(shù)據(jù)的文件。其特點(diǎn)如下:每一個(gè)數(shù)據(jù)文件只與一個(gè)數(shù)據(jù)庫相聯(lián)系。數(shù)據(jù)文件一旦被建立則不能修改其大小。一個(gè)表空間可包含一個(gè)或多個(gè)數(shù)據(jù)文件。一個(gè)數(shù)據(jù)文件只能屬于一個(gè)表空間.數(shù)據(jù)文件(DataFile)20廈門理工學(xué)院計(jì)算機(jī)系數(shù)據(jù)文件(DataFile)是物理存儲(chǔ)Or重做日志文件(RedoFile)
重做日志文件(RedoLogFile)記錄所有對(duì)數(shù)據(jù)庫數(shù)據(jù)的修改,以備恢復(fù)數(shù)據(jù)時(shí)使用。其特點(diǎn)如下:每一個(gè)數(shù)據(jù)庫至少包含兩個(gè)日志文件組。日志文件組以循環(huán)方式進(jìn)行寫操作。每一個(gè)日志文件成員對(duì)應(yīng)一個(gè)物理文件。21廈門理工學(xué)院計(jì)算機(jī)系重做日志文件(RedoFile)重做日志文件(日志切換(LogSwitch)
日志切換(LogSwitch)是為實(shí)現(xiàn)日志文件組的循環(huán)使用而設(shè)置的。出現(xiàn)日志開關(guān)的情況如下:當(dāng)一個(gè)日志文件組被填滿時(shí)關(guān)閉數(shù)據(jù)庫時(shí)DBA手動(dòng)切換日志22廈門理工學(xué)院計(jì)算機(jī)系日志切換(LogSwitch)日志切換(日志文件寫操作LogFile1LogFile2Group1Group2Member2.1Member1.123廈門理工學(xué)院計(jì)算機(jī)系日志文件寫操作LogFile1LogFile2Gro鏡像日志文件
鏡像日志文件是為防止日志文件的丟失,在不同磁盤上同時(shí)維護(hù)兩個(gè)或多個(gè)聯(lián)機(jī)日志文件的副本。其特點(diǎn)如下:每個(gè)日志文件組至少包含兩個(gè)日志文件成員。每組的成員數(shù)目相同。同組的所有成員同時(shí)被修改。同組的成員大小相同,不同組的成員大小可不同.24廈門理工學(xué)院計(jì)算機(jī)系鏡像日志文件鏡像日志文件是為防止日志文件的丟失,在不鏡像日志文件操作Group1Group2LogFile1LogFile2Member2.1Member1.1LogFile3LogFile4Member2.2Member1.2Disk1Disk225廈門理工學(xué)院計(jì)算機(jī)系鏡像日志文件操作Group1Group2LogFile控制文件控制文件(ControlFile)是一個(gè)較小的二進(jìn)制文件,用于描述數(shù)據(jù)庫結(jié)構(gòu)。描述信息如下:數(shù)據(jù)庫建立的日期。數(shù)據(jù)庫名。數(shù)據(jù)庫中所有數(shù)據(jù)文件和日志文件的文件名及路徑。恢復(fù)數(shù)據(jù)庫時(shí)所需的同步信息。要點(diǎn)注意:在打開和存取數(shù)據(jù)庫時(shí)都要訪問該文件。鏡像控制文件。記錄控制文件名及路徑的參數(shù)為:CONTROL_FILES26廈門理工學(xué)院計(jì)算機(jī)系控制文件控制文件(ControlFile)參數(shù)文件
參數(shù)文件(ParameterFile)是一個(gè)文本文件,可直接使用操作系統(tǒng)下的文本編輯器對(duì)其內(nèi)容進(jìn)行修改。該文件只在建立數(shù)據(jù)庫或啟動(dòng)實(shí)例時(shí)才被訪問,在修改該文件之前必須關(guān)閉實(shí)例。初始參數(shù)文件:init.ora生成參數(shù)文件:initSID.oraconfig.ora位于OracleHome下,如:C:\oracle\admin\TestDB\pfile27廈門理工學(xué)院計(jì)算機(jī)系參數(shù)文件參數(shù)文件(ParameterFile)是一參數(shù)文件的作用參數(shù)文件的作用:確定存儲(chǔ)結(jié)構(gòu)的大小。設(shè)置數(shù)據(jù)庫的全部缺省值。設(shè)置數(shù)據(jù)庫的范圍。設(shè)置數(shù)據(jù)庫的各種物理屬性。優(yōu)化數(shù)據(jù)庫性能。28廈門理工學(xué)院計(jì)算機(jī)系參數(shù)文件的作用參數(shù)文件的作用:28廈門理工學(xué)院計(jì)算機(jī)系參數(shù)文件的數(shù)據(jù)類型參數(shù)文件中參數(shù)的數(shù)據(jù)類型:整型 例:DB_BLOCK_SIZE=2048字符型例:DB_NAME=‘ora9’邏輯型例:CHECKPOINT_PROCESS=true29廈門理工學(xué)院計(jì)算機(jī)系參數(shù)文件的數(shù)據(jù)類型參數(shù)文件中參數(shù)的數(shù)據(jù)類型:29廈門理工學(xué)院Oracle10g體系結(jié)構(gòu)--2.2邏輯結(jié)構(gòu)30Oracle10g體系結(jié)構(gòu)--2.2邏輯結(jié)構(gòu)30Oralce的邏輯結(jié)構(gòu)組成Oracle的邏輯結(jié)構(gòu)是由一個(gè)或多個(gè)表空間組成。一個(gè)表空間(tablespace)由一組段組成一個(gè)段(segment)由一組區(qū)組成一個(gè)區(qū)(extent)由一批數(shù)據(jù)庫塊組成一個(gè)數(shù)據(jù)庫塊(block)對(duì)應(yīng)一個(gè)或多個(gè)物理塊31廈門理工學(xué)院計(jì)算機(jī)系Oralce的邏輯結(jié)構(gòu)組成Oracle的邏輯結(jié)構(gòu)是由一個(gè)或多邏輯結(jié)構(gòu)示意圖TablespaceDatabaseBlocksExtent84KSegment112KDatabaseDataFile表空間段區(qū)塊32廈門理工學(xué)院計(jì)算機(jī)系邏輯結(jié)構(gòu)示意圖TablespaceDatabaseBloc數(shù)據(jù)庫塊(Block)
數(shù)據(jù)庫塊(DatabaseBlock)是數(shù)據(jù)庫使用的I/O最小單元,又稱邏輯塊或ORACLE塊。一個(gè)數(shù)據(jù)庫塊對(duì)應(yīng)一個(gè)或多個(gè)物理塊,塊的大小由參數(shù)DB_BLOCK_SIZE確定。33廈門理工學(xué)院計(jì)算機(jī)系數(shù)據(jù)庫塊(Block)數(shù)據(jù)庫塊(Database數(shù)據(jù)庫塊(Block)塊的大小是操作系統(tǒng)塊大小的整數(shù)倍.以Win2K為例,操作系統(tǒng)塊(OSblock)的大小為4kb,所以O(shè)racleBlock的大小可以是4kb,8kb,16kb等等。如果塊的大小為4kb,某表每行的數(shù)據(jù)是100bytes.,如果某查詢語句只返回1行數(shù)據(jù),那么,在將數(shù)據(jù)讀入到數(shù)據(jù)高速緩存時(shí),讀取的數(shù)據(jù)量時(shí)4kb而不是100bytes.34廈門理工學(xué)院計(jì)算機(jī)系數(shù)據(jù)庫塊(Block)塊的大小是操作系統(tǒng)塊大小的區(qū)(extent)
區(qū)(Extent)是數(shù)據(jù)庫存儲(chǔ)空間分配的邏輯單位,一個(gè)區(qū)由一組數(shù)據(jù)庫塊組成,區(qū)是由段分配的,分配的第一個(gè)區(qū)稱初始區(qū),以后分配的區(qū)稱增量區(qū)。35廈門理工學(xué)院計(jì)算機(jī)系區(qū)(extent)區(qū)(Extent)是數(shù)據(jù)庫段(segment)
段(Segment)是表空間中一個(gè)指定類型的邏輯存儲(chǔ)結(jié)構(gòu),它由一個(gè)或多個(gè)區(qū)組成,段將占用并增長(zhǎng)存儲(chǔ)空間。36廈門理工學(xué)院計(jì)算機(jī)系段(segment)段(Segment)是段的分類引導(dǎo)段(BootstrapSegment)存儲(chǔ)數(shù)據(jù)字典表的定義段的分類回滾段(RollbackSegment)存儲(chǔ)修改之前的位置和值索引段(IndexSegment)存儲(chǔ)表上最佳查詢的所有索引數(shù)據(jù)臨時(shí)段(TemporarySegment)存儲(chǔ)表排序操作期間建立的臨時(shí)表的數(shù)據(jù)數(shù)據(jù)(表)段(DataSegment)存儲(chǔ)表中的所有數(shù)據(jù)37廈門理工學(xué)院計(jì)算機(jī)系段的分類引導(dǎo)段存儲(chǔ)數(shù)據(jù)字典段的分類回滾段存儲(chǔ)修改之前索引段存表空間(tablespace)
表空間是最大的邏輯單位,對(duì)應(yīng)一個(gè)或多個(gè)數(shù)據(jù)文件,表空間的大小是它所對(duì)應(yīng)的數(shù)據(jù)文件大小的總和。38廈門理工學(xué)院計(jì)算機(jī)系表空間(tablespace)表空間是最大的邏表空間與數(shù)據(jù)庫之間的關(guān)系數(shù)據(jù)庫、表空間、數(shù)據(jù)文件、方案對(duì)象(schemaobject)之間的關(guān)系39廈門理工學(xué)院計(jì)算機(jī)系表空間與數(shù)據(jù)庫之間的關(guān)系數(shù)據(jù)庫、表空間、數(shù)據(jù)文件、方案對(duì)象(Oracle10g創(chuàng)建的表空間Oracle10g自動(dòng)創(chuàng)建的表空間有: Example(實(shí)例表空間) Sysaux(輔助系統(tǒng)表空間) System(系統(tǒng)表空間) Temp(臨時(shí)表空間) Undotbs(重做表空間) Users(用戶的表空間)40廈門理工學(xué)院計(jì)算機(jī)系Oracle10g創(chuàng)建的表空間Oracle10g自SYSTEM(系統(tǒng))表空間System:系統(tǒng)表空間,存放關(guān)于表空間的名稱、控制文件、數(shù)據(jù)文件等管理信息,是最重要的表空間.它屬于Sys、System兩個(gè)schema(方案),僅被這兩個(gè)或其他具有足夠權(quán)限的用戶使用。但是均不可刪除或者重命名System表空間.41廈門理工學(xué)院計(jì)算機(jī)系SYSTEM(系統(tǒng))表空間System:其他表空間Temp:臨時(shí)表空間存放臨時(shí)表和臨時(shí)數(shù)據(jù),用于排序。Users:用戶表空間,永久存放用戶對(duì)象和私有信息,也被成為數(shù)據(jù)表空間。Sysaux:輔助系統(tǒng)表空間,用于減少系統(tǒng)負(fù)荷,提高系統(tǒng)的作業(yè)效率.一般地:系統(tǒng)用戶使用system表空間,非系統(tǒng)用戶使用Users表空間42廈門理工學(xué)院計(jì)算機(jī)系其他表空間Temp:臨時(shí)表空間存放臨時(shí)表和臨時(shí)數(shù)據(jù),Oracle10g體系結(jié)構(gòu)--2.3軟件結(jié)構(gòu)43Oracle10g體系結(jié)構(gòu)--2.3軟件結(jié)構(gòu)43例程(instance)Oracle數(shù)據(jù)庫結(jié)構(gòu)又稱為例程結(jié)構(gòu).數(shù)據(jù)庫啟動(dòng)時(shí):Oracle首先要在內(nèi)存中獲取、劃分、保留各種用途的區(qū)域,運(yùn)行各種用途的后臺(tái),即:創(chuàng)建一個(gè)例程(instance);然后由該例程裝載(mount)、打開(open)數(shù)據(jù)庫;最后由這個(gè)例程來訪問和控制數(shù)據(jù)庫的各種物理結(jié)構(gòu)44廈門理工學(xué)院計(jì)算機(jī)系例程(instance)Oracle數(shù)據(jù)庫結(jié)構(gòu)又稱為例程結(jié)構(gòu)例程(instance)如果把Oracle數(shù)據(jù)庫比作一部汽車,instance相當(dāng)于汽車的發(fā)動(dòng)機(jī)一樣,啟動(dòng)oracle數(shù)據(jù)庫前提應(yīng)先啟動(dòng)instance.45廈門理工學(xué)院計(jì)算機(jī)系例程(instance)如果把Oracle數(shù)據(jù)庫比作一部汽車?yán)?instance)當(dāng)用戶連接到數(shù)據(jù)庫并使用數(shù)據(jù)庫時(shí),實(shí)際上是連接到該數(shù)據(jù)庫的例程,通過例程來連接、使用數(shù)據(jù)庫。所以例程是用戶和數(shù)據(jù)庫之間的中間層。例程與數(shù)據(jù)庫的區(qū)別:數(shù)據(jù)庫指的是存儲(chǔ)數(shù)據(jù)的物理結(jié)構(gòu),總是實(shí)際存在的;例程則是由內(nèi)存結(jié)構(gòu)和一系列進(jìn)程組成,可以啟動(dòng)和關(guān)閉。46廈門理工學(xué)院計(jì)算機(jī)系例程(instance)當(dāng)用戶連接到數(shù)據(jù)庫并使用數(shù)據(jù)庫時(shí),實(shí)OracleInstance的組成實(shí)例(INSTANCE)
是存取和控制數(shù)據(jù)庫的軟件機(jī)制,它由系統(tǒng)全局區(qū)(SystemGlobalArea,簡(jiǎn)稱SGA)和后臺(tái)進(jìn)程組成。后臺(tái)進(jìn)程實(shí)例SGA數(shù)據(jù)高速緩存共享池日志高速緩存47廈門理工學(xué)院計(jì)算機(jī)系OracleInstance的組成實(shí)例(INSTANCE軟件結(jié)構(gòu)內(nèi)存結(jié)構(gòu)進(jìn)程結(jié)構(gòu)內(nèi)存結(jié)構(gòu)和進(jìn)程結(jié)構(gòu)共同組成了軟件結(jié)構(gòu)48廈門理工學(xué)院計(jì)算機(jī)系軟件結(jié)構(gòu)內(nèi)存結(jié)構(gòu)進(jìn)程結(jié)構(gòu)內(nèi)存結(jié)構(gòu)和進(jìn)程結(jié)構(gòu)共同組成了軟件結(jié)構(gòu)內(nèi)存結(jié)構(gòu)內(nèi)存結(jié)構(gòu)是Oracle數(shù)據(jù)庫體系中最為重要的一部分,內(nèi)存也是影響數(shù)據(jù)庫性能的第一因素.按照內(nèi)存的使用方法的不同,Oracle數(shù)據(jù)庫的內(nèi)存又可以分為SGA(SysteGlobalArea)和PGA(ProgramGlobalArea).49廈門理工學(xué)院計(jì)算機(jī)系內(nèi)存結(jié)構(gòu)內(nèi)存結(jié)構(gòu)是Oracle數(shù)據(jù)庫體系中最為重要的一部分,系統(tǒng)全局區(qū)(SGA)SGA是ORACLE系統(tǒng)為實(shí)例分配的一組共享緩沖存儲(chǔ)區(qū),用于存放數(shù)據(jù)庫數(shù)據(jù)和控制信息,以實(shí)現(xiàn)對(duì)數(shù)據(jù)庫數(shù)據(jù)的管理和操作。每個(gè)例程都只有一個(gè)SGA.它是不同用戶進(jìn)程與服務(wù)進(jìn)程進(jìn)行通信的中心,數(shù)據(jù)庫的各種操作主要在SGA中進(jìn)行,所以稱其為系統(tǒng)全局區(qū).創(chuàng)建例程時(shí),Oracle為SGA分配內(nèi)存;終止例程時(shí),釋放SGA所占用的內(nèi)存.50廈門理工學(xué)院計(jì)算機(jī)系系統(tǒng)全局區(qū)(SGA)SGA是ORACLE系統(tǒng)系統(tǒng)全局區(qū)(SGA)系統(tǒng)全局區(qū)由以下幾個(gè)部分組成:51廈門理工學(xué)院計(jì)算機(jī)系系統(tǒng)全局區(qū)(SGA)系統(tǒng)全局區(qū)由以下幾個(gè)部分組成:51廈門理數(shù)據(jù)高速緩存(DatabaseBufferCache)保存最近從數(shù)據(jù)文件中讀取的數(shù)據(jù)塊,其中的數(shù)據(jù)被所有用戶共享.兩個(gè)參數(shù)影響DBC:DB_BLOCK_SIZE緩沖區(qū)數(shù)據(jù)塊大小DB_BLOCK_BUFFERS緩沖區(qū)數(shù)據(jù)塊個(gè)數(shù)52廈門理工學(xué)院計(jì)算機(jī)系數(shù)據(jù)高速緩存(DatabaseBufferCache)保初次訪問數(shù)據(jù)時(shí),Oracle將讀取磁盤上的數(shù)據(jù)文件,將數(shù)據(jù)放入數(shù)據(jù)高速緩存,再處理數(shù)據(jù);如果數(shù)據(jù)已經(jīng)位于數(shù)據(jù)高速緩存中時(shí),Oracle直接操作數(shù)據(jù)。數(shù)據(jù)緩沖區(qū)數(shù)據(jù)文件數(shù)據(jù)高速緩存(DatabaseBufferCache)53廈門理工學(xué)院計(jì)算機(jī)系初次訪問數(shù)據(jù)時(shí),Oracle將讀取磁盤上的數(shù)據(jù)文件,將數(shù)據(jù)放數(shù)據(jù)高速緩存(DBC)DBC的緩存塊分為三類:臟緩存塊存放已經(jīng)被修改過的緩存塊.當(dāng)SQL修改某個(gè)緩存塊中的數(shù)據(jù),則這個(gè)緩存塊被標(biāo)記為臟緩存塊空閑緩存塊等待寫入數(shù)據(jù)的空閑緩存塊.命中緩存塊最近正在被訪問的緩存塊.54廈門理工學(xué)院計(jì)算機(jī)系數(shù)據(jù)高速緩存(DBC)DBC的緩存塊分為三類:54廈門理工學(xué)管理緩存塊的列表Oracle通過2個(gè)列表來管理上述緩存塊:臟列表(DIRTY)包括被修改過但尚未寫到數(shù)據(jù)文件的緩沖塊。LRU(LeastRecentlyUsed)列表包括空閑緩沖塊、命中緩存塊,以及還沒有移到臟列表的緩沖塊。55廈門理工學(xué)院計(jì)算機(jī)系管理緩存塊的列表Oracle通過2個(gè)列表來管理上述緩存塊:5數(shù)據(jù)高速緩存工作原理讀數(shù)據(jù)入DBC之前,先在LRU中搜索空閑緩存塊;在搜索過程中如果發(fā)現(xiàn)臟緩存塊,則將其移入DIRTY;找到足夠的空閑塊,將所有數(shù)據(jù)讀入;3,4.如果空閑塊不足,則暫停搜索,Oralce立刻啟動(dòng)DBWR進(jìn)程,將DIRTY中的臟緩存塊數(shù)據(jù)寫入數(shù)據(jù)文件釋放足夠的空閑緩存塊。數(shù)據(jù)庫寫進(jìn)程56廈門理工學(xué)院計(jì)算機(jī)系數(shù)據(jù)高速緩存工作原理讀數(shù)據(jù)入DBC之前,先在LRU中搜索空閑重做日志高速緩存當(dāng)執(zhí)行DML(DataManipulationLanguage,數(shù)據(jù)操縱語言)如:update、delete、insert或者create、alter、drop等語句時(shí),Oracle都會(huì)為這些操作生成重做記錄.重做日志高速緩存就是用于存儲(chǔ)重做記錄的緩存.57廈門理工學(xué)院計(jì)算機(jī)系重做日志高速緩存當(dāng)執(zhí)行DML(Data重做日志高速緩存工作原理為提高效率,重做記錄并不直接寫入磁盤的重做日志文件,而是先寫入重做日志緩存;當(dāng)重做日志緩存中的重做記錄達(dá)到一定數(shù)量時(shí),由LGWR進(jìn)程寫入重做日志.(先內(nèi)存后磁盤)當(dāng)2個(gè)(至少2個(gè))重做日志切換時(shí),由ARCH將重做日志中的數(shù)據(jù)寫入歸檔日志文件,以做備份.日志寫進(jìn)程歸檔進(jìn)程58廈門理工學(xué)院計(jì)算機(jī)系重做日志高速緩存工作原理為提高效率,重做記錄并不直接寫入磁盤共享池(SharedPool)共享池保存了最近執(zhí)行的SQL語句、PL/SQL程序和數(shù)據(jù)字典信息,是對(duì)SQL語句和PL/SQL程序進(jìn)行語法分析、編譯、執(zhí)行的內(nèi)存區(qū).59廈門理工學(xué)院計(jì)算機(jī)系共享池(SharedPool)共享池保存了共享池(SharedPool)共享池由庫緩存和數(shù)據(jù)字典緩存組成。參數(shù)SHARED_POOL_SIZE
確定共享池的大小。庫緩存(LibraryCache)區(qū)包括解析用戶進(jìn)程提交的SQL語句或PL/SQL程序保存最近解析過的SQL語句或PL/SQL程序數(shù)據(jù)字典區(qū)(Dictionarycache)用于存放數(shù)據(jù)字典信息行。60廈門理工學(xué)院計(jì)算機(jī)系共享池(SharedPool)共享池由庫緩存和數(shù)據(jù)字典緩存OracleDBMS執(zhí)行各種SQL、PL/SQL之前,要對(duì)其進(jìn)行語法上的解析、對(duì)象上的確認(rèn)、權(quán)限上的判斷、操作上的優(yōu)化等一系列操作,并生成執(zhí)行計(jì)劃。庫緩存保存了已經(jīng)解析的SQL和PL/SQL。
庫緩存61廈門理工學(xué)院計(jì)算機(jī)系OracleDBMS執(zhí)行各種SQL、PL/S數(shù)據(jù)字典緩存在Oracle運(yùn)行過程中,Oracle會(huì)頻繁的對(duì)數(shù)據(jù)字典中的表、視圖進(jìn)行訪問,以便確定操作的數(shù)據(jù)對(duì)象是否存在、是否具有合適的權(quán)限等信息。數(shù)據(jù)字典緩保存了最常用的數(shù)據(jù)字典信息。數(shù)據(jù)字典緩存中存放的記錄是一條一條的,而其他緩存區(qū)中保存的是數(shù)據(jù)塊.62廈門理工學(xué)院計(jì)算機(jī)系數(shù)據(jù)字典緩存在Oracle運(yùn)行過程中,Orac大池 大池用于需要大內(nèi)存操作提供相對(duì)獨(dú)立的內(nèi)存空間,以便提高性能。 大池是可選的內(nèi)存結(jié)構(gòu)。DBA可以決定是否需要在SGA中創(chuàng)建大池。需要大池的操作:數(shù)據(jù)庫備份和恢復(fù)大量排序的SQL語句并行化的數(shù)據(jù)庫操作63廈門理工學(xué)院計(jì)算機(jī)系大池 大池用于需要大內(nèi)存操作提供相對(duì)獨(dú)立的內(nèi)存空間,以便提Java池8i以后提供的對(duì)Java的支持,用于存放Java代碼、Java程序等.一般不小于20M,以便虛擬機(jī)運(yùn)行.64廈門理工學(xué)院計(jì)算機(jī)系Java池8i以后提供的對(duì)Java的支持,PGA(ProgramGlobalArea)PGA是用戶進(jìn)程連接到數(shù)據(jù)庫,并創(chuàng)建一個(gè)對(duì)應(yīng)的會(huì)話時(shí),由Oracle為服務(wù)進(jìn)程分配的,專門用于當(dāng)前用戶會(huì)話的內(nèi)存區(qū)。PGA是非共享的,而SGA是共享的。PGA大小由操作系統(tǒng)決定,并且分配后保持不變;會(huì)話終止時(shí),自動(dòng)釋放PGA所占的內(nèi)存。65廈門理工學(xué)院計(jì)算機(jī)系PGA(ProgramGlobalArea)PGA的組成排序區(qū)會(huì)話區(qū)游標(biāo)區(qū)堆棧區(qū)PGA服務(wù)器進(jìn)程66廈門理工學(xué)院計(jì)算機(jī)系PGA的組成排序區(qū)PGA服務(wù)器進(jìn)程66廈門理工學(xué)院計(jì)算機(jī)系排序區(qū)執(zhí)行orderby、groupby等包含排序操作的SQL語句時(shí)所產(chǎn)生的臨時(shí)數(shù)據(jù).Oracle將準(zhǔn)備排序的數(shù)據(jù)先臨時(shí)存儲(chǔ)到排序區(qū)中,并在排序區(qū)中排序,然后將排序好的數(shù)據(jù)返回給用戶.67廈門理工學(xué)院計(jì)算機(jī)系排序區(qū)執(zhí)行orderby、groupby等包會(huì)話區(qū)保存會(huì)話所具有的權(quán)限、角色、性能統(tǒng)計(jì)信息.68廈門理工學(xué)院計(jì)算機(jī)系會(huì)話區(qū)保存會(huì)話所具有的權(quán)限、角色、性能統(tǒng)計(jì)信息.游標(biāo)區(qū)當(dāng)運(yùn)行帶有游標(biāo)(course)的PL/SQL語句時(shí),Oracle會(huì)在共享池中為該語句分配上下文(Context),游標(biāo)實(shí)際上是指向該上下文的指針。69廈門理工學(xué)院計(jì)算機(jī)系游標(biāo)區(qū)當(dāng)運(yùn)行帶有游標(biāo)(course)的PL/S堆棧區(qū)保存會(huì)話中的綁定變量、會(huì)話變量以及SQL語句運(yùn)行時(shí)的內(nèi)存結(jié)構(gòu)信息。例如:select*fromempwhereemp=:a;:a就是綁定變量,提示用戶輸入.在等待用戶輸入時(shí),先將該變量存入堆棧,以便可以同時(shí)運(yùn)行其他語句.70廈門理工學(xué)院計(jì)算機(jī)系堆棧區(qū)保存會(huì)話中的綁定變量、會(huì)話變量以及SQ進(jìn)程結(jié)構(gòu)進(jìn)程時(shí)操作系統(tǒng)中的一個(gè)概念,是一個(gè)可以獨(dú)立調(diào)用的活動(dòng),用于完成指定的任務(wù)。進(jìn)程與程序的區(qū)別是:進(jìn)程是動(dòng)態(tài)創(chuàng)建的,完成后銷毀;程序是靜態(tài)的實(shí)體,可以復(fù)制、編輯。進(jìn)程強(qiáng)調(diào)執(zhí)行過程,程序僅僅是指令的有序集合。進(jìn)程在內(nèi)存中,程序在外存中。
71廈門理工學(xué)院計(jì)算機(jī)系進(jìn)程結(jié)構(gòu)進(jìn)程時(shí)操作系統(tǒng)中的一個(gè)概念,是一個(gè)可以獨(dú)進(jìn)程種類Oracle包括用戶進(jìn)程和Oracle進(jìn)程兩類:用戶進(jìn)程服務(wù)器進(jìn)程后臺(tái)進(jìn)程Oracle進(jìn)程72廈門理工學(xué)院計(jì)算機(jī)系進(jìn)程種類Oracle包括用戶進(jìn)程和Oracle進(jìn)程兩類:Or用戶進(jìn)程當(dāng)用戶運(yùn)行一個(gè)應(yīng)用程序時(shí),就建立一個(gè)用戶進(jìn)程。73廈門理工學(xué)院計(jì)算機(jī)系用戶進(jìn)程當(dāng)用戶運(yùn)行一個(gè)應(yīng)用程序時(shí),就建立一個(gè)用服務(wù)器進(jìn)程
服務(wù)器進(jìn)程:處理用戶進(jìn)程的請(qǐng)求。處理過程:分析SQL命令并生成執(zhí)行方案。從數(shù)據(jù)緩沖存儲(chǔ)區(qū)中讀取數(shù)據(jù)。將執(zhí)行結(jié)果返回給用戶。74廈門理工學(xué)院計(jì)算機(jī)系服務(wù)器進(jìn)程 服務(wù)器進(jìn)程:處理用戶進(jìn)程的請(qǐng)求。74廈門理后臺(tái)進(jìn)程后臺(tái)進(jìn)程為所有數(shù)據(jù)庫用戶異步完成各種任務(wù)。主要的后臺(tái)進(jìn)程有
DBWR數(shù)據(jù)庫寫進(jìn)程LGWR日志寫進(jìn)程CKPT檢查點(diǎn)寫進(jìn)程SMON系統(tǒng)監(jiān)控進(jìn)程PMON進(jìn)程監(jiān)控進(jìn)程ARCH歸檔進(jìn)程RECO恢復(fù)進(jìn)程LCKn封鎖進(jìn)程75廈門理工學(xué)院計(jì)算機(jī)系后臺(tái)進(jìn)程后臺(tái)進(jìn)程主要的后臺(tái)進(jìn)程有75廈門理工學(xué)院計(jì)算機(jī)系DBWR(數(shù)據(jù)寫)DBWR(DataBaseWriter)將數(shù)據(jù)緩沖區(qū)中所有修改過的緩沖塊數(shù)據(jù)寫到數(shù)據(jù)文件中,并使用LRU算法來保持緩沖區(qū)中的數(shù)據(jù)塊為最近經(jīng)常使用的,以減少I/O次數(shù)。該進(jìn)程在啟動(dòng)實(shí)例時(shí)自動(dòng)啟動(dòng)。76廈門理工學(xué)院計(jì)算機(jī)系DBWR(數(shù)據(jù)寫)DBWR(DataBaseWriterLGWR(日志寫)LGWR(LogWriter)將日志緩沖區(qū)中的所有記錄項(xiàng)寫到日志文件中。該進(jìn)程在啟動(dòng)實(shí)例時(shí)自動(dòng)啟動(dòng)。77廈門理工學(xué)院計(jì)算機(jī)系LGWR(日志寫)LGWR(LogWriter)77廈門理啟動(dòng)LGWR進(jìn)行寫操作的條件用戶進(jìn)程提交一個(gè)事務(wù)(Commit)日志緩沖區(qū)達(dá)到1/3范圍DBWR對(duì)一個(gè)檢查點(diǎn)需要清除緩沖塊出現(xiàn)超時(shí)(3秒鐘內(nèi)未活動(dòng),則進(jìn)行一次寫操作。)78廈門理工學(xué)院計(jì)算機(jī)系啟動(dòng)LGWR進(jìn)行寫操作的條件用戶進(jìn)程提交一個(gè)事務(wù)(CommiARCH(歸檔進(jìn)程)ARCH(Archiver)
在日志文件組出現(xiàn)切換時(shí),將舊日志文件的內(nèi)容拷貝到脫機(jī)存儲(chǔ)介質(zhì)上,出現(xiàn)介質(zhì)失敗時(shí)用于恢復(fù)數(shù)據(jù)。ARCH存儲(chǔ)介質(zhì)79廈門理工學(xué)院計(jì)算機(jī)系A(chǔ)RCH(歸檔進(jìn)程)ARCH(Archiver)ARCH存儲(chǔ)其他后臺(tái)進(jìn)程SMON(SystemMonitor,系統(tǒng)監(jiān)控進(jìn)程)負(fù)責(zé)完成自動(dòng)實(shí)例恢復(fù)。該進(jìn)程在啟動(dòng)實(shí)例時(shí)自動(dòng)啟動(dòng)。PMON(ProcessMonitor,進(jìn)程監(jiān)控進(jìn)程)撤消異常中斷的用戶進(jìn)程,并釋放該進(jìn)程已獲得的系統(tǒng)資源或鎖。80廈門理工學(xué)院計(jì)算機(jī)系其他后臺(tái)進(jìn)程SMON(SystemMonitor,系統(tǒng)監(jiān)控RECO(Recover,恢復(fù)進(jìn)程)在分布式操作的情況下,恢復(fù)一個(gè)事務(wù)的失敗。LCKn(Lock,鎖進(jìn)程)在并行服務(wù)器系統(tǒng)間加鎖,最多可加10個(gè)鎖,分別為L(zhǎng)CK0,LCK1,,LCK9。其他后臺(tái)進(jìn)程81廈門理工學(xué)院計(jì)算機(jī)系RECO(Recover,恢復(fù)進(jìn)程)其他后臺(tái)進(jìn)程81廈門理工體系結(jié)構(gòu)的示例處理SQL語句的三個(gè)階段語法分析執(zhí)行返回指令Server共享池?cái)?shù)據(jù)緩沖區(qū)日志緩沖區(qū)SGAUserUserUserSQL>SELECTenameFROMemp;Server共享池?cái)?shù)據(jù)緩沖區(qū)日志緩沖區(qū)SGAUserUserUserSMITHALLENWARDServer共享池?cái)?shù)據(jù)緩沖區(qū)日志緩沖區(qū)SGA82廈門理工學(xué)院計(jì)算機(jī)系體系結(jié)構(gòu)的示例處理SQL語句的三個(gè)階段Server共享池?cái)?shù)據(jù)體系結(jié)構(gòu)的示例SELECT操作SQL>SELECTsalFROMempWHEREjob=‘CLERK’;Server共享池?cái)?shù)據(jù)緩沖區(qū)SGAUserUserUserB1B2EMPTableBlock1Block283廈門理工學(xué)院計(jì)算機(jī)系體系結(jié)構(gòu)的示例SELECT操作SQL>SELECTsal體系結(jié)構(gòu)的示例UPDATE操作
為了支持讀一致性,恢復(fù)和回滾,所有修改操作需要回滾段。修改操作執(zhí)行:
將數(shù)據(jù)塊送到數(shù)據(jù)緩沖區(qū)將回滾塊送到數(shù)據(jù)緩沖區(qū)在修改行上設(shè)置行鎖保存回滾數(shù)據(jù)到回滾段塊將修改寫到數(shù)據(jù)塊84廈門理工學(xué)院計(jì)算機(jī)系體系結(jié)構(gòu)的示例UPDATE操作將數(shù)據(jù)塊送到數(shù)據(jù)緩沖區(qū)84廈體系結(jié)構(gòu)的示例SQL>SELECTsalFROMempWHEREjob=‘CLERK’;Server1UserUserUser1Server2UserUserUser2共享池?cái)?shù)據(jù)緩沖區(qū)SGAB1B2R2R1EMPTableBlock1Block2RB01R1R2DataFile1DataFile2SQL>UPDATEempSETsal=sal*1.1WHEREjob=‘CLERK’;UPDATE操作85廈門理工學(xué)院計(jì)算機(jī)系體系結(jié)構(gòu)的示例SQL>SELECTsalFROMeOracle10g體系結(jié)構(gòu)--2.4數(shù)據(jù)字典86Oracle10g體系結(jié)構(gòu)--2.4數(shù)據(jù)字典86數(shù)據(jù)字典數(shù)據(jù)字典是Oracle數(shù)據(jù)庫的核心組件,它由一系列只讀的數(shù)據(jù)字典表和數(shù)據(jù)字典視圖組成.數(shù)據(jù)字典中記錄了數(shù)據(jù)庫的系統(tǒng)信息、例程運(yùn)行的性能。數(shù)據(jù)字典的所有者為SYS用戶,其數(shù)據(jù)字典表和數(shù)據(jù)字典視圖都保存在SYSTEM表空間中.87廈門理工學(xué)院計(jì)算機(jī)系數(shù)據(jù)字典數(shù)據(jù)字典是Oracle數(shù)據(jù)庫的核心組件,它數(shù)據(jù)字典表數(shù)據(jù)字典表主要保存以下信息:各種方案對(duì)象的定義信息,如表、視圖、索引、同義詞、緒論、存儲(chǔ)過程、函數(shù)、包、觸發(fā)器和各種對(duì)象;存儲(chǔ)空間的分配信息;安全信息(帳戶、權(quán)限、角色等)例程運(yùn)行時(shí)的性能和統(tǒng)計(jì)信息其他數(shù)據(jù)庫本身的基本信息88廈門理工學(xué)院計(jì)算機(jī)系數(shù)據(jù)字典表數(shù)據(jù)字典表主要保存以下信息:88廈門理工學(xué)院計(jì)算機(jī)數(shù)據(jù)字典的用途Oracle通過查詢數(shù)據(jù)字典表或數(shù)據(jù)字典視圖來獲取有關(guān)用戶、方案對(duì)象、對(duì)象的定義信息;每次執(zhí)行DML語句修改方案對(duì)象和對(duì)象后,Oracle都在數(shù)據(jù)字典中記錄下所做的修改;用戶可以從數(shù)據(jù)字典的只讀視圖中,獲取各種與對(duì)象方案和對(duì)象有關(guān)的信息;DBA可以從數(shù)據(jù)字典的動(dòng)態(tài)性能視圖中,監(jiān)視例程的運(yùn)行狀態(tài),為性能調(diào)整提供依據(jù).89廈門理工學(xué)院計(jì)算機(jī)系數(shù)據(jù)字典的用途Oracle通過查詢數(shù)據(jù)字典表或數(shù)據(jù)字典視圖來數(shù)據(jù)字典的組成數(shù)據(jù)字典中的信息存儲(chǔ)在表和視圖中.數(shù)據(jù)字典的組成:數(shù)據(jù)字典表數(shù)據(jù)字典視圖90廈門理工學(xué)院計(jì)算機(jī)系數(shù)據(jù)字典的組成數(shù)據(jù)字典中的信息存儲(chǔ)在表和視圖中.90廈門理工數(shù)據(jù)字典表數(shù)據(jù)字典表屬于SYS用戶;大部分?jǐn)?shù)據(jù)字典表的名稱中都包含$這樣的特殊符號(hào)91廈門理工學(xué)院計(jì)算機(jī)系數(shù)據(jù)字典表數(shù)據(jù)字典表屬于SYS用戶;91廈門理工學(xué)院計(jì)算機(jī)系數(shù)據(jù)字典視圖數(shù)據(jù)字典表中的信息經(jīng)過解密和一些加工處理后,以視圖的方式呈現(xiàn)給用戶。大多數(shù)用戶都可以通過數(shù)據(jù)字典視圖查詢所需要的與數(shù)據(jù)庫相關(guān)的系統(tǒng)信息.92廈門理工學(xué)院計(jì)算機(jī)系數(shù)據(jù)字典視圖數(shù)據(jù)字典表中的信息經(jīng)過解密和一些加工處理后,以視數(shù)據(jù)字典視圖查詢示例--查看當(dāng)前用戶的缺省表空間selectusername,default_tablespacefromuser_users;--查看當(dāng)前用戶的角色select*fromuser_role_privs;--查看當(dāng)前用戶的系統(tǒng)權(quán)限和表級(jí)權(quán)限select*fromuser_sys_privs;select*fromuser_tab_privs;93廈門理工學(xué)院計(jì)算機(jī)系數(shù)據(jù)字典視圖查詢示例--查看當(dāng)前用戶的缺省表空間93廈門理工數(shù)據(jù)字典視圖查詢示例--顯示指定用戶所具有的系統(tǒng)權(quán)限select*fromdba_sys_privswheregrantee='GAME';--查看用戶下所有的表select*fromuser_tables;--查詢表信息SELECT*FROMALL_OBJECTSWHEREOWNER='SCOTT'ANDOBJECT_NAME='EMP';94廈門理工學(xué)院計(jì)算機(jī)系數(shù)據(jù)字典視圖查詢示例--顯示指定用戶所具有的系統(tǒng)權(quán)限94廈門Oracle數(shù)據(jù)庫體系結(jié)構(gòu)專題講義Oracle數(shù)據(jù)庫體系結(jié)構(gòu)專題講義內(nèi)容簡(jiǎn)介本課主要講授Oracle10g體系結(jié)構(gòu)適用于數(shù)據(jù)庫管理員(DBA)Oracle9i同樣適用96廈門理工學(xué)院計(jì)算機(jī)系內(nèi)容簡(jiǎn)介本課主要講授Oracle10g體系結(jié)構(gòu)2廈門理工學(xué)概要DBA的職責(zé)Oracle體系結(jié)構(gòu)由內(nèi)存結(jié)構(gòu)、進(jìn)程結(jié)構(gòu)、存儲(chǔ)結(jié)構(gòu)組成內(nèi)存結(jié)構(gòu)由SGA、PGA組成存儲(chǔ)結(jié)構(gòu)由邏輯存儲(chǔ)、物理存儲(chǔ)組成進(jìn)程結(jié)構(gòu)由用戶進(jìn)程和Oracle進(jìn)程組成.97廈門理工學(xué)院計(jì)算機(jī)系概要DBA的職責(zé)3廈門理工學(xué)院計(jì)算機(jī)系什么是DBA?數(shù)據(jù)庫管理員是一個(gè)或一組全面負(fù)責(zé)管理和控制數(shù)據(jù)庫系統(tǒng)的人員。
簡(jiǎn)稱:DBA(DataBaseAdministrator)98廈門理工學(xué)院計(jì)算機(jī)系什么是DBA?數(shù)據(jù)庫管理員是一個(gè)或一組全面負(fù)責(zé)管理和控制數(shù)據(jù)DBA的主要職責(zé)了解ORACLE數(shù)據(jù)庫的體系結(jié)構(gòu)負(fù)責(zé)數(shù)據(jù)庫管理系統(tǒng)的安裝和升級(jí)啟動(dòng)和關(guān)閉數(shù)據(jù)庫管理和監(jiān)控?cái)?shù)據(jù)庫用戶管理數(shù)據(jù)庫特權(quán)管理存儲(chǔ)空間建立數(shù)據(jù)庫后備和恢復(fù)數(shù)據(jù)庫99廈門理工學(xué)院計(jì)算機(jī)系DBA的主要職責(zé)了解ORACLE數(shù)據(jù)庫的體系結(jié)構(gòu)5廈門理工學(xué)DBA與理論知識(shí)作為一名合格的DBA,必須深入地掌握Oracle10g數(shù)據(jù)庫的體系結(jié)構(gòu).在理論知識(shí)的指導(dǎo)下,才會(huì)使許多難以理解和掌握的操作變得容易.100廈門理工學(xué)院計(jì)算機(jī)系DBA與理論知識(shí)作為一名合格的DBA,必須深入地掌握OracOracle工作原理客戶服務(wù)器服務(wù)器進(jìn)程(PGA區(qū))用戶進(jìn)程(SQL語句)Oracleserver數(shù)據(jù)庫系統(tǒng)處理過程示意101廈門理工學(xué)院計(jì)算機(jī)系Oracle工作原理客戶服務(wù)器服務(wù)器進(jìn)程用戶進(jìn)程Oracle處理過程可以簡(jiǎn)單的描述為:用戶在其機(jī)器上運(yùn)行基于Oracle的應(yīng)用程序(如:SQL*PLUS、PL/SQLDeveloper等),即啟動(dòng)用戶進(jìn)程.客戶機(jī)、服務(wù)器之間建立連接(Connect).服務(wù)器為用戶建立會(huì)話(Session),并為該會(huì)話建立一個(gè)PGA(ProgramGlobalArea,程序全局區(qū))以存儲(chǔ)與該會(huì)話相關(guān)的信息.在同一個(gè)連接中,不同的用戶有不同的會(huì)話.啟動(dòng)服務(wù)進(jìn)程,由該服務(wù)進(jìn)程負(fù)責(zé)執(zhí)行該會(huì)話的各項(xiàng)任務(wù).用戶進(jìn)程發(fā)送SQL語句(select、update、commit….)服務(wù)器進(jìn)程解析、編譯、執(zhí)行SQL語句,然后將結(jié)果寫入數(shù)據(jù)庫并返回結(jié)果給用戶進(jìn)程。用戶進(jìn)程接收返回的SQL執(zhí)行結(jié)果。在應(yīng)用程序中顯示SQL執(zhí)行結(jié)果.Oracle工作原理客戶服務(wù)器服務(wù)器進(jìn)程(PGA區(qū))用戶進(jìn)程(SQL語句)Oracleserver102廈門理工學(xué)院計(jì)算機(jī)系處理過程可以簡(jiǎn)單的描述為:Oracle工作原理客戶服務(wù)器服務(wù)處理查詢用戶進(jìn)程服務(wù)器進(jìn)程解析StatementOKHandle執(zhí)行OKHandle提取ResultsSELECT*FROMempORDERBYename;103廈門理工學(xué)院計(jì)算機(jī)系處理查詢用戶進(jìn)程服務(wù)器進(jìn)程解析StatementOKHand總體結(jié)構(gòu)總體結(jié)構(gòu)的三大部分104廈門理工學(xué)院計(jì)算機(jī)系總體結(jié)構(gòu)總體結(jié)構(gòu)的三大部分10廈門理工學(xué)院計(jì)算機(jī)系總體結(jié)構(gòu)105廈門理工學(xué)院計(jì)算機(jī)系總體結(jié)構(gòu)11廈門理工學(xué)院計(jì)算機(jī)系總體結(jié)構(gòu)其中:內(nèi)存結(jié)構(gòu):包括SGA和PGA.使用內(nèi)存最多的是SGA,同時(shí)也是影響數(shù)據(jù)庫性能的最大參數(shù).進(jìn)程結(jié)構(gòu):包括前臺(tái)進(jìn)程、后臺(tái)進(jìn)程.前臺(tái)進(jìn)程是指服務(wù)進(jìn)程和用戶進(jìn)程.前臺(tái)進(jìn)程是根據(jù)實(shí)際需要而運(yùn)行的,并在需要結(jié)束后立刻結(jié)束。后臺(tái)進(jìn)程是指在Oracle數(shù)據(jù)庫啟動(dòng)后,自動(dòng)啟動(dòng)的幾個(gè)操作系統(tǒng)進(jìn)程.存儲(chǔ)結(jié)構(gòu):包括控制文件、數(shù)據(jù)結(jié)構(gòu)、日志文件等操作系統(tǒng)文件.106廈門理工學(xué)院計(jì)算機(jī)系總體結(jié)構(gòu)其中:12廈門理工學(xué)院計(jì)算機(jī)系存儲(chǔ)結(jié)構(gòu)Oracle數(shù)據(jù)庫的存儲(chǔ)結(jié)構(gòu)分為邏輯存儲(chǔ)結(jié)構(gòu)和物理存儲(chǔ)結(jié)構(gòu),這兩種存儲(chǔ)結(jié)構(gòu)既相互獨(dú)立又相互聯(lián)系.數(shù)據(jù)庫結(jié)構(gòu)數(shù)據(jù)文件日志文件控制文件參數(shù)文件物理結(jié)構(gòu)表空間段范圍數(shù)據(jù)庫塊邏輯結(jié)構(gòu)107廈門理工學(xué)院計(jì)算機(jī)系存儲(chǔ)結(jié)構(gòu)Oracle數(shù)據(jù)庫的存儲(chǔ)結(jié)構(gòu)分為邏輯存儲(chǔ)結(jié)構(gòu)和物理存物理存儲(chǔ)結(jié)構(gòu)物理存儲(chǔ)結(jié)構(gòu)主要描述Oracle數(shù)據(jù)庫的外部存儲(chǔ)結(jié)構(gòu),即在操作系統(tǒng)種如何組織、管理數(shù)據(jù).因此,物理存儲(chǔ)結(jié)構(gòu)是和操作系統(tǒng)平臺(tái)有關(guān)的.108廈門理工學(xué)院計(jì)算機(jī)系物理存儲(chǔ)結(jié)構(gòu)物理存儲(chǔ)結(jié)構(gòu)主要描述Oracle數(shù)據(jù)庫的外部存儲(chǔ)邏輯存儲(chǔ)結(jié)構(gòu)邏輯存儲(chǔ)結(jié)構(gòu)主要描述Oracle數(shù)據(jù)庫的內(nèi)部存儲(chǔ)結(jié)構(gòu),即從技術(shù)概念上描述在Oracle數(shù)據(jù)庫種如何組織、管理數(shù)據(jù).因此,邏輯存儲(chǔ)結(jié)構(gòu)是和操作系統(tǒng)平臺(tái)無關(guān)的,是由Oracle數(shù)據(jù)庫創(chuàng)建和管理的.109廈門理工學(xué)院計(jì)算機(jī)系邏輯存儲(chǔ)結(jié)構(gòu)邏輯存儲(chǔ)結(jié)構(gòu)主要描述Oracle數(shù)據(jù)庫的內(nèi)部存儲(chǔ)DBA注意DBA必須對(duì)這兩種存儲(chǔ)結(jié)構(gòu)有清晰的理解,并且要清楚在一個(gè)具體數(shù)據(jù)庫應(yīng)用系統(tǒng)中,這兩種存儲(chǔ)結(jié)構(gòu)的具體對(duì)應(yīng)關(guān)系,否則就不能進(jìn)行正常的管理操作、數(shù)據(jù)庫備份與恢復(fù)、性能優(yōu)化等。110廈門理工學(xué)院計(jì)算機(jī)系DBA注意DBA必須對(duì)這兩種存儲(chǔ)結(jié)構(gòu)有清晰的理解,并且要清楚存儲(chǔ)結(jié)構(gòu)物理存儲(chǔ)結(jié)構(gòu)與邏輯存儲(chǔ)結(jié)構(gòu)之間的關(guān)系從物理上看,數(shù)據(jù)庫由控制文件、數(shù)據(jù)文件、重做日志文件等操作系統(tǒng)文件組成;從邏輯上來看,數(shù)據(jù)庫是由系統(tǒng)表空間、用戶表空間等組成。表空間是最大的邏輯單位,塊是最小的邏輯單位。邏輯存儲(chǔ)結(jié)構(gòu)中的塊最后對(duì)應(yīng)到操作系統(tǒng)中的塊.111廈門理工學(xué)院計(jì)算機(jī)系存儲(chǔ)結(jié)構(gòu)物理存儲(chǔ)結(jié)構(gòu)與邏輯存儲(chǔ)結(jié)構(gòu)之間的關(guān)系從物理上看,數(shù)據(jù)Oracle10g體系結(jié)構(gòu)--2.1物理結(jié)構(gòu)112Oracle10g體系結(jié)構(gòu)--2.1物理結(jié)構(gòu)18Oracle數(shù)據(jù)庫物理結(jié)構(gòu)數(shù)據(jù)文件日志文件控制文件參數(shù)文件113廈門理工學(xué)院計(jì)算機(jī)系Oracle數(shù)據(jù)庫物理結(jié)構(gòu)數(shù)據(jù)文件19廈門理工學(xué)院計(jì)算機(jī)系
數(shù)據(jù)文件(DataFile)是物理存儲(chǔ)Oracle數(shù)據(jù)庫數(shù)據(jù)的文件。其特點(diǎn)如下:每一個(gè)數(shù)據(jù)文件只與一個(gè)數(shù)據(jù)庫相聯(lián)系。數(shù)據(jù)文件一旦被建立則不能修改其大小。一個(gè)表空間可包含一個(gè)或多個(gè)數(shù)據(jù)文件。一個(gè)數(shù)據(jù)文件只能屬于一個(gè)表空間.數(shù)據(jù)文件(DataFile)114廈門理工學(xué)院計(jì)算機(jī)系數(shù)據(jù)文件(DataFile)是物理存儲(chǔ)Or重做日志文件(RedoFile)
重做日志文件(RedoLogFile)記錄所有對(duì)數(shù)據(jù)庫數(shù)據(jù)的修改,以備恢復(fù)數(shù)據(jù)時(shí)使用。其特點(diǎn)如下:每一個(gè)數(shù)據(jù)庫至少包含兩個(gè)日志文件組。日志文件組以循環(huán)方式進(jìn)行寫操作。每一個(gè)日志文件成員對(duì)應(yīng)一個(gè)物理文件。115廈門理工學(xué)院計(jì)算機(jī)系重做日志文件(RedoFile)重做日志文件(日志切換(LogSwitch)
日志切換(LogSwitch)是為實(shí)現(xiàn)日志文件組的循環(huán)使用而設(shè)置的。出現(xiàn)日志開關(guān)的情況如下:當(dāng)一個(gè)日志文件組被填滿時(shí)關(guān)閉數(shù)據(jù)庫時(shí)DBA手動(dòng)切換日志116廈門理工學(xué)院計(jì)算機(jī)系日志切換(LogSwitch)日志切換(日志文件寫操作LogFile1LogFile2Group1Group2Member2.1Member1.1117廈門理工學(xué)院計(jì)算機(jī)系日志文件寫操作LogFile1LogFile2Gro鏡像日志文件
鏡像日志文件是為防止日志文件的丟失,在不同磁盤上同時(shí)維護(hù)兩個(gè)或多個(gè)聯(lián)機(jī)日志文件的副本。其特點(diǎn)如下:每個(gè)日志文件組至少包含兩個(gè)日志文件成員。每組的成員數(shù)目相同。同組的所有成員同時(shí)被修改。同組的成員大小相同,不同組的成員大小可不同.118廈門理工學(xué)院計(jì)算機(jī)系鏡像日志文件鏡像日志文件是為防止日志文件的丟失,在不鏡像日志文件操作Group1Group2LogFile1LogFile2Member2.1Member1.1LogFile3LogFile4Member2.2Member1.2Disk1Disk2119廈門理工學(xué)院計(jì)算機(jī)系鏡像日志文件操作Group1Group2LogFile控制文件控制文件(ControlFile)是一個(gè)較小的二進(jìn)制文件,用于描述數(shù)據(jù)庫結(jié)構(gòu)。描述信息如下:數(shù)據(jù)庫建立的日期。數(shù)據(jù)庫名。數(shù)據(jù)庫中所有數(shù)據(jù)文件和日志文件的文件名及路徑?;謴?fù)數(shù)據(jù)庫時(shí)所需的同步信息。要點(diǎn)注意:在打開和存取數(shù)據(jù)庫時(shí)都要訪問該文件。鏡像控制文件。記錄控制文件名及路徑的參數(shù)為:CONTROL_FILES120廈門理工學(xué)院計(jì)算機(jī)系控制文件控制文件(ControlFile)參數(shù)文件
參數(shù)文件(ParameterFile)是一個(gè)文本文件,可直接使用操作系統(tǒng)下的文本編輯器對(duì)其內(nèi)容進(jìn)行修改。該文件只在建立數(shù)據(jù)庫或啟動(dòng)實(shí)例時(shí)才被訪問,在修改該文件之前必須關(guān)閉實(shí)例。初始參數(shù)文件:init.ora生成參數(shù)文件:initSID.oraconfig.ora位于OracleHome下,如:C:\oracle\admin\TestDB\pfile121廈門理工學(xué)院計(jì)算機(jī)系參數(shù)文件參數(shù)文件(ParameterFile)是一參數(shù)文件的作用參數(shù)文件的作用:確定存儲(chǔ)結(jié)構(gòu)的大小。設(shè)置數(shù)據(jù)庫的全部缺省值。設(shè)置數(shù)據(jù)庫的范圍。設(shè)置數(shù)據(jù)庫的各種物理屬性。優(yōu)化數(shù)據(jù)庫性能。122廈門理工學(xué)院計(jì)算機(jī)系參數(shù)文件的作用參數(shù)文件的作用:28廈門理工學(xué)院計(jì)算機(jī)系參數(shù)文件的數(shù)據(jù)類型參數(shù)文件中參數(shù)的數(shù)據(jù)類型:整型 例:DB_BLOCK_SIZE=2048字符型例:DB_NAME=‘ora9’邏輯型例:CHECKPOINT_PROCESS=true123廈門理工學(xué)院計(jì)算機(jī)系參數(shù)文件的數(shù)據(jù)類型參數(shù)文件中參數(shù)的數(shù)據(jù)類型:29廈門理工學(xué)院Oracle10g體系結(jié)構(gòu)--2.2邏輯結(jié)構(gòu)124Oracle10g體系結(jié)構(gòu)--2.2邏輯結(jié)構(gòu)30Oralce的邏輯結(jié)構(gòu)組成Oracle的邏輯結(jié)構(gòu)是由一個(gè)或多個(gè)表空間組成。一個(gè)表空間(tablespace)由一組段組成一個(gè)段(segment)由一組區(qū)組成一個(gè)區(qū)(extent)由一批數(shù)據(jù)庫塊組成一個(gè)數(shù)據(jù)庫塊(block)對(duì)應(yīng)一個(gè)或多個(gè)物理塊125廈門理工學(xué)院計(jì)算機(jī)系Oralce的邏輯結(jié)構(gòu)組成Oracle的邏輯結(jié)構(gòu)是由一個(gè)或多邏輯結(jié)構(gòu)示意圖TablespaceDatabaseBlocksExtent84KSegment112KDatabaseDataFile表空間段區(qū)塊126廈門理工學(xué)院計(jì)算機(jī)系邏輯結(jié)構(gòu)示意圖TablespaceDatabaseBloc數(shù)據(jù)庫塊(Block)
數(shù)據(jù)庫塊(DatabaseBlock)是數(shù)據(jù)庫使用的I/O最小單元,又稱邏輯塊或ORACLE塊。一個(gè)數(shù)據(jù)庫塊對(duì)應(yīng)一個(gè)或多個(gè)物理塊,塊的大小由參數(shù)DB_BLOCK_SIZE確定。127廈門理工學(xué)院計(jì)算機(jī)系數(shù)據(jù)庫塊(Block)數(shù)據(jù)庫塊(Database數(shù)據(jù)庫塊(Block)塊的大小是操作系統(tǒng)塊大小的整數(shù)倍.以Win2K為例,操作系統(tǒng)塊(OSblock)的大小為4kb,所以O(shè)racleBlock的大小可以是4kb,8kb,16kb等等。如果塊的大小為4kb,某表每行的數(shù)據(jù)是100bytes.,如果某查詢語句只返回1行數(shù)據(jù),那么,在將數(shù)據(jù)讀入到數(shù)據(jù)高速緩存時(shí),讀取的數(shù)據(jù)量時(shí)4kb而不是100bytes.128廈門理工學(xué)院計(jì)算機(jī)系數(shù)據(jù)庫塊(Block)塊的大小是操作系統(tǒng)塊大小的區(qū)(extent)
區(qū)(Extent)是數(shù)據(jù)庫存儲(chǔ)空間分配的邏輯單位,一個(gè)區(qū)由一組數(shù)據(jù)庫塊組成,區(qū)是由段分配的,分配的第一個(gè)區(qū)稱初始區(qū),以后分配的區(qū)稱增量區(qū)。129廈門理工學(xué)院計(jì)算機(jī)系區(qū)(extent)區(qū)(Extent)是數(shù)據(jù)庫段(segment)
段(Segment)是表空間中一個(gè)指定類型的邏輯存儲(chǔ)結(jié)構(gòu),它由一個(gè)或多個(gè)區(qū)組成,段將占用并增長(zhǎng)存儲(chǔ)空間。130廈門理工學(xué)院計(jì)算機(jī)系段(segment)段(Segment)是段的分類引導(dǎo)段(BootstrapSegment)存儲(chǔ)數(shù)據(jù)字典表的定義段的分類回滾段(RollbackSegment)存儲(chǔ)修改之前的位置和值索引段(IndexSegment)存儲(chǔ)表上最佳查詢的所有索引數(shù)據(jù)臨時(shí)段(TemporarySegment)存儲(chǔ)表排序操作期間建立的臨時(shí)表的數(shù)據(jù)數(shù)據(jù)(表)段(DataSegment)存儲(chǔ)表中的所有數(shù)據(jù)131廈門理工學(xué)院計(jì)算機(jī)系段的分類引導(dǎo)段存儲(chǔ)數(shù)據(jù)字典段的分類回滾段存儲(chǔ)修改之前索引段存表空間(tablespace)
表空間是最大的邏輯單位,對(duì)應(yīng)一個(gè)或多個(gè)數(shù)據(jù)文件,表空間的大小是它所對(duì)應(yīng)的數(shù)據(jù)文件大小的總和。132廈門理工學(xué)院計(jì)算機(jī)系表空間(tablespace)表空間是最大的邏表空間與數(shù)據(jù)庫之間的關(guān)系數(shù)據(jù)庫、表空間、數(shù)據(jù)文件、方案對(duì)象(schemaobject)之間的關(guān)系133廈門理工學(xué)院計(jì)算機(jī)系表空間與數(shù)據(jù)庫之間的關(guān)系數(shù)據(jù)庫、表空間、數(shù)據(jù)文件、方案對(duì)象(Oracle10g創(chuàng)建的表空間Oracle10g自動(dòng)創(chuàng)建的表空間有: Example(實(shí)例表空間) Sysaux(輔助系統(tǒng)表空間) System(系統(tǒng)表空間) Temp(臨時(shí)表空間) Undotbs(重做表空間) Users(用戶的表空間)134廈門理工學(xué)院計(jì)算機(jī)系Oracle10g創(chuàng)建的表空間Oracle10g自SYSTEM(系統(tǒng))表空間System:系統(tǒng)表空間,存放關(guān)于表空間的名稱、控制文件、數(shù)據(jù)文件等管理信息,是最重要的表空間.它屬于Sys、System兩個(gè)schema(方案),僅被這兩個(gè)或其他具有足夠權(quán)限的用戶使用。但是均不可刪除或者重命名System表空間.135廈門理工學(xué)院計(jì)算機(jī)系SYSTEM(系統(tǒng))表空間System:其他表空間Temp:臨時(shí)表空間存放臨時(shí)表和臨時(shí)數(shù)據(jù),用于排序。Users:用戶表空間,永久存放用戶對(duì)象和私有信息,也被成為數(shù)據(jù)表空間。Sysaux:輔助系統(tǒng)表空間,用于減少系統(tǒng)負(fù)荷,提高系統(tǒng)的作業(yè)效率.一般地:系統(tǒng)用戶使用system表空間,非系統(tǒng)用戶使用Users表空間136廈門理工學(xué)院計(jì)算機(jī)系其他表空間Temp:臨時(shí)表空間存放臨時(shí)表和臨時(shí)數(shù)據(jù),Oracle10g體系結(jié)構(gòu)--2.3軟件結(jié)構(gòu)137Oracle10g體系結(jié)構(gòu)--2.3軟件結(jié)構(gòu)43例程(instance)Oracle數(shù)據(jù)庫結(jié)構(gòu)又稱為例程結(jié)構(gòu).數(shù)據(jù)庫啟動(dòng)時(shí):Oracle首先要在內(nèi)存中獲取、劃分、保留各種用途的區(qū)域,運(yùn)行各種用途的后臺(tái),即:創(chuàng)建一個(gè)例程(instance);然后由該例程裝載(mount)、打開(open)數(shù)據(jù)庫;最后由這個(gè)例程來訪問和控制數(shù)據(jù)庫的各種物理結(jié)構(gòu)138廈門理工學(xué)院計(jì)算機(jī)系例程(instance)Oracle數(shù)據(jù)庫結(jié)構(gòu)又稱為例程結(jié)構(gòu)例程(instance)如果把Oracle數(shù)據(jù)庫比作一部汽車,instance相當(dāng)于汽車的發(fā)動(dòng)機(jī)一樣,啟動(dòng)oracle數(shù)據(jù)庫前提應(yīng)先啟動(dòng)instance.139廈門理工學(xué)院計(jì)算機(jī)系例程(instance)如果把Oracle數(shù)據(jù)庫比作一部汽車?yán)?instance)當(dāng)用戶連接到數(shù)據(jù)庫并使用數(shù)據(jù)庫時(shí),實(shí)際上是連接到該數(shù)據(jù)庫的例程,通過例程來連接、使用數(shù)據(jù)庫。所以例程是用戶和數(shù)據(jù)庫之間的中間層。例程與數(shù)據(jù)庫的區(qū)別:數(shù)據(jù)庫指的是存儲(chǔ)數(shù)據(jù)的物理結(jié)構(gòu),總是實(shí)際存在的;例程則是由內(nèi)存結(jié)構(gòu)和一系列進(jìn)程組成,可以啟動(dòng)和關(guān)閉。140廈門理工學(xué)院計(jì)算機(jī)系例程(instance)當(dāng)用戶連接到數(shù)據(jù)庫并使用數(shù)據(jù)庫時(shí),實(shí)OracleInstance的組成實(shí)例(INSTANCE)
是存取和控制數(shù)據(jù)庫的軟件機(jī)制,它由系統(tǒng)全局區(qū)(SystemGlobalArea,簡(jiǎn)稱SGA)和后臺(tái)進(jìn)程組成。后臺(tái)進(jìn)程實(shí)例SGA數(shù)據(jù)高速緩存共享池日志高速緩存141廈門理工學(xué)院計(jì)算機(jī)系OracleInstance的組成實(shí)例(INSTANCE軟件結(jié)構(gòu)內(nèi)存結(jié)構(gòu)進(jìn)程結(jié)構(gòu)內(nèi)存結(jié)構(gòu)和進(jìn)程結(jié)構(gòu)共同組成了軟件結(jié)構(gòu)142廈門理工學(xué)院計(jì)算機(jī)系軟件結(jié)構(gòu)內(nèi)存結(jié)構(gòu)進(jìn)程結(jié)構(gòu)內(nèi)存結(jié)構(gòu)和進(jìn)程結(jié)構(gòu)共同組成了軟件結(jié)構(gòu)內(nèi)存結(jié)構(gòu)內(nèi)存結(jié)構(gòu)是Oracle數(shù)據(jù)庫體系中最為重要的一部分,內(nèi)存也是影響數(shù)據(jù)庫性能的第一因素.按照內(nèi)存的使用方法的不同,Oracle數(shù)據(jù)庫的內(nèi)存又可以分為SGA(SysteGlobalArea)和PGA(ProgramGlobalArea).143廈門理工學(xué)院計(jì)算機(jī)系內(nèi)存結(jié)構(gòu)內(nèi)存結(jié)構(gòu)是Oracle數(shù)據(jù)庫體系中最為重要的一部分,系統(tǒng)全局區(qū)(SGA)SGA是ORACLE系統(tǒng)為實(shí)例分配的一組共享緩沖存儲(chǔ)區(qū),用于存放數(shù)據(jù)庫數(shù)據(jù)和控制信息,以實(shí)現(xiàn)對(duì)數(shù)據(jù)庫數(shù)據(jù)的管理和操作。每個(gè)例程都只有一個(gè)SGA.它是不同用戶進(jìn)程與服務(wù)進(jìn)程進(jìn)行通信的中心,數(shù)據(jù)庫的各種操作主要在SGA中進(jìn)行,所以稱其為系統(tǒng)全局區(qū).創(chuàng)建例程時(shí),Oracle為SGA分配內(nèi)存;終止例程時(shí),釋放SGA所占用的內(nèi)存.144廈門理工學(xué)院計(jì)算機(jī)系系統(tǒng)全局區(qū)(SGA)SGA是ORACLE系統(tǒng)系統(tǒng)全局區(qū)(SGA)系統(tǒng)全局區(qū)由以下幾個(gè)部分組成:145廈門理工學(xué)院計(jì)算機(jī)系系統(tǒng)全局區(qū)(SGA)系統(tǒng)全局區(qū)由以下幾個(gè)部分組成:51廈門理數(shù)據(jù)高速緩存(DatabaseBufferCache)保存最近從數(shù)據(jù)文件中讀取的數(shù)據(jù)塊,其中的數(shù)據(jù)被所有用戶共享.兩個(gè)參數(shù)影響DBC:DB_BLOCK_SIZE緩沖區(qū)數(shù)據(jù)塊大小DB_BLOCK_BUFFERS緩沖區(qū)數(shù)據(jù)塊個(gè)數(shù)146廈門理工學(xué)院計(jì)算機(jī)系數(shù)據(jù)高速緩存(DatabaseBufferCache)保初次訪問數(shù)據(jù)時(shí),Oracle將讀取磁盤上的數(shù)據(jù)文件,將數(shù)據(jù)放入數(shù)據(jù)高速緩存,再處理數(shù)據(jù);如果數(shù)據(jù)已經(jīng)位于數(shù)據(jù)高速緩存中時(shí),Oracle直接操作數(shù)據(jù)。數(shù)據(jù)緩沖區(qū)數(shù)據(jù)文件數(shù)據(jù)高速緩存(DatabaseBufferCache)147廈門理工學(xué)院計(jì)算機(jī)系初次訪問數(shù)據(jù)時(shí),Oracle將讀取磁盤上的數(shù)據(jù)文件,將數(shù)據(jù)放數(shù)據(jù)高速緩存(DBC)DBC的緩存塊分為三類:臟緩存塊存放已經(jīng)被修改過的緩存塊.當(dāng)SQL修改某個(gè)緩存塊中的數(shù)據(jù),則這個(gè)緩存塊被標(biāo)記為臟緩存塊空閑緩存塊等待寫入數(shù)據(jù)的空閑緩存塊.命中緩存塊最近正在被訪問的緩存塊.148廈門理工學(xué)院計(jì)算機(jī)系數(shù)據(jù)高速緩存(DBC)DBC的緩存塊分為三類:54廈門理工學(xué)管理緩存塊的列表Oracle通過2個(gè)列表來管理上述緩存塊:臟列表(DIRTY)包括被修改過但尚未寫到數(shù)據(jù)文件的緩沖塊。LRU(LeastRecentlyUsed)列表包括空閑緩沖塊、命中緩存塊,以及還沒有移到臟列表的緩沖塊。149廈門理工學(xué)院計(jì)算機(jī)系管理緩存塊的列表Oracle通過2個(gè)列表來管理上述緩存塊:5數(shù)據(jù)高速緩存工作原理讀數(shù)據(jù)入DBC之前,先在LRU中搜索空閑緩存塊;在搜索過程中如果發(fā)現(xiàn)臟緩存塊,則將其移入DIRTY;找到足夠的空閑塊,將所有數(shù)據(jù)讀入;3,4.如果空閑塊不足,則暫停搜索,Oralce立刻啟動(dòng)DBWR進(jìn)程,將DIRTY中的臟緩存塊數(shù)據(jù)寫入數(shù)據(jù)文件釋放足夠的空閑緩存塊。數(shù)據(jù)庫寫進(jìn)程150廈門理工學(xué)院計(jì)算機(jī)系數(shù)據(jù)高速緩存工作原理讀數(shù)據(jù)入DBC之前,先在LRU中搜索空閑重做日志高速緩存當(dāng)執(zhí)行DML(DataManipulationLanguage,數(shù)據(jù)操縱語言)如:update、delete、insert或者create、alter、drop等語句時(shí),Oracle都會(huì)為這些操作生成重做記錄.重做日志高速緩存就是用于存儲(chǔ)重做記錄的緩存.151廈門理工學(xué)院計(jì)算機(jī)系重做日志高速緩存當(dāng)執(zhí)行DML(Data重做日志高速緩存工作原理為提高效率,重做記錄并不直接寫入磁盤的重做日志文件,而是先寫入重做日志緩存;當(dāng)重做日志緩存中的重做記錄達(dá)到一定數(shù)量時(shí),由LGWR進(jìn)程寫入重做日志.(先內(nèi)存后磁盤)當(dāng)2個(gè)(至少2個(gè))重做日志切換時(shí),由ARCH將重做日志中的數(shù)據(jù)寫入歸檔日志文件,以做備份.日志寫進(jìn)程歸檔進(jìn)程152廈門理工學(xué)院計(jì)算機(jī)系重做日志高速緩存工作原理為提高效率,重做記錄并不直接寫入磁盤共享池(SharedPool)共享池保存了最近執(zhí)行的SQL語句、PL/SQL程序和數(shù)據(jù)字典信息,是對(duì)SQL語句和PL/SQL程序進(jìn)行語法分析、編譯、執(zhí)行的內(nèi)存區(qū).153廈門理工學(xué)院計(jì)算機(jī)系共享池(SharedPool)共享池保存了共享池(SharedPool)共享池由庫緩存和數(shù)據(jù)字典緩存組成。參數(shù)SHARED_POOL_SIZE
確定共享池的大小。庫緩存(LibraryCache)區(qū)包括解析用戶進(jìn)程提交的SQL語句或PL/SQL程序保存最近解析過的SQL語句或PL/SQL程序數(shù)據(jù)字典區(qū)(Dictionarycache)用于存放數(shù)據(jù)字典信息行。154廈門理工學(xué)院計(jì)算機(jī)系共享池(SharedPool)共享池由庫緩存和數(shù)據(jù)字典緩存OracleDBMS執(zhí)行各種SQL、PL/SQL之前,要對(duì)其進(jìn)行語法上的解析、對(duì)象上的確認(rèn)、權(quán)限上的判斷、操作上的優(yōu)化等一系列操作,并生成執(zhí)行計(jì)劃。庫緩存保存了已經(jīng)解析的SQL和PL/SQL。
庫緩存155廈門理工學(xué)院計(jì)算機(jī)系OracleDBMS執(zhí)行各種SQL、PL/S數(shù)據(jù)字典緩存在Oracle運(yùn)行過程中,Oracle會(huì)頻繁的對(duì)數(shù)據(jù)字典中的表、視圖進(jìn)行訪問,以便確定操作的數(shù)據(jù)對(duì)象是否存在、是否具有合適的權(quán)限等信息。數(shù)據(jù)字典緩保存了最常用的數(shù)據(jù)字典信息。數(shù)據(jù)字典緩存中存放的記錄是一條一條的,而其他緩存區(qū)中保存的是數(shù)據(jù)塊.156廈門理工學(xué)院計(jì)算機(jī)系數(shù)據(jù)字典緩存在Oracle運(yùn)行過程中,Orac大池 大池用于需要大內(nèi)存操作提供相對(duì)獨(dú)立的內(nèi)存空間,以便提高性能。 大池是可選的內(nèi)存結(jié)構(gòu)。DBA可以決定是否需要在SGA中創(chuàng)建大池。需要大池的操作:數(shù)據(jù)庫備份和恢復(fù)大量排序的SQL語句并行化的數(shù)據(jù)庫操作157廈門理工學(xué)院計(jì)算機(jī)系大池 大池用于需要大內(nèi)存操作提供相對(duì)獨(dú)立的內(nèi)存空間,以便提Java池8i以后提供的對(duì)Java的支持,用于存放Java代碼、Java程序等.一般不小于20M,以便虛擬機(jī)運(yùn)行.158廈門理工學(xué)院計(jì)算機(jī)系Java池8i以后提供的對(duì)Java的支持,PGA(ProgramGlobalArea)PGA是用戶進(jìn)程連接到數(shù)據(jù)庫,并創(chuàng)建一個(gè)對(duì)應(yīng)的會(huì)話時(shí),由Oracle為服務(wù)進(jìn)程分配的,專門用于當(dāng)前用戶會(huì)話的內(nèi)存區(qū)。PGA是非共享的,而SGA是共享的。PGA大小由操作系統(tǒng)決定,并且分配后保持不變;會(huì)話終止時(shí),自動(dòng)釋放PGA所占的內(nèi)存。159廈門理工學(xué)院計(jì)算機(jī)系PGA(ProgramGlobalArea)PGA的組成排序區(qū)會(huì)話區(qū)游標(biāo)區(qū)堆棧區(qū)PGA服務(wù)器進(jìn)程160廈門理工學(xué)院計(jì)算機(jī)系PGA的組成排序區(qū)PGA服務(wù)器進(jìn)程66廈門理工學(xué)院計(jì)算機(jī)系排序區(qū)執(zhí)行orderby、groupby等包含排序操作的SQL語句時(shí)所產(chǎn)生的臨時(shí)數(shù)據(jù).Oracle將準(zhǔn)備排序的數(shù)據(jù)先臨時(shí)存儲(chǔ)到排序區(qū)中,并在排序區(qū)中排序,然后將排序好的數(shù)據(jù)返回給用戶.161廈門理工學(xué)院計(jì)算機(jī)系排序區(qū)執(zhí)行orderby、groupby等包會(huì)話區(qū)保存會(huì)話所具有的權(quán)限、角色、性能統(tǒng)計(jì)信息.162廈門理工學(xué)院計(jì)算機(jī)系會(huì)話區(qū)保存會(huì)話所具有的權(quán)限、角色、性能統(tǒng)計(jì)信息.游標(biāo)區(qū)當(dāng)運(yùn)行帶有游標(biāo)(course)的PL/SQL語句時(shí),Oracle會(huì)在共享池中為該語句分配上下文(Context),游標(biāo)實(shí)際上是指向該上下文的指針。163廈門理工學(xué)院計(jì)算機(jī)系游標(biāo)區(qū)當(dāng)運(yùn)行帶有游標(biāo)(course)的PL/S堆棧區(qū)保存會(huì)話中的綁定變量、會(huì)話變量以及SQL語句運(yùn)行時(shí)的內(nèi)存結(jié)構(gòu)信息。例如:select*fromempwhereemp=:a;:a就是綁定變量,提示用戶輸入.在等待用戶輸入時(shí),先將該變量存入堆棧,以便可以同時(shí)運(yùn)行其他語句.164廈門理工學(xué)院計(jì)算機(jī)系堆棧區(qū)保存會(huì)話中的綁定變量、會(huì)話變量以及SQ進(jìn)程結(jié)構(gòu)進(jìn)程時(shí)操作系統(tǒng)中的一個(gè)概念,是一個(gè)可以獨(dú)立調(diào)用的活動(dòng),用于完成指定的任務(wù)。進(jìn)程與程序的區(qū)別是:進(jìn)程是動(dòng)態(tài)創(chuàng)建的,完成后銷毀;程序是靜態(tài)的實(shí)體,可以復(fù)制、編輯。進(jìn)程強(qiáng)調(diào)執(zhí)行過程,程序僅僅是指令的有序集合。進(jìn)程在內(nèi)存中,程序在外存中。
165廈門理工學(xué)院計(jì)算機(jī)系進(jìn)程結(jié)構(gòu)進(jìn)程時(shí)操作系統(tǒng)中的一個(gè)概念,是一個(gè)可以獨(dú)進(jìn)程種類Oracle包括用戶進(jìn)程和Oracle進(jìn)程兩類:用戶進(jìn)程服務(wù)器進(jìn)程后臺(tái)進(jìn)程Oracle進(jìn)程166廈門理工學(xué)院計(jì)算機(jī)系進(jìn)程種類Oracle包括用戶進(jìn)程和Oracle進(jìn)程兩類:Or用戶進(jìn)程當(dāng)用戶運(yùn)行一個(gè)應(yīng)用程序時(shí),就建立一個(gè)用戶進(jìn)程。167廈門理工學(xué)院計(jì)算機(jī)系用戶進(jìn)程當(dāng)用戶運(yùn)行一個(gè)應(yīng)用程序時(shí),就建立一個(gè)用服務(wù)器進(jìn)程
服務(wù)器進(jìn)程:處理用戶進(jìn)程的請(qǐng)求。處理過程:分析SQL命令并生成執(zhí)行方案。從數(shù)據(jù)緩沖存儲(chǔ)區(qū)中讀取數(shù)據(jù)。將執(zhí)行結(jié)果返回給用戶。168廈門理工學(xué)院計(jì)算機(jī)系服務(wù)器進(jìn)程 服務(wù)器進(jìn)程:處理用戶進(jìn)程的請(qǐng)求。74廈門理后臺(tái)進(jìn)程后臺(tái)進(jìn)程為所有數(shù)據(jù)庫用戶異步完成各種任務(wù)。主要的后臺(tái)進(jìn)程有
DBWR數(shù)據(jù)庫寫進(jìn)程LGWR日志寫進(jìn)程CKPT檢查點(diǎn)寫進(jìn)程SMON系統(tǒng)監(jiān)控進(jìn)程PMON進(jìn)程監(jiān)控進(jìn)程ARCH歸檔進(jìn)程RECO恢復(fù)進(jìn)程LCKn封鎖進(jìn)程169廈門理工學(xué)院計(jì)算機(jī)系后臺(tái)進(jìn)程后臺(tái)進(jìn)程主要的后臺(tái)進(jìn)程有75廈門理工學(xué)院計(jì)算機(jī)系DBWR(數(shù)據(jù)寫)DBWR(DataBaseWriter)將數(shù)據(jù)緩沖區(qū)中所有修改過的緩沖塊數(shù)據(jù)寫到數(shù)據(jù)文件中,并使用LRU算法來保持緩沖區(qū)中的數(shù)據(jù)塊為最近經(jīng)常使用的,以減少I/O次數(shù)。該進(jìn)程在啟動(dòng)實(shí)例時(shí)自動(dòng)啟動(dòng)。170廈門理工學(xué)院計(jì)算機(jī)系DBWR(數(shù)據(jù)寫)DBWR(DataBaseWriterLGWR(日志寫)LGWR(LogWriter)將日志緩沖區(qū)中的所有記錄項(xiàng)寫到日志文件中。該進(jìn)程在啟動(dòng)實(shí)例時(shí)自動(dòng)啟動(dòng)。171廈門理工學(xué)院計(jì)算機(jī)系LGWR(日志寫)LGWR(LogWriter
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年輸送機(jī)械合作協(xié)議書
- 2025年通訊檢測(cè)儀器合作協(xié)議書
- 2025年代理買賣合同簡(jiǎn)單版(三篇)
- 2025年買樓定金合同(2篇)
- 2025年產(chǎn)品銷售的協(xié)議(2篇)
- 2025年個(gè)人授權(quán)的合同委托(2篇)
- 2025年中班幼兒習(xí)慣培養(yǎng)總結(jié)模版(二篇)
- 2025年交通事故合同糾紛案例分析(2篇)
- 2025年二年級(jí)下冊(cè)班主任班級(jí)工作總結(jié)(4篇)
- 2025年人二手車買賣合同(2篇)
- 《也是冬天-也是春天》
- 鮮切水果行業(yè)分析
- 《中國(guó)探月工程》課件
- 義務(wù)教育物理課程標(biāo)準(zhǔn)(2022年版)測(cè)試題文本版(附答案)
- 第7章-無人機(jī)法律法規(guī)
- 藥劑科基本藥物處方用藥狀況點(diǎn)評(píng)工作表
- 初中音樂聽課筆記20篇
- 央國(guó)企信創(chuàng)化與數(shù)字化轉(zhuǎn)型規(guī)劃實(shí)施
- 拆遷征收代理服務(wù)投標(biāo)方案
- 完形療法概述
- SL631-637-2012-水利水電工程單元工程施工質(zhì)量驗(yàn)收評(píng)定標(biāo)準(zhǔn)
評(píng)論
0/150
提交評(píng)論