Oracle9i數(shù)據(jù)庫體系結(jié)構(gòu)課件_第1頁
Oracle9i數(shù)據(jù)庫體系結(jié)構(gòu)課件_第2頁
Oracle9i數(shù)據(jù)庫體系結(jié)構(gòu)課件_第3頁
Oracle9i數(shù)據(jù)庫體系結(jié)構(gòu)課件_第4頁
Oracle9i數(shù)據(jù)庫體系結(jié)構(gòu)課件_第5頁
已閱讀5頁,還剩121頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

Oracle9i數(shù)據(jù)庫體系結(jié)構(gòu)1E_mail:tengyc@263.netOracle9i數(shù)據(jù)庫體系結(jié)構(gòu)1E_mail:tengyc@Oracle9i數(shù)據(jù)庫體系結(jié)構(gòu)2E_mail:tengyc@263.netOracle9i數(shù)據(jù)庫體系結(jié)構(gòu)2E_mail:tengyc@Oracle9i

物理結(jié)構(gòu)

3E_mail:tengyc@263.netOracle9i物理結(jié)構(gòu)3E_mail:tengyc@26SGA(SystemGlobalArea)BackgroundProcessesServersUsersDataFilesRedoLogFilesControlFilesParameterFileServerParameterFile4E_mail:tengyc@263.netSGA(SystemGlobalArea)Backgro日志文件(RedoLogFiles)

RedoLog文件記錄對(duì)于數(shù)據(jù)庫的所有修改,用于數(shù)據(jù)庫的恢復(fù)如果對(duì)于日志文件進(jìn)行鏡像,則相同的RedoLog信息被寫入多個(gè)聯(lián)機(jī)的RedoLog文件中Oracle運(yùn)行NOARCHIVELOG時(shí)只有歷史日志,沒有歸檔日志5E_mail:tengyc@263.net日志文件(RedoLogFiles)RedoLog日志文件(RedoLogFiles)每個(gè)Oracle數(shù)據(jù)庫至少有兩個(gè)RedoLog日志文件組,每組有一個(gè)或多個(gè)日志文件建議對(duì)RedoLog文件進(jìn)行鏡像,以保證數(shù)據(jù)庫安全運(yùn)行建議使用四個(gè)RedoLog文件組,每組2或3個(gè)日志文件組內(nèi)RedoLog文件位于不同磁盤RedoLog文件是循環(huán)使用的6E_mail:tengyc@263.net日志文件(RedoLogFiles)每個(gè)Oracle數(shù)據(jù)ServersUsersDataFilesRedoLog

FilesDatabase

BufferCacheSharedPoolRedoLogBufferSGA(SystemGlobalArea)DBWRARCHLGWR日志產(chǎn)生過程1237E_mail:tengyc@263.netServersUsersDataFilesRedoLogRedoLog文件鏡像一個(gè)日志組中RedoLog文件具有相同的信息選擇合適的日志文件大小組中的成員同時(shí)被更新每組應(yīng)包含與其他組中數(shù)目相同的日志成員鏡像的RedoLog文件可以防止

RedoLog

文件丟失8E_mail:tengyc@263.netRedoLog文件鏡像一個(gè)日志組中RedoLog文

Oracle9iDatabase(WindowsNT)

9E_mail:tengyc@263.netOracle9iDatabase(WindowsNT

Oracle9iDatabase(Unix)

10E_mail:tengyc@263.netOracle9iDatabase(Unix)10E_

日志切換當(dāng)ORACLE從一個(gè)RedoLog文件切換到另一個(gè)日志文件時(shí)發(fā)生日志切換當(dāng)LGWR寫滿一組日志文件時(shí)發(fā)生日志切換DBA可強(qiáng)制日志切換數(shù)據(jù)庫關(guān)閉時(shí)發(fā)生日志切換日志切換時(shí),當(dāng)前日志文件被賦予一個(gè)新的日志序列號(hào),用于標(biāo)識(shí)其中的信息日志切換時(shí)產(chǎn)生檢查點(diǎn)CKPT(Checkpoint)11E_mail:tengyc@263.net日志切換當(dāng)ORACLE從一個(gè)RedoLog文件切換到另RedoLog文件組Group1MemberAGroup2MemberAGroup3MemberAGroup1MemberBGroup2MemberBGroup3MemberBGroup1MemberCGroup2MemberCGroup3MemberCLogFile1LogFile2LogFile312E_mail:tengyc@263.netRedoLog文件組Group1MemberALogOracle9iforUnix

日志文件結(jié)構(gòu)

(SunSolaris)redo01.logredo02.logredo03.log三個(gè)日志文件組,每組一個(gè)日志成員13E_mail:tengyc@263.netOracle9iforUnix日志文件結(jié)構(gòu)

Oracle9i

日志文件結(jié)構(gòu)(WindowsNT)Redo01.log三個(gè)日志文件組,每組一個(gè)日志成員Redo02.logRedo03.log14E_mail:tengyc@263.netOracle9i日志文件結(jié)構(gòu)(WindowsNTOracle9i數(shù)據(jù)庫參數(shù)文件

服務(wù)器參數(shù)參數(shù)spfileServerParameterFile文本參數(shù)pfileParameterFile15E_mail:tengyc@263.netOracle9i數(shù)據(jù)庫參數(shù)文件

服務(wù)器參數(shù)參數(shù)spfileS控制文件(ControlFiles)控制文件是描述數(shù)據(jù)庫結(jié)構(gòu)的二進(jìn)制文件控制文件所有必須的數(shù)據(jù)文件和日志文件在控制文件中標(biāo)識(shí)數(shù)據(jù)庫名存儲(chǔ)在控制文件中控制文件用于打開和存取數(shù)據(jù)庫數(shù)據(jù)庫恢復(fù)所需的同步信息存儲(chǔ)在控制文件中控制文件數(shù)據(jù)庫的物理組成與控制文件中的記錄不同時(shí),系統(tǒng)則不能正常啟動(dòng)或發(fā)生down機(jī)現(xiàn)象16E_mail:tengyc@263.net控制文件(ControlFiles)控制文件是描述數(shù)據(jù)

控制文件(ControlFiles)建議設(shè)置:至少使用兩個(gè)控制文件,并存放于不同磁盤參數(shù)Control_Files指明控制文件控制文件的鏡像可以在數(shù)據(jù)庫創(chuàng)建或創(chuàng)建完成后進(jìn)行17E_mail:tengyc@263.net控制文件(ControlFiles)建議設(shè)置:17E_

Oracle9iDatabase(WindowsNT)

18E_mail:tengyc@263.netOracle9iDatabase(WindowsNT

Oracle9iDatabase(Unix)

19E_mail:tengyc@263.netOracle9iDatabase(Unix)19E_Oracle9i

邏輯結(jié)構(gòu)

20E_mail:tengyc@263.netOracle9i邏輯結(jié)構(gòu)20E_mail:tengyc@2DatabaseTablespaceSegmentDataIndexTempRollbackExtentFreeUsedDataBlockPartofPartofOracle9i數(shù)據(jù)庫的邏輯結(jié)構(gòu)21E_mail:tengyc@263.netDatabaseTablespaceSegmentDataI表空間Oracle表空間類型數(shù)據(jù)字典管理表空間(Oracle7,8,8i)本地化管理表空間

(Oracle8i,9i)UniformAutoAllocate22E_mail:tengyc@263.net表空間Oracle表空間類型數(shù)據(jù)字典管理表空間(OracleOracle表空間類型23E_mail:tengyc@263.netOracle表空間類型23E_mail:tengyc@263

Oracle9i臨時(shí)段管理Oracle9i的缺省臨時(shí)表空間(DefaultTemporaryTablespace)用于用戶排序時(shí)SQL的Orderby語句使用,在創(chuàng)建用戶時(shí)指定用戶缺省的臨時(shí)表空間。在Oracle9i中,允許數(shù)據(jù)庫管理員重新創(chuàng)建并設(shè)置系統(tǒng)臨時(shí)表空間,而不使用系統(tǒng)表空間作為排序、匯總等臨時(shí)表空間使用。如果系統(tǒng)設(shè)置了系統(tǒng)缺省臨時(shí)表空間,則用戶不得使用其他表空間作為臨時(shí)表空間使用。24E_mail:tengyc@263.netOracle9i臨時(shí)段管理Oracle9i的缺省回退段(RollbackSegments)為什么要設(shè)回退段?

回退段是數(shù)據(jù)庫的一部分,是Oracle數(shù)據(jù)庫的一個(gè)重要參數(shù),其設(shè)計(jì)是否正確直接影響到數(shù)據(jù)庫的動(dòng)態(tài)性能。Rollback段的使用用于保存一個(gè)事務(wù)的操作,以便在某些情況下回退或取消操作。

每個(gè)Oracle數(shù)據(jù)庫都有多個(gè)回退段回退段的作用并發(fā)操作時(shí),保證數(shù)據(jù)的讀一致性使用SQL語句rollback回退一個(gè)事務(wù)的操作25E_mail:tengyc@263.net回退段(RollbackSegments)為什回退段(RollbackSegments)事務(wù)恢復(fù)的需要回退段操作舉例由于語句錯(cuò)誤回退一個(gè)事務(wù)回退一個(gè)事務(wù)、或回退事務(wù)到一個(gè)保存點(diǎn)(SavePoint)由于異常進(jìn)程中斷而回退在例程恢復(fù)中回退所有沒未完成的事務(wù)26E_mail:tengyc@263.net回退段(RollbackSegments)事務(wù)恢復(fù)的需要2Oracle9i自動(dòng)Undo空間管理

在Oracle8i以前的數(shù)據(jù)庫中,對(duì)于回退段的設(shè)置與管理已一直是一個(gè)十分復(fù)雜的工作,其正確的設(shè)置既困難又費(fèi)時(shí)。對(duì)于大的事務(wù)往往產(chǎn)生回退段不足的錯(cuò)誤,或在RBS表空間回退段中消耗過大。Oracle9i引如了一個(gè)新的概念,即AutomaticUndoManagement,Undo空間自動(dòng)管理。在Oracle9i中,可以使用傳統(tǒng)的回退段,也可以使用Undo表空間,Oracle9i對(duì)Undo空間自動(dòng)管理,使回退段的管理變的十分容易。在Oracle9i中,可以使用自動(dòng)Undo管理代替回退段,Oracle9i使用Undo表空間,并對(duì)Undo空間自動(dòng)管理。

27E_mail:tengyc@263.netOracle9i自動(dòng)Undo空間管理

27E_mail:teOracle9i自動(dòng)Undo空間管理

在Oracle8i中,私通使用手動(dòng)管理Undo空間,使用在RBS表空間中創(chuàng)建大的回退段的方法處理大的事務(wù),由于一個(gè)事務(wù)只可以使用一個(gè)回退段,當(dāng)一個(gè)回退段動(dòng)態(tài)擴(kuò)展超過區(qū)最大值、或超過數(shù)據(jù)文件的允許擴(kuò)展范圍時(shí),將產(chǎn)生回退段不足的錯(cuò)誤,事務(wù)被進(jìn)行過程被終止。在Oracle9i中,一個(gè)事務(wù)可以使用多個(gè)回退段。使用Oracle9i的Undo空間自動(dòng)管理特點(diǎn),當(dāng)一個(gè)回退段不足時(shí),Oracle會(huì)自動(dòng)使用其他回退段,不終止事務(wù)的運(yùn)行。在Oracle9i中,數(shù)據(jù)庫管理員只需了解Undo表空間是否有足夠的空間即可。28E_mail:tengyc@263.netOracle9i自動(dòng)Undo空間管理

28E_mail:te自動(dòng)Undo空間管理29E_mail:tengyc@263.net自動(dòng)Undo空間管理29E_mail:tengyc@263.Oracle9i

內(nèi)存結(jié)構(gòu)

30E_mail:tengyc@263.netOracle9i內(nèi)存結(jié)構(gòu)30E_mail:tengyc@2ServersUsersDataFilesRedoLog

FilesDatabase

BufferCacheSharedPoolRedoLogBufferSGA(SystemGlobalArea)DBWRARCHLGWR系統(tǒng)全局區(qū)SGA31E_mail:tengyc@263.netServersUsersDataFilesRedoLogServersUsersDataFilesRedoLog

FilesDatabase

BufferCacheSharedPoolRedoLogBufferSGADBWRARCHLGWR數(shù)據(jù)緩沖區(qū)(DatabaseBufferCache)32E_mail:tengyc@263.netServersUsersDataFilesRedoLogDB數(shù)據(jù)緩沖區(qū)Dirtylist....LRUlist....DatafilesDatafiles數(shù)據(jù)緩沖區(qū)(DatabaseBufferCache)ServerDBWRSGAFree,Dirty,PinnedDB數(shù)據(jù)緩沖區(qū)DirtylistLRUlistDatafServersUsersDataFilesRedoLog

FilesDatabase

BufferCacheSharedPoolRedoLogBufferSGADBWRARCHLGWR日志緩沖區(qū)(RedoLogBuffer)34E_mail:tengyc@263.netServersUsersDataFilesRedoLogServersUsersDataFilesDatabase

BufferCacheSharedPoolSGADBWR共享池(SharedGlobalArea)ServersServersUsersUsers35E_mail:tengyc@263.netServersUsersDataFilesDatabaseOracle9i

實(shí)例的進(jìn)程結(jié)構(gòu)

36E_mail:tengyc@263.netOracle9i實(shí)例的進(jìn)程結(jié)構(gòu)36E_mail:tengy

Oracle啟動(dòng)時(shí),將分配系統(tǒng)全局區(qū)SGA并啟動(dòng)Oracle后臺(tái)進(jìn)程(BackgroundProcesses)。內(nèi)存區(qū)域和后臺(tái)進(jìn)程合稱為一個(gè)Oracle實(shí)例(Instance)。SGA是由Oracle為一個(gè)實(shí)例分配的一組共享內(nèi)存

區(qū)域后臺(tái)進(jìn)程異步地為所有的數(shù)據(jù)庫用戶執(zhí)行不同的任務(wù)參數(shù)文件決定了實(shí)例的特征及大小不正確的參數(shù)文件,會(huì)導(dǎo)致實(shí)例啟動(dòng)失敗Oracle數(shù)據(jù)庫的Instance決定了動(dòng)態(tài)運(yùn)行的數(shù)據(jù)庫的ORACLE_SIDOracle實(shí)例(Instance)37E_mail:tengyc@263.netOracle啟動(dòng)時(shí),將分配系統(tǒng)全局區(qū)SGA并啟動(dòng)OraSystemGlobalAreaBackgroundProcessesServersUsersDataFilesRedoLogFilesControlFiles38E_mail:tengyc@263.netSystemGlobalAreaBackgroundP

Oracle數(shù)據(jù)庫進(jìn)程結(jié)構(gòu)Oracle可以在多進(jìn)程和單進(jìn)程配置下工作。多進(jìn)程配置多個(gè)進(jìn)程執(zhí)行Oracle代碼的不同部分多進(jìn)程允許多個(gè)用戶同時(shí)使用單進(jìn)程配置所有的Oracle代碼由一個(gè)進(jìn)程執(zhí)行單進(jìn)程實(shí)例只允許單個(gè)用戶使用主要用于單任務(wù)的機(jī)器上通常使用的Oracle都是多進(jìn)程實(shí)例結(jié)構(gòu)39E_mail:tengyc@263.netOracle數(shù)據(jù)庫進(jìn)程結(jié)構(gòu)39E_mail:tenDatabase

BufferCacheSharedPoolSGAOracle數(shù)據(jù)庫單進(jìn)程結(jié)構(gòu)ORACLERDBMSSERVER應(yīng)用軟件40E_mail:tengyc@263.netDatabase

BufferCacheSharedPDatabase

BufferCacheSharedPoolSGALISTENEROracle數(shù)據(jù)庫多進(jìn)程結(jié)構(gòu)DBWRLGWRDnnnUSERRECOCKPTSMONPMONARCH41E_mail:tengyc@263.netDatabase

BufferCacheSharedP用戶進(jìn)程與服務(wù)器進(jìn)程42E_mail:tengyc@263.net用戶進(jìn)程與服務(wù)器進(jìn)程42E_mail:tengyc@263.ServersUsersDataFilesDatabase

BufferCacheSharedPoolSGADBWRUser與Server進(jìn)程ServersServersUsersUsers43E_mail:tengyc@263.netServersUsersDataFilesDatabase用戶進(jìn)程與服務(wù)器進(jìn)程用戶進(jìn)程(UserProcess)在用戶運(yùn)行應(yīng)用程序時(shí)自動(dòng)產(chǎn)品產(chǎn)生系統(tǒng)創(chuàng)建服務(wù)器進(jìn)程(ServerProcess)處理用戶進(jìn)程的請(qǐng)求Server進(jìn)程和User進(jìn)程通信并為所連接的User進(jìn)程請(qǐng)求服務(wù)44E_mail:tengyc@263.net用戶進(jìn)程與服務(wù)器進(jìn)程用戶進(jìn)程(UserProcess)在用Server進(jìn)程工作過程:分析、編譯、執(zhí)行用戶的SQL語句確定執(zhí)行計(jì)劃,形成分析樹從磁盤數(shù)據(jù)文件將數(shù)據(jù)讀入SGA的共享數(shù)據(jù)庫緩沖區(qū)將SQL語句的結(jié)果返回給用戶進(jìn)程相同的SQL代碼只編譯一次存在SQL優(yōu)化問題45E_mail:tengyc@263.netServer進(jìn)程工作過程:分析、編譯、執(zhí)行用戶的SQL語句4DBWR進(jìn)程46E_mail:tengyc@263.netDBWR進(jìn)程46E_mail:tengyc@263.netDBWR進(jìn)程在存儲(chǔ)數(shù)據(jù)之前,服務(wù)器進(jìn)程必須將數(shù)據(jù)放入數(shù)據(jù)緩沖區(qū)快存中修改后的數(shù)據(jù)塊通過后臺(tái)進(jìn)程:

數(shù)據(jù)庫寫(DatabaseWriter-DBWR)寫回磁盤為處理SQL語句,Server進(jìn)程使用了SGA中的共享內(nèi)存47E_mail:tengyc@263.netDBWR進(jìn)程在存儲(chǔ)數(shù)據(jù)之前,服務(wù)器進(jìn)程必須將數(shù)據(jù)放入數(shù)據(jù)緩沖DBWR進(jìn)程DBWR管理DatabaseBufferCache以便user進(jìn)程總能找到空閑的緩沖區(qū)將所有修改后的緩沖區(qū)數(shù)據(jù)寫入數(shù)據(jù)文件使用LRU算法來將最近使用過的塊保留在內(nèi)存中通過延遲寫來優(yōu)化磁盤I/O讀寫可以啟動(dòng)多個(gè)數(shù)據(jù)寫入進(jìn)程參數(shù)DB_WRITER_PROCESSES決定DBWR啟動(dòng)的個(gè)數(shù)進(jìn)程名稱分別為DBW0、DBW1、、、DBWj48E_mail:tengyc@263.netDBWR進(jìn)程DBWR管理DatabaseBufferCDBWR進(jìn)程DBWR在下面情況將dirty緩沖區(qū)寫入磁盤:dirty隊(duì)列達(dá)到一定長度某個(gè)進(jìn)程在LRU隊(duì)列中掃描指定數(shù)目的緩沖區(qū)仍沒有找到空閑緩沖區(qū)超時(shí)(Time_Out)發(fā)生檢驗(yàn)點(diǎn)(checkpoint)發(fā)生49E_mail:tengyc@263.netDBWR進(jìn)程49E_mail:tengyc@263.netLGWR進(jìn)程50E_mail:tengyc@263.netLGWR進(jìn)程50E_mail:tengyc@263.netServersUsersDataFilesRedoLog

FilesDatabase

BufferCacheSharedPoolRedoLogBufferSGADBWRARCHLGWR日志產(chǎn)生過程12351E_mail:tengyc@263.netServersUsersDataFilesRedoLogLGWR進(jìn)程LGWR在下面情況將RedoLog緩沖區(qū)的信息寫入RedoLog文件:發(fā)生數(shù)據(jù)提交RedoLog緩沖區(qū)池達(dá)到總數(shù)的三分之一時(shí)超時(shí)(Time_Out)發(fā)生DBWR需為檢驗(yàn)點(diǎn)(checkpoint)清除緩沖區(qū)塊時(shí)52E_mail:tengyc@263.netLGWR進(jìn)程52E_mail:tengyc@263.netLGWR進(jìn)程每一個(gè)例程(instance)只有一個(gè)RedoLog寫進(jìn)程直到事務(wù)已被寫入redolog文件,提交確認(rèn)才被執(zhí)行并發(fā)提交使每次提交的平均I/O數(shù)小于153E_mail:tengyc@263.netLGWR進(jìn)程53E_mail:tengyc@263.netPMON與SMONPMONLCKnRECOSMONCKPT54E_mail:tengyc@263.netPMON與SMONPMONLCKnRECOSMONCKPT5ARCH進(jìn)程歸檔進(jìn)程(ARCH,ArchiverProcess)在聯(lián)機(jī)RedoLog文件存滿時(shí)將它們存儲(chǔ)到指定的存儲(chǔ)設(shè)備。55E_mail:tengyc@263.netARCH進(jìn)程歸檔進(jìn)程(ARCH,ArchiverProc歸檔進(jìn)程(ARCH)將RedoLog

文件寫到磁盤或磁帶機(jī)上用于介質(zhì)失敗時(shí)的數(shù)據(jù)庫恢復(fù)ARCH只有當(dāng)日志文件組切換時(shí)才工作ARCH是可選的,由參數(shù)LOG_ARCHIVE_START啟動(dòng)ARCH可寫到磁帶或磁盤上56E_mail:tengyc@263.net歸檔進(jìn)程(ARCH)將RedoLog文件寫到磁盤或磁帶機(jī)ServersUsersDataFilesRedoLog

FilesDatabase

BufferCacheSharedPoolRedoLogBufferSGADBWRARCHLGWRCKPT進(jìn)程CKPT57E_mail:tengyc@263.netServersUsersDataFilesRedoLog檢驗(yàn)點(diǎn)在檢驗(yàn)點(diǎn)(checkpoint),DBWR將databasebuffercache中的所有的dirty緩沖區(qū)寫入磁盤,以保證上一個(gè)檢驗(yàn)點(diǎn)以來修改過的所有數(shù)據(jù)塊都被真正寫到磁盤。58E_mail:tengyc@263.net檢驗(yàn)點(diǎn)在檢驗(yàn)點(diǎn)(checkpoint),DBWR將datab檢驗(yàn)點(diǎn)產(chǎn)生條件:在每個(gè)日志切換上一個(gè)檢驗(yàn)點(diǎn)之后,又經(jīng)過了指定的時(shí)間從上一個(gè)檢驗(yàn)點(diǎn)之后,當(dāng)預(yù)定義數(shù)量的RedoLog塊被寫入磁盤之后例程關(guān)閉DBA強(qiáng)制產(chǎn)生當(dāng)表空間置為offline時(shí)59E_mail:tengyc@263.net檢驗(yàn)點(diǎn)產(chǎn)生條件:在每個(gè)日志切換59E_mail:tengyc檢驗(yàn)點(diǎn):在檢驗(yàn)點(diǎn)發(fā)生時(shí)和日志切換之后,LGWR將更新數(shù)據(jù)庫頭和控制文件參數(shù)LOG_CHECKPOINT_TIMEOUT決定一個(gè)檢驗(yàn)點(diǎn)發(fā)生的時(shí)間間隔參數(shù)LOG_CHECKPOINT_INTERVAL決定執(zhí)行一個(gè)檢驗(yàn)點(diǎn)需要填充的Redo

Log文件塊的數(shù)目60E_mail:tengyc@263.net檢驗(yàn)點(diǎn):在檢驗(yàn)點(diǎn)發(fā)生時(shí)和日志切換之后,LGWR將更新數(shù)據(jù)庫頭

CKPT進(jìn)程

數(shù)據(jù)庫檢驗(yàn)點(diǎn)保證所有修改過的數(shù)據(jù)庫緩沖區(qū)都被寫入數(shù)據(jù)庫文件。在給定的時(shí)間,數(shù)據(jù)庫文件作上“當(dāng)前”標(biāo)記并將檢驗(yàn)點(diǎn)記錄在控制文件。檢驗(yàn)點(diǎn):例程恢復(fù)時(shí)只需提供從上一個(gè)點(diǎn)驗(yàn)點(diǎn)以來的修改。在保證在該文件中的信息已被寫入相應(yīng)的數(shù)據(jù)文件后,允許重用一個(gè)RedoLog文件。檢驗(yàn)點(diǎn)既不中斷活動(dòng),也不影響當(dāng)前事務(wù)。檢驗(yàn)點(diǎn)完成后更新數(shù)據(jù)庫頭和控制文件。增加檢驗(yàn)點(diǎn)次數(shù)可以減少例程失敗時(shí)恢復(fù)所需的時(shí)間,但降低了數(shù)據(jù)庫動(dòng)態(tài)性能。61E_mail:tengyc@263.netCKPT進(jìn)程數(shù)據(jù)庫檢驗(yàn)點(diǎn)保證所有修改過的數(shù)據(jù)庫緩沖區(qū)RECO與LCKN進(jìn)程PMONLCKnRECOSMONCKPT62E_mail:tengyc@263.netRECO與LCKN進(jìn)程PMONLCKnRECOSMONCKP

RECO與LCKN進(jìn)程調(diào)度進(jìn)程Dnnn:

MTS結(jié)構(gòu)中對(duì)于用戶進(jìn)程的調(diào)度?;謴?fù)進(jìn)程RECO:

RECO(RecoveryProcess)解決涉及分布式事務(wù)處理的失敗。封鎖進(jìn)程LCKn:

LCKN(Lock,Process)在并行服務(wù)器系統(tǒng)中執(zhí)行例程間的封鎖。63E_mail:tengyc@263.netRECO與LCKN進(jìn)程調(diào)度進(jìn)程Dnnn:

MTS結(jié)構(gòu)中對(duì)于Oracle9i數(shù)據(jù)庫體系結(jié)構(gòu)64E_mail:tengyc@263.netOracle9i數(shù)據(jù)庫體系結(jié)構(gòu)1E_mail:tengyc@Oracle9i數(shù)據(jù)庫體系結(jié)構(gòu)65E_mail:tengyc@263.netOracle9i數(shù)據(jù)庫體系結(jié)構(gòu)2E_mail:tengyc@Oracle9i

物理結(jié)構(gòu)

66E_mail:tengyc@263.netOracle9i物理結(jié)構(gòu)3E_mail:tengyc@26SGA(SystemGlobalArea)BackgroundProcessesServersUsersDataFilesRedoLogFilesControlFilesParameterFileServerParameterFile67E_mail:tengyc@263.netSGA(SystemGlobalArea)Backgro日志文件(RedoLogFiles)

RedoLog文件記錄對(duì)于數(shù)據(jù)庫的所有修改,用于數(shù)據(jù)庫的恢復(fù)如果對(duì)于日志文件進(jìn)行鏡像,則相同的RedoLog信息被寫入多個(gè)聯(lián)機(jī)的RedoLog文件中Oracle運(yùn)行NOARCHIVELOG時(shí)只有歷史日志,沒有歸檔日志68E_mail:tengyc@263.net日志文件(RedoLogFiles)RedoLog日志文件(RedoLogFiles)每個(gè)Oracle數(shù)據(jù)庫至少有兩個(gè)RedoLog日志文件組,每組有一個(gè)或多個(gè)日志文件建議對(duì)RedoLog文件進(jìn)行鏡像,以保證數(shù)據(jù)庫安全運(yùn)行建議使用四個(gè)RedoLog文件組,每組2或3個(gè)日志文件組內(nèi)RedoLog文件位于不同磁盤RedoLog文件是循環(huán)使用的69E_mail:tengyc@263.net日志文件(RedoLogFiles)每個(gè)Oracle數(shù)據(jù)ServersUsersDataFilesRedoLog

FilesDatabase

BufferCacheSharedPoolRedoLogBufferSGA(SystemGlobalArea)DBWRARCHLGWR日志產(chǎn)生過程12370E_mail:tengyc@263.netServersUsersDataFilesRedoLogRedoLog文件鏡像一個(gè)日志組中RedoLog文件具有相同的信息選擇合適的日志文件大小組中的成員同時(shí)被更新每組應(yīng)包含與其他組中數(shù)目相同的日志成員鏡像的RedoLog文件可以防止

RedoLog

文件丟失71E_mail:tengyc@263.netRedoLog文件鏡像一個(gè)日志組中RedoLog文

Oracle9iDatabase(WindowsNT)

72E_mail:tengyc@263.netOracle9iDatabase(WindowsNT

Oracle9iDatabase(Unix)

73E_mail:tengyc@263.netOracle9iDatabase(Unix)10E_

日志切換當(dāng)ORACLE從一個(gè)RedoLog文件切換到另一個(gè)日志文件時(shí)發(fā)生日志切換當(dāng)LGWR寫滿一組日志文件時(shí)發(fā)生日志切換DBA可強(qiáng)制日志切換數(shù)據(jù)庫關(guān)閉時(shí)發(fā)生日志切換日志切換時(shí),當(dāng)前日志文件被賦予一個(gè)新的日志序列號(hào),用于標(biāo)識(shí)其中的信息日志切換時(shí)產(chǎn)生檢查點(diǎn)CKPT(Checkpoint)74E_mail:tengyc@263.net日志切換當(dāng)ORACLE從一個(gè)RedoLog文件切換到另RedoLog文件組Group1MemberAGroup2MemberAGroup3MemberAGroup1MemberBGroup2MemberBGroup3MemberBGroup1MemberCGroup2MemberCGroup3MemberCLogFile1LogFile2LogFile375E_mail:tengyc@263.netRedoLog文件組Group1MemberALogOracle9iforUnix

日志文件結(jié)構(gòu)

(SunSolaris)redo01.logredo02.logredo03.log三個(gè)日志文件組,每組一個(gè)日志成員76E_mail:tengyc@263.netOracle9iforUnix日志文件結(jié)構(gòu)

Oracle9i

日志文件結(jié)構(gòu)(WindowsNT)Redo01.log三個(gè)日志文件組,每組一個(gè)日志成員Redo02.logRedo03.log77E_mail:tengyc@263.netOracle9i日志文件結(jié)構(gòu)(WindowsNTOracle9i數(shù)據(jù)庫參數(shù)文件

服務(wù)器參數(shù)參數(shù)spfileServerParameterFile文本參數(shù)pfileParameterFile78E_mail:tengyc@263.netOracle9i數(shù)據(jù)庫參數(shù)文件

服務(wù)器參數(shù)參數(shù)spfileS控制文件(ControlFiles)控制文件是描述數(shù)據(jù)庫結(jié)構(gòu)的二進(jìn)制文件控制文件所有必須的數(shù)據(jù)文件和日志文件在控制文件中標(biāo)識(shí)數(shù)據(jù)庫名存儲(chǔ)在控制文件中控制文件用于打開和存取數(shù)據(jù)庫數(shù)據(jù)庫恢復(fù)所需的同步信息存儲(chǔ)在控制文件中控制文件數(shù)據(jù)庫的物理組成與控制文件中的記錄不同時(shí),系統(tǒng)則不能正常啟動(dòng)或發(fā)生down機(jī)現(xiàn)象79E_mail:tengyc@263.net控制文件(ControlFiles)控制文件是描述數(shù)據(jù)

控制文件(ControlFiles)建議設(shè)置:至少使用兩個(gè)控制文件,并存放于不同磁盤參數(shù)Control_Files指明控制文件控制文件的鏡像可以在數(shù)據(jù)庫創(chuàng)建或創(chuàng)建完成后進(jìn)行80E_mail:tengyc@263.net控制文件(ControlFiles)建議設(shè)置:17E_

Oracle9iDatabase(WindowsNT)

81E_mail:tengyc@263.netOracle9iDatabase(WindowsNT

Oracle9iDatabase(Unix)

82E_mail:tengyc@263.netOracle9iDatabase(Unix)19E_Oracle9i

邏輯結(jié)構(gòu)

83E_mail:tengyc@263.netOracle9i邏輯結(jié)構(gòu)20E_mail:tengyc@2DatabaseTablespaceSegmentDataIndexTempRollbackExtentFreeUsedDataBlockPartofPartofOracle9i數(shù)據(jù)庫的邏輯結(jié)構(gòu)84E_mail:tengyc@263.netDatabaseTablespaceSegmentDataI表空間Oracle表空間類型數(shù)據(jù)字典管理表空間(Oracle7,8,8i)本地化管理表空間

(Oracle8i,9i)UniformAutoAllocate85E_mail:tengyc@263.net表空間Oracle表空間類型數(shù)據(jù)字典管理表空間(OracleOracle表空間類型86E_mail:tengyc@263.netOracle表空間類型23E_mail:tengyc@263

Oracle9i臨時(shí)段管理Oracle9i的缺省臨時(shí)表空間(DefaultTemporaryTablespace)用于用戶排序時(shí)SQL的Orderby語句使用,在創(chuàng)建用戶時(shí)指定用戶缺省的臨時(shí)表空間。在Oracle9i中,允許數(shù)據(jù)庫管理員重新創(chuàng)建并設(shè)置系統(tǒng)臨時(shí)表空間,而不使用系統(tǒng)表空間作為排序、匯總等臨時(shí)表空間使用。如果系統(tǒng)設(shè)置了系統(tǒng)缺省臨時(shí)表空間,則用戶不得使用其他表空間作為臨時(shí)表空間使用。87E_mail:tengyc@263.netOracle9i臨時(shí)段管理Oracle9i的缺省回退段(RollbackSegments)為什么要設(shè)回退段?

回退段是數(shù)據(jù)庫的一部分,是Oracle數(shù)據(jù)庫的一個(gè)重要參數(shù),其設(shè)計(jì)是否正確直接影響到數(shù)據(jù)庫的動(dòng)態(tài)性能。Rollback段的使用用于保存一個(gè)事務(wù)的操作,以便在某些情況下回退或取消操作。

每個(gè)Oracle數(shù)據(jù)庫都有多個(gè)回退段回退段的作用并發(fā)操作時(shí),保證數(shù)據(jù)的讀一致性使用SQL語句rollback回退一個(gè)事務(wù)的操作88E_mail:tengyc@263.net回退段(RollbackSegments)為什回退段(RollbackSegments)事務(wù)恢復(fù)的需要回退段操作舉例由于語句錯(cuò)誤回退一個(gè)事務(wù)回退一個(gè)事務(wù)、或回退事務(wù)到一個(gè)保存點(diǎn)(SavePoint)由于異常進(jìn)程中斷而回退在例程恢復(fù)中回退所有沒未完成的事務(wù)89E_mail:tengyc@263.net回退段(RollbackSegments)事務(wù)恢復(fù)的需要2Oracle9i自動(dòng)Undo空間管理

在Oracle8i以前的數(shù)據(jù)庫中,對(duì)于回退段的設(shè)置與管理已一直是一個(gè)十分復(fù)雜的工作,其正確的設(shè)置既困難又費(fèi)時(shí)。對(duì)于大的事務(wù)往往產(chǎn)生回退段不足的錯(cuò)誤,或在RBS表空間回退段中消耗過大。Oracle9i引如了一個(gè)新的概念,即AutomaticUndoManagement,Undo空間自動(dòng)管理。在Oracle9i中,可以使用傳統(tǒng)的回退段,也可以使用Undo表空間,Oracle9i對(duì)Undo空間自動(dòng)管理,使回退段的管理變的十分容易。在Oracle9i中,可以使用自動(dòng)Undo管理代替回退段,Oracle9i使用Undo表空間,并對(duì)Undo空間自動(dòng)管理。

90E_mail:tengyc@263.netOracle9i自動(dòng)Undo空間管理

27E_mail:teOracle9i自動(dòng)Undo空間管理

在Oracle8i中,私通使用手動(dòng)管理Undo空間,使用在RBS表空間中創(chuàng)建大的回退段的方法處理大的事務(wù),由于一個(gè)事務(wù)只可以使用一個(gè)回退段,當(dāng)一個(gè)回退段動(dòng)態(tài)擴(kuò)展超過區(qū)最大值、或超過數(shù)據(jù)文件的允許擴(kuò)展范圍時(shí),將產(chǎn)生回退段不足的錯(cuò)誤,事務(wù)被進(jìn)行過程被終止。在Oracle9i中,一個(gè)事務(wù)可以使用多個(gè)回退段。使用Oracle9i的Undo空間自動(dòng)管理特點(diǎn),當(dāng)一個(gè)回退段不足時(shí),Oracle會(huì)自動(dòng)使用其他回退段,不終止事務(wù)的運(yùn)行。在Oracle9i中,數(shù)據(jù)庫管理員只需了解Undo表空間是否有足夠的空間即可。91E_mail:tengyc@263.netOracle9i自動(dòng)Undo空間管理

28E_mail:te自動(dòng)Undo空間管理92E_mail:tengyc@263.net自動(dòng)Undo空間管理29E_mail:tengyc@263.Oracle9i

內(nèi)存結(jié)構(gòu)

93E_mail:tengyc@263.netOracle9i內(nèi)存結(jié)構(gòu)30E_mail:tengyc@2ServersUsersDataFilesRedoLog

FilesDatabase

BufferCacheSharedPoolRedoLogBufferSGA(SystemGlobalArea)DBWRARCHLGWR系統(tǒng)全局區(qū)SGA94E_mail:tengyc@263.netServersUsersDataFilesRedoLogServersUsersDataFilesRedoLog

FilesDatabase

BufferCacheSharedPoolRedoLogBufferSGADBWRARCHLGWR數(shù)據(jù)緩沖區(qū)(DatabaseBufferCache)95E_mail:tengyc@263.netServersUsersDataFilesRedoLogDB數(shù)據(jù)緩沖區(qū)Dirtylist....LRUlist....DatafilesDatafiles數(shù)據(jù)緩沖區(qū)(DatabaseBufferCache)ServerDBWRSGAFree,Dirty,PinnedDB數(shù)據(jù)緩沖區(qū)DirtylistLRUlistDatafServersUsersDataFilesRedoLog

FilesDatabase

BufferCacheSharedPoolRedoLogBufferSGADBWRARCHLGWR日志緩沖區(qū)(RedoLogBuffer)97E_mail:tengyc@263.netServersUsersDataFilesRedoLogServersUsersDataFilesDatabase

BufferCacheSharedPoolSGADBWR共享池(SharedGlobalArea)ServersServersUsersUsers98E_mail:tengyc@263.netServersUsersDataFilesDatabaseOracle9i

實(shí)例的進(jìn)程結(jié)構(gòu)

99E_mail:tengyc@263.netOracle9i實(shí)例的進(jìn)程結(jié)構(gòu)36E_mail:tengy

Oracle啟動(dòng)時(shí),將分配系統(tǒng)全局區(qū)SGA并啟動(dòng)Oracle后臺(tái)進(jìn)程(BackgroundProcesses)。內(nèi)存區(qū)域和后臺(tái)進(jìn)程合稱為一個(gè)Oracle實(shí)例(Instance)。SGA是由Oracle為一個(gè)實(shí)例分配的一組共享內(nèi)存

區(qū)域后臺(tái)進(jìn)程異步地為所有的數(shù)據(jù)庫用戶執(zhí)行不同的任務(wù)參數(shù)文件決定了實(shí)例的特征及大小不正確的參數(shù)文件,會(huì)導(dǎo)致實(shí)例啟動(dòng)失敗Oracle數(shù)據(jù)庫的Instance決定了動(dòng)態(tài)運(yùn)行的數(shù)據(jù)庫的ORACLE_SIDOracle實(shí)例(Instance)100E_mail:tengyc@263.netOracle啟動(dòng)時(shí),將分配系統(tǒng)全局區(qū)SGA并啟動(dòng)OraSystemGlobalAreaBackgroundProcessesServersUsersDataFilesRedoLogFilesControlFiles101E_mail:tengyc@263.netSystemGlobalAreaBackgroundP

Oracle數(shù)據(jù)庫進(jìn)程結(jié)構(gòu)Oracle可以在多進(jìn)程和單進(jìn)程配置下工作。多進(jìn)程配置多個(gè)進(jìn)程執(zhí)行Oracle代碼的不同部分多進(jìn)程允許多個(gè)用戶同時(shí)使用單進(jìn)程配置所有的Oracle代碼由一個(gè)進(jìn)程執(zhí)行單進(jìn)程實(shí)例只允許單個(gè)用戶使用主要用于單任務(wù)的機(jī)器上通常使用的Oracle都是多進(jìn)程實(shí)例結(jié)構(gòu)102E_mail:tengyc@263.netOracle數(shù)據(jù)庫進(jìn)程結(jié)構(gòu)39E_mail:tenDatabase

BufferCacheSharedPoolSGAOracle數(shù)據(jù)庫單進(jìn)程結(jié)構(gòu)ORACLERDBMSSERVER應(yīng)用軟件103E_mail:tengyc@263.netDatabase

BufferCacheSharedPDatabase

BufferCacheSharedPoolSGALISTENEROracle數(shù)據(jù)庫多進(jìn)程結(jié)構(gòu)DBWRLGWRDnnnUSERRECOCKPTSMONPMONARCH104E_mail:tengyc@263.netDatabase

BufferCacheSharedP用戶進(jìn)程與服務(wù)器進(jìn)程105E_mail:tengyc@263.net用戶進(jìn)程與服務(wù)器進(jìn)程42E_mail:tengyc@263.ServersUsersDataFilesDatabase

BufferCacheSharedPoolSGADBWRUser與Server進(jìn)程ServersServersUsersUsers106E_mail:tengyc@263.netServersUsersDataFilesDatabase用戶進(jìn)程與服務(wù)器進(jìn)程用戶進(jìn)程(UserProcess)在用戶運(yùn)行應(yīng)用程序時(shí)自動(dòng)產(chǎn)品產(chǎn)生系統(tǒng)創(chuàng)建服務(wù)器進(jìn)程(ServerProcess)處理用戶進(jìn)程的請(qǐng)求Server進(jìn)程和User進(jìn)程通信并為所連接的User進(jìn)程請(qǐng)求服務(wù)107E_mail:tengyc@263.net用戶進(jìn)程與服務(wù)器進(jìn)程用戶進(jìn)程(UserProcess)在用Server進(jìn)程工作過程:分析、編譯、執(zhí)行用戶的SQL語句確定執(zhí)行計(jì)劃,形成分析樹從磁盤數(shù)據(jù)文件將數(shù)據(jù)讀入SGA的共享數(shù)據(jù)庫緩沖區(qū)將SQL語句的結(jié)果返回給用戶進(jìn)程相同的SQL代碼只編譯一次存在SQL優(yōu)化問題108E_mail:tengyc@263.netServer進(jìn)程工作過程:分析、編譯、執(zhí)行用戶的SQL語句4DBWR進(jìn)程109E_mail:tengyc@263.netDBWR進(jìn)程46E_mail:tengyc@263.netDBWR進(jìn)程在存儲(chǔ)數(shù)據(jù)之前,服務(wù)器進(jìn)程必須將數(shù)據(jù)放入數(shù)據(jù)緩沖區(qū)快存中修改后的數(shù)據(jù)塊通過后臺(tái)進(jìn)程:

數(shù)據(jù)庫寫(DatabaseWriter-DBWR)寫回磁盤為處理SQL語句,Server進(jìn)程使用了SGA中的共享內(nèi)存110E_mail:tengyc@263.netDBWR進(jìn)程在存儲(chǔ)數(shù)據(jù)之前,服務(wù)器進(jìn)程必須將數(shù)據(jù)放入數(shù)據(jù)緩沖DBWR進(jìn)程DBWR管理DatabaseBufferCache以便user進(jìn)程總能找到空閑的緩沖區(qū)將所有修改后的緩沖區(qū)數(shù)據(jù)寫入數(shù)據(jù)文件使用LRU算法來將最近使用過的塊保留在內(nèi)存中通過延遲寫來優(yōu)化磁盤I/O讀寫可以啟動(dòng)多個(gè)數(shù)據(jù)寫入進(jìn)程參數(shù)DB_WRITER_PROCESSES決定DBWR啟動(dòng)的個(gè)數(shù)進(jìn)程名稱分別為DBW0、DBW1、、、DBWj111E_mail:tengyc@263.netDBWR進(jìn)程DBWR管理DatabaseBufferCDBWR進(jìn)程DBWR在下面情況將dirty緩沖區(qū)寫入磁盤:dirty隊(duì)列達(dá)到一定長度某個(gè)進(jìn)程在LRU隊(duì)列中掃描指定數(shù)目的緩沖區(qū)仍沒有找到空閑緩沖區(qū)超時(shí)(Time_Out)發(fā)生檢驗(yàn)點(diǎn)(checkpoint)發(fā)生112E_mail:tengyc@263.netDBWR進(jìn)程49E_mail:tengyc@263.netLGWR進(jìn)程113E_mail:tengyc@263.netLGWR進(jìn)程50E_mail:tengyc@263.netServersUsersDataFilesRedoLog

FilesDatabase

BufferCacheSharedPoolRedoLogBufferSGADBWRARCH

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論