Oracle系统架构基本概念.pptx
《Oracle系统架构基本概念.pptx》由会员分享,可在线阅读,更多相关《Oracle系统架构基本概念.pptx(74页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Oracle 系統架構基本概念 1培训专用 Outline Oracle 系統架構概觀 Overview OracleInstance OracleDatabase OtherProcesses 漫談OracleInstance 記憶體結構 BackgroundProcesses 漫談OracleDatabaseStructures PhysicalDatabaseStructures LogicalDatabaseStructures2培训专用Oracle 系統架構概觀關於Oracle 系統架構,是非常重要的基礎觀念,正所謂君子務本,本立而道生,有了踏實的基礎觀念之後,才能在往後學習Orac
2、le 的路上,無往不利3培训专用電腦系統 電腦系統 Overview OracleServer 主要是由OracleInstance 與Database 所組成,透過ServerProcess 與UserProcess 之間的交互運作,藉以達成使用者交付執行的工作。Oracle ServerOracle Instance DatabaseUser ProcessesServer ProcessesPGA Query Query4培训专用 例如,使用者可能想要在OracleServer 上查 詢一筆人事資料,使用者將相關的SQL 敘述輸入系統中,此時系統會產 生相對應的UserProcess 與
3、ServerProcess,由ServerProcess 負責向OracleServer 溝通,並將符合使用者所需的資料,從OracleServer 送至UserProcess,以完成該使用者下達的request。5培训专用Oracle Instance(Oracle 資料庫引擎)Oracle 資料庫中的任何動作都和它有關,是OracleDB 的心臟地帶。OracleInstance 主要包含:backgroundprocess(背景處理程序)是一群 常駐的服務常式 常駐的服務常式(serviceroutine)(serviceroutine),執行I/OProcess 與非OraclePro
4、cess 的監控管理,針對目前的使用者所提出的request 執行一些 一般性的工作 一般性的工作。每一個Process 專責於一至兩項的工作 SystemGlobalArea(SGA;系統全域區)用來存放資料庫系統相關資訊的一塊 共享記憶體資料區域 共享記憶體資料區域,讓backgroundprocess 得以利用這些系統資訊,以提供適當的服務,處理外部的userrequest。6培训专用 由於OracleInstance 掌控著處理OracleDatabase 所有運作的相關資訊。因此,當要存取或操作OracleDatabase 裏的資料時,必須先啟 動OracleInstance,才能對
5、OracleDatabase 的 內 容加以處理。當OracleInstance啟 動時,電腦系統會先配置一塊 記憶體空間 記憶體空間 給SGA(SystemGlobalArea),並且載入相關的backgroundprocess。7培训专用Oracle Database OracleDatabase 可分為兩個部份來 說 明:實體結構 邏輯結構8培训专用實體結構實體結構 OracleDatabase 的實體結構部份是由一個個的檔案所組合,主要的檔案包括 Datafiles(Datafiles(資料檔 資料檔)RedoLogfiles(RedoLogfiles(重置日誌檔 重置日誌檔)-onl
6、ine)-online Controlfiles(Controlfiles(控制檔 控制檔)另外尚有:Passwordfile(Passwordfile(密碼檔 密碼檔)Parameterfile(Parameterfile(起始參數檔 起始參數檔)ArchivedRedoLogfiles(ArchivedRedoLogfiles(重置日誌封存檔 重置日誌封存檔)-offline)-offline9培训专用Control filesData files Archived log filesParameterfilePasswordfileRedo log filesDatabase10培训专用
7、邏輯結構邏輯結構 OracleDatabase 的邏輯結構部份,主要有 Tablespace(Tablespace(表格空間 表格空間)Segment(Segment(區段 區段)Extent(Extent(延伸區塊 延伸區塊)Block(Block(區塊 區塊)11培训专用Other Processes Other Processes 不屬於OracleInstance 內 的Process 皆稱為OtherProcess。是User 和應用程式要連接OracleDBServer 的重要橋樑。如UserProcess、ServerProcess 等 主要是反應使用者下達的request(即S
8、QL 敘述),將其轉化為OracleServer 能看得懂的相關指令,從OracleDatabase 裏抓取資料,以反映使用者需求的資料。在ServerProcess 中還有一個相當重要的資料結構PGA PGA(ProgramGlobalArea)ProgramGlobalArea):PGA 是一個memorybuffer memorybuffer,存放相關ServerProcess 的 資料 資料 與 控 控制資訊 制資訊。當ServerProcess 被呼叫啟 動後,OracleServer 會為其建立一個所屬的PGA,使用者下達的SQL 敘述,就是存放在這裏的。12培训专用漫談Oracl
9、e Instance13培训专用 第一部份我們曾談到所謂的OracleInstance 可分為:SGA SGA(SystemGlobalArea SystemGlobalArea)BackgroundProcesses BackgroundProcesses 兩部份,並做了概略的 說 明。現在就分別針對SGA 與BackgroundProcesses 做更完整深入的 說 明。14培训专用 記憶體結構 SGA 是OracleServer 在系統上所建立的一塊 記憶體區塊 記憶體區塊,OracleServer 利用這塊記憶體結構,協同Oracle 的各種Processes 來完成使用者所交付的工作
10、。SGA 主要是由幾種不同的資料區塊所組成 DatabaseBufferCache RedoLogBuffer SharedPool LargePool JavaPool 其它(如:Cursors 等)SGADatabaseBufferCacheRedoLogBufferSharedPoolLargePoolJavaPoolOthers15培训专用Database Buffer Cache(資料庫緩衝快取區)資料庫系統擷取資料時的一個快取空間,其用途在於 有效減少存取資料 有效減少存取資料時造成的磁碟讀寫動作 時造成的磁碟讀寫動作。(到硬碟從事I/O 是很耗時的工作!)我們可以透過設定DB_B
11、LOCK_BUFFERS DB_BLOCK_BUFFERS 這個參數值 來設定DatabaseBufferCache 的大小。在Oracle 的DatabaseBufferCache 中,尚有一些sub-caches:DB_CACHE_SIZE DB_KEEP_CACHE_SIZE DB_RECYCLE_CACHE_SIZE 我們可以透過DB_CACHE_ADVICE DB_CACHE_ADVICE 這個參數,藉由statistics 的方式來對不同的cachesize 做預設。指令:Altersystemsetdb_cache_advice=on16培训专用 Oracle 用所謂的LRU(L
12、eastRecentlyUsed)LRU(LeastRecentlyUsed)演算法 演算法 來管理這塊記憶體空間。LRU:當這塊記憶體空間 滿載 滿載 時,OracleServer 將 只保留最近有被使用過的資料,最不常用的資料則 寫回磁碟 寫回磁碟 中,並將該資料所佔用的記憶體空間釋放出來。由於DatabaseBufferCache 關係著OracleServer 的I/O I/O 動作 動作頻繁與否 頻繁與否,因此如何管理及設定DatabaseBufferCache 的大小,對於OracleServer 的效能調校,是相當重要的一項課題。17培训专用Redo Log Buffer(Red
13、o Log Buffer(重置日誌緩衝區重置日誌緩衝區)當 資 料 庫 的 內 容 有 所 異 動 時,RedoLogBuffer 會 記 錄 其 相 相關異動的情形:關異動的情形:做了什麼改變 做了什麼改變 改變後的舊資料與新資料 改變後的舊資料與新資料 經 過 一 定 的 時 間 週 期 或 者 是RedoLogBuffer 滿 載 時,OracleServer 會 將RedoLogBuffer 的 內 容 寫 到Redo RedoLog LogFile File 裏,以追蹤整個資料庫的使用情形。當OracleServer 不 幸 當 掉 的 話,就 能 利 用 這 些 記 錄 下 來 的
14、 資訊,進行資料庫的 復原 復原(Recovery)(Recovery)。有 關 Redo Log Buffer 的 大 小 設 定,可 以 透 過 設 定 參 數LOG_BUFFER LOG_BUFFER,改變RedoLogBuffer 的大小。18培训专用Shared Pool(Shared Pool(共享區共享區)當使用者將SQL、PL/SQL 等操作指令送至Oracle 資料庫後,系統會先解析(Parse)語法是否正確。解析時,下列兩項資料將會放入SharedPool 中:解析時所需要用到的相關資訊 解析時所需要用到的相關資訊 解析後的結果 解析後的結果 當有不同的使用者執行相同的SQ
15、L 指令,就可以共用SharedPool 中解析好的結果,以 加速 加速SQL SQL 指令執行的速度 指令執行的速度。SharedPool 內 包含數種不同的區域,主要有下列兩類:DataDictionaryCache DataDictionaryCache 存放解析時所需要的相關資訊,以供查 詢之用 LibraryCache LibraryCache 存放各類指令解析後的結果,以供重覆使用 SharedPool 亦是採LRU LRU 的記憶體管理演算法。SharedPool 的大小設定,是由SHARED_POOL_SIZE SHARED_POOL_SIZE 這個參數來控制19培训专用Lar
16、ge Pool(Large Pool(大型區 大型區)LargePool 是Oracle 針 對 一 些 需 需 要 要 大 大 量 量 記 記 憶 憶 體 體 空 空 間 間 的 資 料庫 處 理 與 運 算 工 作 所 提 供 的 一 個 額 外 選 項,它 可 以 讓SGA配 置 一 個 較 大 的 記 憶 體 空 間,提 供 給 處 理 Oracle 的backup/restore、I/O、執 行Oracle 復 原 管 理 程 式RMAN、等。透 過 指 定LARGE_POOL_SIZE LARGE_POOL_SIZE 這 個 參 數,設 定LargePool的大小。20培训专用Ja
17、va Pool(Java Java Pool(Java 區 區)當使用者有使用Java 時,OracleServer 利用這塊記憶體空間,存放 存放 及Parse Parse 所使用的JavaCode,藉以提供Oracle與Internet 更高的整合性。透過指定JA V A_POOL_SIZE JA V A_POOL_SIZE 這個參數,來改變JavaPool的大小。21培训专用 Background Processes OracleServer 所提供的Processes 可分為兩類:ServerProcesses ServerProcesses 用 以 服 服 務 務 Client Cl
18、ient Processes Processes,根 據Client Processes 的 需 求,由OracleServer 動態配置所產 生的,用以服務ClientProcesses 的需求 不被包含在 不被包含在OracleInstance OracleInstance 裏 在 Server Processes 裏,尚 包 含 另 一 個 重 要 的 記 憶 體 結 構 PGA(ProgramGlobalArea),存 放 著ClientProcesses 與ServerProcesses 間 的重要資訊 BackgroundProcesses BackgroundProcesses
19、用 來 管 管 理 理 Oracle Oracle Server Server 所 需 的 一 些 系 統 常 式,諸 如 資 料 庫 的I/O、OracleProcesses 的管理等 包含於 包含於OracleInstance OracleInstance 中22培训专用 主要的BackgroundProcesses 共有五個,只要有這五個BackgroundProcesses,OracleServer 就可以正常地運作了,分別是:DatabaseWriter(DatabaseWriter(DBWR DBWR)LogWriter(LogWriter(LGWR LGWR)SystemMoni
20、tor(SystemMonitor(SMON SMON)ProcessMonitor(ProcessMonitor(PMON PMON)CheckpointProcess(CheckpointProcess(CKPT)CKPT)其它尚有Archiver(ARCH)、Recoverer(RECO)、Dispatcher(Dnnn)、Lock(LCKn)、JobQueue(SNPn)及QueueMonitor(QMNn)等BackgroundProcesses,它們主要是提供OracleServer 更進階的管理 更進階的管理。如ARCH,它可以提供比LGWR 更強的資料庫回復能力。23培训专用D
21、atabase Writer(DBWR)Database Writer(DBWR)DBWR 主要是負責管理DatabaseBufferCache DatabaseBufferCache,將DatabaseBufferCache 中修改過的資料,整批寫入 整批寫入DataFile 裏,透過系統整批寫入的方式,可以提高整個系統的執行效率。當使用者執行DML 指令修改相關資料欄位,並執行commit 指令時,Oracle 本身並不是直接將修改過的資料直接寫入DataFile 裏,而是當DatabaseBufferCache 的 內 容 即將滿載 即將滿載 或是 經過一定的時間區隔 經過一定的時間區隔
22、(檢 檢 查 查 點 點 Checkpoint;CKPT)Checkpoint;CKPT),才將資料寫入DataFile 中。藉由 減少相關的 減少相關的I/O I/O 動作 動作,以提高系統執行效能。使用write-ahead write-ahead 的技術24培训专用InstanceSGADatabase buffercacheDBWnControl filesData files Redo log filesDatabase25培训专用 由於在 大型線上交易 大型線上交易(OLTP)(OLTP)系統,其資料庫異動情況可能十分頻繁。因此:一個OracleServer 可以有 一個以上 一個
23、以上 的DBWRBackgroundProcesses,可以依實際系統硬體與作業系統的特性,設定DB_WRITER_PROCESSES DB_WRITER_PROCESSES 參數值,以獲得整個資料庫系統的最佳執行效能。當設定DB_WRITER_PROCESSES 的 內 容值 後,系統上有關DBWR 的名稱將會變為DBWn,n 可為09,如DBW0、DBW1、DBW2 等。(系統預設只會啟 動一個DBWn,即DBW0)。然而,在 單一處理器 單一處理器 的伺服器系統,配置額外的DBWn 並無太多的實質幫助。26培训专用Log Writer(LGWR)Log Writer(LGWR)LGWR
24、主要是負責將RedoLogBuffer 的 內 容值,寫入online online 的RedoLogFile 中。它與DBWR 的運作方式不同點在於:DBWR 在DatabaseBufferCache 即將滿載或是經過一定的時間區隔,才會將資料寫入DataFile 中,且是在有需要的時候才會對相關檔案做存取的動作 LGWR 是在資料庫的 內 容有 異動且已被確認 異動且已被確認(commit)(commit)時,如insert、update、delete 等,就會被觸發,將異動的情形記錄到onlineRedoLogFile 中。因此,當資料庫crash 時,就可以根據onlineRedoLo
25、gFile 內 容,對資料庫進行還原的動作。LGWR 一樣可以透過設定LGWR_IO_SLA VES LGWR_IO_SLA VES 這個參數值,提供非同步I/O模式的功能。27培训专用 LGWR 之動作時機:當使用者 確認 確認(commit)(commit)某交易時,LGWR 會遵循Write-ahead Write-aheadProtocol(Protocol(先期寫入協定 先期寫入協定),將Redologbutter 內 的資料異動記錄寫入。下列幾種情況:自動週期性地 自動週期性地 動作,如:間隔時間為3 秒(Checkpoint;CKPT)重置日誌緩衝區之 剩餘空間不到 剩餘空間不到
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Oracle 系统 架构 基本概念
限制150内