《Oracle 系統架构基本概念》由会员分享,可在线阅读,更多相关《Oracle 系統架构基本概念(72页珍藏版)》请在金锄头文库上搜索。
1、1 Oracle系統架構基本概念 2 Outline Oracle系統架構概觀OverviewOracleInstanceOracleDatabaseOtherProcesses漫談OracleInstance記憶體結構BackgroundProcesses漫談OracleDatabaseStructuresPhysicalDatabaseStructuresLogicalDatabaseStructures 3 Oracle系統架構概觀關於Oracle系統架構 是非常重要的基礎觀念 正所謂 君子務本 本立而道生 有了踏實的基礎觀念之後 才能在往後學習Oracle的路上 無往不利 4 電腦系統
2、 Overview OracleServer主要是由OracleInstance與Database所組成 透過ServerProcess與UserProcess之間的交互運作 藉以達成使用者交付執行的工作 OracleServer OracleInstance Database UserProcesses ServerProcesses PGA Query 5 例如 使用者可能想要在OracleServer上查詢一筆人事資料 使用者將相關的SQL敘述輸入系統中 此時系統會產生相對應的UserProcess與ServerProcess 由ServerProcess負責向OracleServer溝
3、通 並將符合使用者所需的資料 從OracleServer送至UserProcess 以完成該使用者下達的request 6 OracleInstance Oracle資料庫引擎 Oracle資料庫中的任何動作都和它有關 是OracleDB的心臟地帶 OracleInstance主要包含 backgroundprocess 背景處理程序 是一群常駐的服務常式 serviceroutine 執行I OProcess與非OracleProcess的監控管理 針對目前的使用者所提出的request執行一些一般性的工作 每一個Process專責於一至兩項的工作SystemGlobalArea SGA 系
4、統全域區 用來存放資料庫系統相關資訊的一塊共享記憶體資料區域 讓backgroundprocess得以利用這些系統資訊 以提供適當的服務 處理外部的userrequest 7 由於OracleInstance掌控著處理OracleDatabase所有運作的相關資訊 因此 當要存取或操作OracleDatabase裏的資料時 必須先啟動OracleInstance 才能對OracleDatabase的內容加以處理 當OracleInstance啟動時 電腦系統會先配置一塊記憶體空間給SGA SystemGlobalArea 並且載入相關的backgroundprocess 8 OracleDat
5、abase OracleDatabase可分為兩個部份來說明 實體結構邏輯結構 9 實體結構 OracleDatabase的實體結構部份是由一個個的檔案所組合 主要的檔案包括Datafiles 資料檔 RedoLogfiles 重置日誌檔 onlineControlfiles 控制檔 另外尚有 Passwordfile 密碼檔 Parameterfile 起始參數檔 ArchivedRedoLogfiles 重置日誌封存檔 offline 10 Controlfiles Datafiles Archivedlogfiles Parameterfile Passwordfile Redologf
6、iles Database 11 邏輯結構 OracleDatabase的邏輯結構部份 主要有Tablespace 表格空間 Segment 區段 Extent 延伸區塊 Block 區塊 12 OtherProcesses 不屬於OracleInstance內的Process皆稱為OtherProcess 是User和應用程式要連接OracleDBServer的重要橋樑 如UserProcess ServerProcess等主要是反應使用者下達的request 即SQL敘述 將其轉化為OracleServer能看得懂的相關指令 從OracleDatabase裏抓取資料 以反映使用者需求的資料
7、 在ServerProcess中還有一個相當重要的資料結構 PGA ProgramGlobalArea PGA是一個memorybuffer 存放相關ServerProcess的資料與控制資訊 當ServerProcess被呼叫啟動後 OracleServer會為其建立一個所屬的PGA 使用者下達的SQL敘述 就是存放在這裏的 13 漫談OracleInstance 14 第一部份我們曾談到所謂的OracleInstance可分為 SGA SystemGlobalArea BackgroundProcesses兩部份 並做了概略的說明 現在就分別針對SGA與BackgroundProcesse
8、s做更完整深入的說明 15 記憶體結構 SGA是OracleServer在系統上所建立的一塊記憶體區塊 OracleServer利用這塊記憶體結構 協同Oracle的各種Processes來完成使用者所交付的工作 SGA主要是由幾種不同的資料區塊所組成 DatabaseBufferCacheRedoLogBufferSharedPoolLargePoolJavaPool其它 如 Cursors 等 SGA DatabaseBufferCache RedoLogBuffer SharedPool LargePool JavaPool Others 16 DatabaseBufferCache 資
9、料庫緩衝快取區 資料庫系統擷取資料時的一個快取空間 其用途在於有效減少存取資料時造成的磁碟讀寫動作 到硬碟從事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 cach
10、e advice on 17 Oracle用所謂的LRU LeastRecentlyUsed 演算法來管理這塊記憶體空間 LRU 當這塊記憶體空間滿載時 OracleServer將只保留最近有被使用過的資料 最不常用的資料則寫回磁碟中 並將該資料所佔用的記憶體空間釋放出來 由於DatabaseBufferCache關係著OracleServer的I O動作頻繁與否 因此如何管理及設定DatabaseBufferCache的大小 對於OracleServer的效能調校 是相當重要的一項課題 18 RedoLogBuffer 重置日誌緩衝區 當資料庫的內容有所異動時 RedoLogBuffer會記
11、錄其相關異動的情形 做了什麼改變改變後的舊資料與新資料經過一定的時間週期或者是RedoLogBuffer滿載時 OracleServer會將RedoLogBuffer的內容寫到RedoLogFile裏 以追蹤整個資料庫的使用情形 當OracleServer不幸當掉的話 就能利用這些記錄下來的資訊 進行資料庫的復原 Recovery 有關RedoLogBuffer的大小設定 可以透過設定參數LOG BUFFER 改變RedoLogBuffer的大小 19 SharedPool 共享區 當使用者將SQL PL SQL等操作指令送至Oracle資料庫後 系統會先解析 Parse 語法是否正確 解析時
12、 下列兩項資料將會放入SharedPool中 解析時所需要用到的相關資訊解析後的結果當有不同的使用者執行相同的SQL指令 就可以共用SharedPool中解析好的結果 以加速SQL指令執行的速度 SharedPool內包含數種不同的區域 主要有下列兩類 DataDictionaryCache 存放解析時所需要的相關資訊 以供查詢之用LibraryCache 存放各類指令解析後的結果 以供重覆使用SharedPool亦是採LRU的記憶體管理演算法 SharedPool的大小設定 是由SHARED POOL SIZE這個參數來控制 20 LargePool 大型區 LargePool是Oracle
13、針對一些需要大量記憶體空間的資料庫處理與運算工作所提供的一個額外選項 它可以讓SGA配置一個較大的記憶體空間 提供給處理Oracle的backup restore I O 執行Oracle復原管理程式RMAN 等 透過指定LARGE POOL SIZE這個參數 設定LargePool的大小 21 JavaPool Java區 當使用者有使用Java時 OracleServer利用這塊記憶體空間 存放及Parse所使用的JavaCode 藉以提供Oracle與Internet更高的整合性 透過指定JAVA POOL SIZE這個參數 來改變JavaPool的大小 22 BackgroundPro
14、cesses OracleServer所提供的Processes可分為兩類 ServerProcesses用以服務ClientProcesses 根據ClientProcesses的需求 由OracleServer動態配置所產生的 用以服務ClientProcesses的需求不被包含在OracleInstance裏在ServerProcesses裏 尚包含另一個重要的記憶體結構 PGA ProgramGlobalArea 存放著ClientProcesses與ServerProcesses間的重要資訊BackgroundProcesses用來管理OracleServer所需的一些系統常式 諸如
15、資料庫的I O OracleProcesses的管理等包含於OracleInstance中 23 主要的BackgroundProcesses共有五個 只要有這五個BackgroundProcesses OracleServer就可以正常地運作了 分別是 DatabaseWriter DBWR LogWriter LGWR SystemMonitor SMON ProcessMonitor PMON CheckpointProcess CKPT 其它尚有Archiver ARCH Recoverer RECO Dispatcher Dnnn Lock LCKn JobQueue SNPn 及Q
16、ueueMonitor QMNn 等BackgroundProcesses 它們主要是提供OracleServer更進階的管理 如ARCH 它可以提供比LGWR更強的資料庫回復能力 24 DatabaseWriter DBWR DBWR主要是負責管理DatabaseBufferCache 將DatabaseBufferCache中修改過的資料 整批寫入DataFile裏 透過系統整批寫入的方式 可以提高整個系統的執行效率 當使用者執行DML指令修改相關資料欄位 並執行commit指令時 Oracle本身並不是直接將修改過的資料直接寫入DataFile裏 而是當DatabaseBufferCache的內容即將滿載或是經過一定的時間區隔 檢查點Checkpoint CKPT 才將資料寫入DataFile中 藉由減少相關的I O動作 以提高系統執行效能 使用write ahead的技術 25 Database 26 由於在大型線上交易 OLTP 系統 其資料庫異動情況可能十分頻繁 因此 一個OracleServer可以有一個以上的DBWRBackgroundProcesses 可以依實際系統