您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > Oracle系统架构基本概念
國立聯合大學資訊管理學系陳士杰老師Oracle系統架構基本概念國立聯合大學資訊管理學系資料庫系統課程(陳士杰)2OutlineOracle系統架構概觀OverviewOracleInstanceOracleDatabaseOtherProcesses漫談OracleInstance記憶體結構BackgroundProcesses漫談OracleDatabaseStructuresPhysicalDatabaseStructuresLogicalDatabaseStructures國立聯合大學資訊管理學系資料庫系統課程(陳士杰)3Oracle系統架構概觀關於Oracle系統架構,是非常重要的基礎觀念,正所謂「君子務本,本立而道生」,有了踏實的基礎觀念之後,才能在往後學習Oracle的路上,無往不利國立聯合大學資訊管理學系資料庫系統課程(陳士杰)4電腦系統OverviewOracleServer主要是由OracleInstance與Database所組成,透過ServerProcess與UserProcess之間的交互運作,藉以達成使用者交付執行的工作。OracleServerOracleInstanceDatabaseUserProcessesServerProcessesPGAQuery國立聯合大學資訊管理學系資料庫系統課程(陳士杰)5例如,使用者可能想要在OracleServer上查詢一筆人事資料,使用者將相關的SQL敘述輸入系統中,此時系統會產生相對應的UserProcess與ServerProcess,由ServerProcess負責向OracleServer溝通,並將符合使用者所需的資料,從OracleServer送至UserProcess,以完成該使用者下達的request。國立聯合大學資訊管理學系資料庫系統課程(陳士杰)6OracleInstance(Oracle資料庫引擎)Oracle資料庫中的任何動作都和它有關,是OracleDB的心臟地帶。OracleInstance主要包含:backgroundprocess(背景處理程序)是一群常駐的服務常式(serviceroutine),執行I/OProcess與非OracleProcess的監控管理,針對目前的使用者所提出的request執行一些一般性的工作。每一個Process專責於一至兩項的工作SystemGlobalArea(SGA;系統全域區)用來存放資料庫系統相關資訊的一塊共享記憶體資料區域,讓backgroundprocess得以利用這些系統資訊,以提供適當的服務,處理外部的userrequest。國立聯合大學資訊管理學系資料庫系統課程(陳士杰)7由於OracleInstance掌控著處理OracleDatabase所有運作的相關資訊。因此,當要存取或操作OracleDatabase裏的資料時,必須先啟動OracleInstance,才能對OracleDatabase的內容加以處理。當OracleInstance啟動時,電腦系統會先配置一塊記憶體空間給SGA(SystemGlobalArea),並且載入相關的backgroundprocess。國立聯合大學資訊管理學系資料庫系統課程(陳士杰)8OracleDatabaseOracleDatabase可分為兩個部份來說明:實體結構邏輯結構國立聯合大學資訊管理學系資料庫系統課程(陳士杰)9實體結構OracleDatabase的實體結構部份是由一個個的檔案所組合,主要的檔案包括Datafiles(資料檔)RedoLogfiles(重置日誌檔)-onlineControlfiles(控制檔)另外尚有:Passwordfile(密碼檔)Parameterfile(起始參數檔)ArchivedRedoLogfiles(重置日誌封存檔)-offline國立聯合大學資訊管理學系資料庫系統課程(陳士杰)10ControlfilesDatafilesArchivedlogfilesParameterfilePasswordfileRedologfilesDatabase國立聯合大學資訊管理學系資料庫系統課程(陳士杰)11邏輯結構OracleDatabase的邏輯結構部份,主要有Tablespace(表格空間)Segment(區段)Extent(延伸區塊)Block(區塊)國立聯合大學資訊管理學系資料庫系統課程(陳士杰)12OtherProcesses不屬於OracleInstance內的Process皆稱為OtherProcess。是User和應用程式要連接OracleDBServer的重要橋樑。如UserProcess、ServerProcess等主要是反應使用者下達的request(即SQL敘述),將其轉化為OracleServer能看得懂的相關指令,從OracleDatabase裏抓取資料,以反映使用者需求的資料。在ServerProcess中還有一個相當重要的資料結構-PGA(ProgramGlobalArea):PGA是一個memorybuffer,存放相關ServerProcess的資料與控制資訊。當ServerProcess被呼叫啟動後,OracleServer會為其建立一個所屬的PGA,使用者下達的SQL敘述,就是存放在這裏的。國立聯合大學資訊管理學系資料庫系統課程(陳士杰)13漫談OracleInstance國立聯合大學資訊管理學系資料庫系統課程(陳士杰)14第一部份我們曾談到所謂的OracleInstance可分為:SGA(SystemGlobalArea)BackgroundProcesses兩部份,並做了概略的說明。現在就分別針對SGA與BackgroundProcesses做更完整深入的說明。國立聯合大學資訊管理學系資料庫系統課程(陳士杰)15記憶體結構SGA是OracleServer在系統上所建立的一塊記憶體區塊,OracleServer利用這塊記憶體結構,協同Oracle的各種Processes來完成使用者所交付的工作。SGA主要是由幾種不同的資料區塊所組成-DatabaseBufferCacheRedoLogBufferSharedPoolLargePoolJavaPool其它(如:Cursors…等)SGADatabaseBufferCacheRedoLogBufferSharedPoolLargePoolJavaPoolOthers國立聯合大學資訊管理學系資料庫系統課程(陳士杰)16DatabaseBufferCache(資料庫緩衝快取區)資料庫系統擷取資料時的一個快取空間,其用途在於有效減少存取資料時造成的磁碟讀寫動作。(到硬碟從事I/O是很耗時的工作!!)我們可以透過設定DB_BLOCK_BUFFERS這個參數值來設定DatabaseBufferCache的大小。在Oracle的DatabaseBufferCache中,尚有一些sub-caches:DB_CACHE_SIZEDB_KEEP_CACHE_SIZEDB_RECYCLE_CACHE_SIZE我們可以透過DB_CACHE_ADVICE這個參數,藉由statistics的方式來對不同的cachesize做預設。指令:Altersystemsetdb_cache_advice=on國立聯合大學資訊管理學系資料庫系統課程(陳士杰)17Oracle用所謂的LRU(LeastRecentlyUsed)演算法來管理這塊記憶體空間。LRU:當這塊記憶體空間滿載時,OracleServer將只保留最近有被使用過的資料,最不常用的資料則寫回磁碟中,並將該資料所佔用的記憶體空間釋放出來。由於DatabaseBufferCache關係著OracleServer的I/O動作頻繁與否,因此如何管理及設定DatabaseBufferCache的大小,對於OracleServer的效能調校,是相當重要的一項課題。國立聯合大學資訊管理學系資料庫系統課程(陳士杰)18RedoLogBuffer(重置日誌緩衝區)當資料庫的內容有所異動時,RedoLogBuffer會記錄其相關異動的情形:做了什麼改變改變後的舊資料與新資料經過一定的時間週期或者是RedoLogBuffer滿載時,OracleServer會將RedoLogBuffer的內容寫到RedoLogFile裏,以追蹤整個資料庫的使用情形。當OracleServer不幸當掉的話,就能利用這些記錄下來的資訊,進行資料庫的復原(Recovery)。有關RedoLogBuffer的大小設定,可以透過設定參數LOG_BUFFER,改變RedoLogBuffer的大小。國立聯合大學資訊管理學系資料庫系統課程(陳士杰)19SharedPool(共享區)當使用者將SQL、PL/SQL等操作指令送至Oracle資料庫後,系統會先解析(Parse)語法是否正確。解析時,下列兩項資料將會放入SharedPool中:解析時所需要用到的相關資訊解析後的結果當有不同的使用者執行相同的SQL指令,就可以共用SharedPool中解析好的結果,以加速SQL指令執行的速度。SharedPool內包含數種不同的區域,主要有下列兩類:DataDictionaryCache–存放解析時所需要的相關資訊,以供查詢之用LibraryCache–存放各類指令解析後的結果,以供重覆使用SharedPool亦是採LRU的記憶體管理演算法。SharedPool的大小設定,是由SHARED_POOL_SIZE這個參數來控制國立聯合大學資訊管理學系資料庫系統課程(陳士杰)20LargePool(大型區)LargePool是Oracle針對一些需要大量記憶體空間的資料庫處理與運算工作所提供的一個額外選項,它可以讓SGA配置一個較大的記憶體空間,提供給處理Oracle的backup/restore、I/O、執行Oracle復原管理程式RMAN、…等。透過指定LARGE_POOL_SIZE這個參數,設定LargePool的大小。國立聯合大學資訊管理學系資料庫系統課程(陳士杰)21JavaPool(Java區)當使用者有使用Java時,OracleServer利用這塊記憶體空間,存放及Parse所使用的JavaCode,藉以提供Oracle與Internet更高的整合性。透過指定JAVA_POOL_SIZE這個參數,來改變JavaPool的大小。國立聯合大學資訊管理學系資料庫系統課程(陳士杰)22BackgroundProcessesOracleServer所提供的Processes可分為兩類:ServerProcesses用以服務ClientProcesses,根據ClientProcesses的需求,由OracleServer動態配置所產生的,用以服務ClientProcesses的需求不被包含在OracleInstance裏在ServerProcesses裏,尚包含另一個重要的記憶體結構-PGA(ProgramGlobalArea),存放著ClientProcesses與ServerProcesses間的重要資訊BackgroundProcesses用來管理OracleServer所需的一些系統常式,諸如資料庫的I/O、OracleProcesses的管理等包含於OracleInstance中國立聯合大學資訊管理學系資料庫系統課程(陳士杰)23主要的BackgroundProcesses共有五個,只要有這五個BackgroundProcesses,OracleServer就可以正常地運作了,分別是:DatabaseWriter(DBWR)LogWriter(LGWR)SystemMonitor(SMON)ProcessMonitor(PMON)
本文标题:Oracle系统架构基本概念
链接地址:https://www.777doc.com/doc-12963 .html