《Oracle系统架构基本概念.pptx》由会员分享,可在线阅读,更多相关《Oracle系统架构基本概念.pptx(74页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
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)重置日誌緩衝區之 剩餘空間不到 剩餘空間不到
26、2/3 2/3 當DBWn 回寫資料檔時,必要的時候LGWR 也會動作(Write-aheadProtocol)28培训专用InstanceSGADBWnRedo logbufferControl filesData files Redo log filesLGWRDatabase29培训专用 何謂Write-ahead Write-ahead?在DBWn 回寫資料至DataFile 之前,RedoLogBuffer 內 相關資料都必須完成寫入動作(即 寫入 寫入RedoLogFile RedoLogFile)。若DBWn 發現某些重置紀錄尚未寫入RedoLogFile 時,它會通知LGWR
27、前來處理。等到LGWR 將RedoLogBuffer 的紀錄寫入完畢時,DBWn 才會開始寫入資料檔。30培训专用 為何要把RedoLogFile 稱為onlineRedoLogFile?因為Oracle 把RedoLogFile 分為兩部份:onlineRedoLogFile onlineRedoLogFile archiveRedoLogFile archiveRedoLogFile 這兩個都是負責 記錄 記錄、追蹤 追蹤 整個資料庫的 異動情形 異動情形。不同的是,archiveRedoLogFile archiveRedoLogFile 是onlineRedoLogFile 的 備份資
28、 備份資料檔 料檔,由另一個BackgroundProcess Archiver(ARCH ARCH)負責管理。在預設的情況下,ARCH 是 不會 不會 啟 啟 動 動 的,而是由LGWR 記錄資料庫的異動情形,將這些記錄資料寫到onlineRedoLogFile 裏。如果OracleServer 不幸掛了,此時的資料庫僅能復原onlineRedoLogFile 裏有記錄的資料。可是,其他的呢?這時候就要靠ARCH將onlineRedoLogFile 備份出來。31培训专用System Monitor(SMON)System Monitor(SMON)如果是因為停電或是其它因素導致Oracle
29、 Oracle 資料庫 資料庫 不正常 不正常被關閉 被關閉,下一次啟 動資料庫時將由SMON 進行必要的資料庫修復動作。主要的工作有:執行一些資料庫必要的 修復工作 修復工作(如果有需要的話,SMON 會使用onlineRedoLogFile 的 內 容)。定時清除資料庫系統中一些不必要的 殘餘物件 殘餘物件,例如上次系統交易進行一半的資料或暫時性區間。執行整個系統 儲存空間的管理 儲存空間的管理,對於Tablespace 上破碎的Extent,它會將這些較小的Extents 予以合併,整理出一個較大的空間,以供系統日後的使用。32培训专用InstanceSGASMONControl fil
30、esData files Redo log filesInstanceSGASMONDatabase33培训专用Process Monitor(PMON)Process Monitor(PMON)當 某 個UserProcess 異 常 中 止 時,PMON 會 執 行 程 程 序 序 修 修 復 復(ProcessRecovery)(ProcessRecovery)的動作,就是 把 已 經 失 效 的UserProcesses 給 趕 出 記 憶 體,並 釋 釋 放 放 該 該 記 記 憶 憶 體 體 空 空間 間,留待系統日後使用 釋放該Process 之前使用的系統資源,避免Deadlo
31、ck 發生。PMON 和SMON 一 樣,都 是 由Oracle 資 料 庫 系 統 週 週 期 期 性 性 自 自動執行 動執行,檢查 整個資料庫系統的運作情形。34培训专用InstanceSGAPMONPGA area35培训专用Checkpoint(Checkpoint(CKPTCKPT)在 一 個 指 指 定 定 的 的 時 時 間 間 區 區 間 間 裏,DBWR 會 對 所 有 在DatabaseBufferCache 所 做 的異 動,將 其 結 果 寫 入 到 相 關 的DataFiles 以 及RedoLogFiles、ControlFiles,這樣的動作,就稱為 產 產 生
32、 生(設定 設定)一個 一個checkpoint checkpoint 事件 事件。CKPTBackgroundProcess 就 是 扮 演 著 一 個 通 通 知 知 者 者 的 角 色,經 過 一 定 的 時 間 後,負責通知DBWR 執行Checkpoint 的動作。CKPT 會在適常時候產 生一個Checkpoint 事件,其意義為:確 保DatabaseBufferCache 內 經 經 常 常 被 被 異 異 動 動 的 的 資 資 料 料 也 能夠 定 期 被 寫 入 硬 碟 的DataFile。(LRU LRU 演算法 演算法)萬 一Oracle 需 要 進 行Instanc
33、eRecovery 時,就 不 需 要Checkpoint 之 前 的Redorecord,可 縮短資料庫動新啟 動的時間。36培训专用InstanceSGADWW0Redo LogBufferLGWRInstanceSGADBWnLGWR CKPTControl filesData files Redo log files37培训专用 執行Checkpoint 的時間區間,可以透過設定LOG_CHECKPOINT_INTERV AL LOG_CHECKPOINT_INTERV AL 這個參數,改變checkpoint的區間。然而,在設定LOG_CHECKPOINT_INTERV AL 時,要
34、注意的是:這個值 設得 太小 太小 的話,會造成系統 額外 額外I/O I/O 的負擔 的負擔 設得 太大 太大,超過onlineRedoLogFileswap onlineRedoLogFileswap 的時間時,LOG_CHECKPOINT_INTERV AL 的值 又會變得 沒有意義 沒有意義 因為Oracle 會在swaponlineRedoLogFile onlineRedoLogFile 時,做一次checkpoint 的動作。38培训专用 Summary 縱觀以上的 說 明,現在我們可以勾勒出整個OracleInstance 的整個架構圖:系統記憶體大致上的配置情形有Databa
35、seBufferCache、RedoLogBuffer、SharedPool、LargePool、JavaPool 等。在BackgroundProcesses 部份,計有DBWR、LGWR、SMON、PMON、CKPT 等。Background Background structures structuresMemory Memory structures structuresSGA SGARedo logbufferDatabase buffer cacheShared poolDBWR SMON PMON CKPT LGWR OthersData DictionarycacheLibra
36、rycacheInstance Instance39培训专用Instance InstanceSGA SGARedo logbuffer cacheShared pool Shared poolData Dict.cacheLibrarycacheDBWRSMON PMON CKPT LGWR OthersUserprocessServerprocessPGAControl filesData files Archived log filesParameterfilePasswordfileRedo log filesDatabase DatabaseDatabasebuffer cache4
37、0培训专用漫談Oracle Database Structures41培训专用 第一部份曾談到所謂的OracleDatabase 可分為:邏輯結構 邏輯結構 實體結構 實體結構 兩部份,並做了概略的 說 明。如果您有心成為一個頂尖的OracleDBA,那麼不僅要對以上兩結構 內 的 各個項目 各個項目 如數家珍般熟悉,還要瞭解其 內 內 部 部運作與相互關係 運作與相互關係 才行。現在就分別針對這兩部份做深入的說 明。42培训专用 邏輯結構(Logical Database Structures)邏輯資料庫結構是Oracle 所提供的一種 抽象化的資料庫管 抽象化的資料庫管理 理 概念,透過一
38、個Mapping 的機制,管理OraclePhysicalDatabaseStructures。由外至 內,我們可以看到:整個Database 是由 一個以上的 一個以上的Tablespace(Tablespace(表空間 表空間)組成;每個Tablespace 存在著許多的Segment(Segment(區段 區段);每個Segment 內 含許多的Extent(Extent(延伸區塊 延伸區塊);最後,則是構成整個OracleDatabase 的最小邏輯單位block(block(區 區塊 塊)。43培训专用44培训专用Tablespace(Tablespace(表空間 表空間)Oracl
39、e 資料庫允許DBA 自行規劃各種用途的資料表空間(Tablespace),以便存放不同型態的資料與資料庫物件。例如:存放Oracle Oracle 系統資訊的資料辭典 系統資訊的資料辭典(datadictionary)(datadictionary)可放在SYSTEM SYSTEM 表空間 表空間;使用者所存放的相關資料 使用者所存放的相關資料 可存放在USER USER 表空間 表空間;所有資料表的 索引 索引(Index)(Index)則可單獨存放在INDX INDX 表空間 表空間。SYSTEM 為Oracle 資料庫預設的表空間;USER 與INDX則是由DBA 自行規劃建置的。45
40、培训专用 一般來 說,Oracle 資料庫至少應規劃出五個以上的資料表空間,如下圖所示:46培训专用 OracleServer 其他相關的邏輯結構,均是經由Tablespace 做統一集中的管理。Tablespace 依其可存取的 狀態 狀態,分為兩種狀態:on-line(on-line(在線 在線)off-line(off-line(離線 離線)再以其可存取的 模式 模式 區分,可分為兩種式 read-only(read-only(唯讀 唯讀)read-write(read-write(讀寫 讀寫)透過其存取狀態的控制以及存取模式的切換,將可使整個資料庫的管理更為方便。47培训专用 Tabl
41、espace 的特性 OracleDatabase 是由 數個 數個Tablespace Tablespace 所構成。一個Tablespace 在同一時間點上,僅能類歸於一個Database。即,Database 與Tablespace 之間的關係,是呈現一對多的關係。除了SYSTEMTablespace SYSTEMTablespace 與 存在 存在 作用中 作用中(active)(active)的 的Rollback RollbackSegment Segment 的 的Tablespace Tablespace 外,其餘的Tablespace 均可在Database 尚在執行的時候,
42、將其選擇性的off-line off-line 或on-line on-line,以利資料庫的管理。Tablespace 能夠 隨意切換其存取模式read-only read-only 及read-write read-write 模式。48培训专用Block(Block(區塊區塊)OracleDatabase 邏輯空間概念中 最小的邏輯空間單位 最小的邏輯空間單位,有關OracleServer 對儲存空間所執行的配置(allocate)、讀取(read)及寫入(write),均是以此為單位,進行資料庫的種種操作。且在新建Oracle 資料庫時就必須明確地定義。Oracle 的區塊大小通常是
43、數倍於 數倍於“作業系統的磁碟讀寫區 作業系統的磁碟讀寫區塊 塊”(O.S.blocks)表示,Oracle 在存取資料時是以自身的block 為最小讀取單位,而不是以O.S.block 為單位。它的參數設定透過參數DB_BLOCK_SIZE DB_BLOCK_SIZE 設定之。必須將DB_BLOCK_SIZE 設定為O.S.blocks 的整數倍。49培训专用Extent(Extent(延伸區塊延伸區塊)雖然資料區塊是Oracle 最小的資料讀寫單位,但值 得注意的是:Oracle 在“配置 配置”儲存空間 儲存空間 時,並不是以資料區塊為單位,而是改採 延伸區塊 延伸區塊 的方式來配置空間
44、。它是由許多 連續的 連續的blocks blocks 所組成。一個Extent 的相關資訊,僅能存在於同一個Datafile 中。50培训专用 好處:減少資料庫 空間配置 空間配置 的動作 假定您準備在Oracle 資料庫 內 存放80KB 的資料:當執行DDL 指令建立資料庫物件時(例如:CREATETABLE),Oracle 會先配置出 一連串的 一連串的Blocks Blocks(即:Extent),其大小可為單一Block(假設8KB)的5 倍。當這些資料區塊全部存滿資料後,視實際需要再配置 第二個 第二個 Extent Extent(大小還是40KB)。只要 兩次的空間配置動作 兩
45、次的空間配置動作 就可以存放80KB 的資料。反例 反例 如果Oracle 每次只配置8KB 的Block 讓您存放資料,總共需要10 10 次 次空間配置動作才能放滿80KB 的資料,比較沒有效率 由此可見,Extent 的確有其存在的必要性。51培训专用Segment(Segment(區段 區段)Segment 是僅次於Tablespace 的邏輯空間單位。依照不同的資料處理性質,您可能需要在表空間 內 劃分出不同Segment,以存放不同資料。依其儲存、管理資料型態的不同,可大致分為:Datasegment(Datasegment(資料區段 資料區段)Indexsegment(Index
46、segment(索引區段 索引區段)Temporarysegment(Temporarysegment(暫時性區段 暫時性區段)Rollbacksegment(Rollbacksegment(退回區段 退回區段)52培训专用 從Oracle 資料庫的邏輯層面來看,我們知道:資料是存放在每個Block 內,資料讀寫動作也將以Block Block 為單位。空間配置 空間配置 的動作則是引用Extent Extent 的概念。一個Extent 由一連串的Blocks 所構成。依實際資料量多寡,資料(或資料庫物件)由 多個 多個Extent Extent 所組成。Tablespace 內 可劃分不同
47、的Segment;而每個Segment 內 又包含許多Extents。在每個Oracle 資料庫 內 可規劃不同的Tablespace,用以存放不同型態的資料。53培训专用 實體結構(Physical Database Structures)OracleServer 實體結構概觀圖如下:整個OracleDatabase 的實體結構,主要由三大部份所組成:Controlfiles Controlfiles Datafiles Datafiles Redologfiles Redologfiles 其它 Passwordfile Passwordfile、Parameterfile Paramet
48、erfile 則是關於OracleServerSecurity 及資料庫啟 動設定檔 Archivedlogfiles Archivedlogfiles 則與DatabaseRecovery 息息相關Control filesData files Archived log filesParameterfilePasswordfileRedo log filesOracle Database Oracle Database54培训专用 資料庫的啟 動順序如下:55培训专用Password file(Password file(密碼檔 密碼檔)PasswordFile 是由DBA 建立的,儲存那些
49、可以管理Oracle的登入密碼。可以用一個叫做ORAPWD ORAPWD 的工具建立它。ORAPWD 需要輸入三個參數:FILE FILE-這是PasswordFile 的儲存地方。PASSWORD PASSWORD-密碼,留意這個密碼也會同時成為SYS 的密碼,如果之後您用SYS 登入,發出ALTERUSER 的變更密碼指令,那就會同時變更PasswordFile 和SYS 的密碼。ENTRIES ENTRIES-設定PasswordFile 有多少個用 戶,即該資料庫最多可擁有多少個Administrators。如果之後要增加這個數目,就要先把PasswordFile 刪除,然後再建立,這
50、個動作是有風險的。56培训专用Parameter file(Parameter file(參數檔參數檔)啟 動OracleServer 時,OracleServer 會先配置一塊記憶體空間,供OracleInstance 及Backgroundprocesses 使用。在這之前,OracleServer 會先 讀取 讀取Parameterfile Parameterfile 內 內的相關設定 的相關設定,做為配置記憶體空間與Backgroundprocesses 時的設定值。Parameterfile 是一個 文字檔 文字檔,一般均是使用文字編輯器編輯該檔,修改OracleInstance 的