《Oracle系統架构基本概念.pptx》由会员分享,可在线阅读,更多相关《Oracle系統架构基本概念.pptx(74页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Oracle 系統架構基本概念 1培训专用 Outline Oracle系統架構概觀OverviewOracleInstanceOracleDatabaseOtherProcesses漫談OracleInstance記憶體結構BackgroundProcesses漫談OracleDatabaseStructuresPhysicalDatabaseStructuresLogicalDatabaseStructures2培训专用Oracle 系統架構概觀關於Oracle系統架構,是非常重要的基礎觀念,正所謂君子務本,本立而道生,有了踏實的基礎觀念之後,才能在往後學習Oracle的路上,無往不利3培
2、训专用電腦系統電腦系統電腦系統電腦系統 Overview OracleServer主要是由OracleInstance與Database所組成,透過ServerProcess與UserProcess之間的交互運作,藉以達成使用者交付執行的工作。Oracle ServerOracle Instance DatabaseUser ProcessesServer ProcessesPGA QueryQuery4培训专用例如,使用者可能想要在OracleServer上查詢一筆人事資料,使用者將相關的SQL敘述輸入系統中,此時系統會產生相對應的UserProcess與ServerProcess,由Ser
3、verProcess負責向OracleServer溝通,並將符合使用者所需的資料,從OracleServer送至UserProcess,以完成該使用者下達的request。5培训专用Oracle Instance(Oracle資料庫引擎)Oracle資料庫中的任何動作都和它有關,是OracleDB的心臟地帶。OracleInstance主要包含:backgroundprocess(背景處理程序)是一群常駐的服務常式常駐的服務常式常駐的服務常式常駐的服務常式(serviceroutine)(serviceroutine),執行I/OProcess與非OracleProcess的監控管理,針對目前
4、的使用者所提出的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(重置日誌檔重置日誌檔)-online)-onl
6、ineControlfiles(Controlfiles(控制檔控制檔)另外尚有:Passwordfile(Passwordfile(密碼檔密碼檔)Parameterfile(Parameterfile(起始參數檔起始參數檔)ArchivedRedoLogfiles(ArchivedRedoLogfiles(重置日誌封存檔重置日誌封存檔)-offline)-offline9培训专用Control filesData files Archived log filesParameterfilePasswordfileRedo log filesDatabase10培训专用邏輯結構OracleDat
7、abase的邏輯結構部份,主要有Tablespace(Tablespace(表格空間表格空間)Segment(Segment(區段區段)Extent(Extent(延伸區塊延伸區塊)Block(Block(區塊區塊)11培训专用Other Processes 不屬於OracleInstance內的Process皆稱為OtherProcess。是User和應用程式要連接OracleDBServer的重要橋樑。如UserProcess、ServerProcess等主要是反應使用者下達的request(即SQL敘述),將其轉化為OracleServer能看得懂的相關指令,從OracleDatabas
8、e裏抓取資料,以反映使用者需求的資料。在ServerProcess中還有一個相當重要的資料結構PGAPGA(ProgramGlobalArea)ProgramGlobalArea):PGA是一個memorybuffermemorybuffer,存放相關ServerProcess的資料資料資料資料與控制控制控制控制資訊資訊資訊資訊。當ServerProcess被呼叫啟動後,OracleServer會為其建立一個所屬的PGA,使用者下達的SQL敘述,就是存放在這裏的。12培训专用漫談Oracle Instance13培训专用第一部份我們曾談到所謂的OracleInstance可分為:SGASGA(
9、SystemGlobalAreaSystemGlobalArea)BackgroundProcessesBackgroundProcesses兩部份,並做了概略的說明。現在就分別針對SGA與BackgroundProcesses做更完整深入的說明。14培训专用 記憶體結構SGA是OracleServer在系統上所建立的一塊記憶體區塊記憶體區塊記憶體區塊記憶體區塊,OracleServer利用這塊記憶體結構,協同Oracle的各種Processes來完成使用者所交付的工作。SGA主要是由幾種不同的資料區塊所組成DatabaseBufferCacheRedoLogBufferSharedPoolL
10、argePoolJavaPool其它(如:Cursors等)SGADatabaseBufferCacheRedoLogBufferSharedPoolLargePoolJavaPoolOthers15培训专用Database Buffer Cache(資料庫緩衝快取區)資料庫系統擷取資料時的一個快取空間,其用途在於有效減少存取資料時造成有效減少存取資料時造成有效減少存取資料時造成有效減少存取資料時造成的磁碟讀寫動作的磁碟讀寫動作的磁碟讀寫動作的磁碟讀寫動作。(到硬碟從事I/O是很耗時的工作!)我們可以透過設定DB_BLOCK_BUFFERSDB_BLOCK_BUFFERS這個參數值來設定Dat
11、abaseBufferCache的大小。在Oracle的DatabaseBufferCache中,尚有一些sub-caches:DB_CACHE_SIZEDB_KEEP_CACHE_SIZEDB_RECYCLE_CACHE_SIZE我們可以透過DB_CACHE_ADVICEDB_CACHE_ADVICE這個參數,藉由statistics的方式來對不同的cachesize做預設。指令:Altersystemsetdb_cache_advice=on16培训专用Oracle用所謂的LRU(LeastRecentlyUsed)LRU(LeastRecentlyUsed)演算法演算法演算法演算法來管理
12、這塊記憶體空間。LRU:當這塊記憶體空間滿載滿載滿載滿載時,OracleServer將只保留最近有被使用過的資料,最不常用的資料則寫回磁碟寫回磁碟寫回磁碟寫回磁碟中,並將該資料所佔用的記憶體空間釋放出來。由於DatabaseBufferCache關係著OracleServer的I/OI/O動動動動作頻繁與否作頻繁與否作頻繁與否作頻繁與否,因此如何管理及設定DatabaseBufferCache的大小,對於OracleServer的效能調校,是相當重要的一項課題。17培训专用Redo Log Buffer(重置日誌緩衝區)當資料庫的內容有所異動時,RedoLogBuffer會記錄其相相相相關異動
13、的情形:關異動的情形:關異動的情形:關異動的情形:做了什麼改變做了什麼改變做了什麼改變做了什麼改變改變後的舊資料與新資料改變後的舊資料與新資料改變後的舊資料與新資料改變後的舊資料與新資料經過一定的時間週期或者是RedoLogBuffer滿載時,OracleServer會將RedoLogBuffer的內容寫到RedoRedoLogLogFileFile裏,以追蹤整個資料庫的使用情形。當OracleServer不幸當掉的話,就能利用這些記錄下來的資訊,進行資料庫的復原復原復原復原(Recovery)(Recovery)。有關Redo Log Buffer的大小設定,可以透過設定參數LOG_BUFF
14、ERLOG_BUFFER,改變RedoLogBuffer的大小。18培训专用Shared Pool(Shared Pool(共享區共享區)當使用者將SQL、PL/SQL等操作指令送至Oracle資料庫後,系統會先解析(Parse)語法是否正確。解析時,下列兩項資料將會放入SharedPool中:解析時所需要用到的相關資訊解析時所需要用到的相關資訊解析時所需要用到的相關資訊解析時所需要用到的相關資訊解析後的結果解析後的結果解析後的結果解析後的結果當有不同的使用者執行相同的SQL指令,就可以共用SharedPool中解析好的結果,以加速加速加速加速SQLSQL指令執行的速度指令執行的速度指令執行的
15、速度指令執行的速度。SharedPool內包含數種不同的區域,主要有下列兩類:DataDictionaryCacheDataDictionaryCache存放解析時所需要的相關資訊,以供查詢之用LibraryCacheLibraryCache存放各類指令解析後的結果,以供重覆使用SharedPool亦是採LRULRU的記憶體管理演算法。SharedPool的大小設定,是由SHARED_POOL_SIZESHARED_POOL_SIZE這個參數來控制19培训专用Large Pool(Large Pool(大型區大型區)LargePool是Oracle針對一些需需需需要要要要大大大大量量量量記記記
16、記憶憶憶憶體體體體空空空空間間間間的資料庫處理與運算工作所提供的一個額外選項,它可以讓SGA配置一個較大的記憶體空間,提供給處理Oracle的backup/restore、I/O、執行Oracle復原管理程式RMAN、等。透過指定LARGE_POOL_SIZELARGE_POOL_SIZE這個參數,設定LargePool的大小。20培训专用Java Pool(JavaJava Pool(Java區區)當使用者有使用Java時,OracleServer利用這塊記憶體空間,存放存放及ParseParse所使用的JavaCode,藉以提供Oracle與Internet更高的整合性。透過指定JAVA_
17、POOL_SIZEJAVA_POOL_SIZE這個參數,來改變JavaPool的大小。21培训专用 Background Processes OracleServer所提供的Processes可分為兩類:ServerProcessesServerProcesses用以服服務務ClientClient ProcessesProcesses,根據Client Processes的需求,由OracleServer動態配置所產生的,用以服務ClientProcesses的需求 不被包含在不被包含在OracleInstanceOracleInstance裏在Server Processes裏,尚包含另一
18、個重要的記憶體結構PGA(ProgramGlobalArea),存放著ClientProcesses與ServerProcesses間的重要資訊BackgroundProcessesBackgroundProcesses用來管管理理OracleOracle ServerServer所需的一些系統常式,諸如資料庫的I/O、OracleProcesses的管理等 包含於包含於OracleInstanceOracleInstance中22培训专用主要的BackgroundProcesses共有五個,只要有這五個BackgroundProcesses,OracleServer就可以正常地運作了,分別是
19、:DatabaseWriter(DatabaseWriter(DBWRDBWR)LogWriter(LogWriter(LGWRLGWR)SystemMonitor(SystemMonitor(SMONSMON)ProcessMonitor(ProcessMonitor(PMONPMON)CheckpointProcess(CheckpointProcess(CKPT)CKPT)其它尚有Archiver(ARCH)、Recoverer(RECO)、Dispatcher(Dnnn)、Lock(LCKn)、JobQueue(SNPn)及QueueMonitor(QMNn)等BackgroundPr
20、ocesses,它們主要是提供OracleServer更進階的管理更進階的管理更進階的管理更進階的管理。如ARCH,它可以提供比LGWR更強的資料庫回復能力。23培训专用Database Writer(DBWR)DBWR主要是負責管理DatabaseBufferCacheDatabaseBufferCache,將DatabaseBufferCache中修改過的資料,整批寫入整批寫入整批寫入整批寫入DataFile裏,透過系統整批寫入的方式,可以提高整個系統的執行效率。當使用者執行DML指令修改相關資料欄位,並執行commit指令時,Oracle本身並不是直接將修改過的資料直接寫入DataFil
21、e裏,而是當DatabaseBufferCache的內容即將滿載即將滿載即將滿載即將滿載或是經過一定的時間區隔經過一定的時間區隔經過一定的時間區隔經過一定的時間區隔(檢檢檢檢查查查查點點點點 Checkpoint;CKPT)Checkpoint;CKPT),才將資料寫入DataFile中。藉由減少相關的減少相關的減少相關的減少相關的I/OI/O動作動作動作動作,以提高系統執行效能。使用write-aheadwrite-ahead 的技術24培训专用InstanceSGADatabase buffercacheDBWnControl filesData files Redo log filesD
22、atabase25培训专用由於在大型線上交易大型線上交易大型線上交易大型線上交易(OLTP)(OLTP)系統,其資料庫異動情況可能十分頻繁。因此:一個OracleServer可以有一個以上一個以上的DBWRBackgroundProcesses,可以依實際系統硬體與作業系統的特性,設定DB_WRITER_PROCESSESDB_WRITER_PROCESSES參數值,以獲得整個資料庫系統的最佳執行效能。當設定DB_WRITER_PROCESSES的內容值後,系統上有關DBWR的名稱將會變為DBWn,n可為09,如DBW0、DBW1、DBW2等。(系統預設只會啟動一個DBWn,即DBW0)。然而
23、,在單一處理器單一處理器單一處理器單一處理器的伺服器系統,配置額外的DBWn並無太多的實質幫助。26培训专用Log Writer(LGWR)LGWR主要是負責將RedoLogBuffer的內容值,寫入onlineonline的RedoLogFile中。它與DBWR的運作方式不同點在於:DBWR在DatabaseBufferCache即將滿載或是經過一定的時間區隔,才會將資料寫入DataFile中,且是在有需要的時候才會對相關檔案做存取的動作LGWR是在資料庫的內容有異動且已被確認異動且已被確認異動且已被確認異動且已被確認(commit)(commit)時,如insert、update、dele
24、te等,就會被觸發,將異動的情形記錄到onlineRedoLogFile中。因此,當資料庫crash時,就可以根據onlineRedoLogFile內容,對資料庫進行還原的動作。LGWR一樣可以透過設定LGWR_IO_SLAVESLGWR_IO_SLAVES這個參數值,提供非同步I/O模式的功能。27培训专用LGWR之動作時機:當使用者確認確認(commit)(commit)某交易時,LGWR會遵循Write-aheadWrite-aheadProtocol(Protocol(先期寫入協定先期寫入協定),將Redologbutter內的資料異動記錄寫入。下列幾種情況:自動週期性地自動週期性地自
25、動週期性地自動週期性地動作,如:間隔時間為3秒(Checkpoint;CKPT)重置日誌緩衝區之剩餘空間不到剩餘空間不到剩餘空間不到剩餘空間不到2/32/3當DBWn回寫資料檔時,必要的時候LGWR也會動作(Write-aheadProtocol)28培训专用InstanceSGADBWnRedo logbufferControl filesData files Redo log filesLGWRDatabase29培训专用何謂Write-aheadWrite-ahead?在DBWn回寫資料至DataFile之前,RedoLogBuffer內相關資料都必須完成寫入動作(即寫入寫入RedoLo
26、gFileRedoLogFile)。若DBWn發現某些重置紀錄尚未寫入RedoLogFile時,它會通知LGWR前來處理。等到LGWR將RedoLogBuffer的紀錄寫入完畢時,DBWn才會開始寫入資料檔。30培训专用為何要把RedoLogFile稱為onlineRedoLogFile?因為Oracle把RedoLogFile分為兩部份:onlineRedoLogFileonlineRedoLogFile archiveRedoLogFilearchiveRedoLogFile這兩個都是負責記錄記錄記錄記錄、追蹤追蹤追蹤追蹤整個資料庫的異動情形異動情形異動情形異動情形。不同的是,archiv
27、eRedoLogFilearchiveRedoLogFile是onlineRedoLogFile的備份資備份資備份資備份資料檔料檔料檔料檔,由另一個BackgroundProcessArchiver(ARCHARCH)負責管理。在預設的情況下,ARCH是不會不會不會不會啟啟啟啟動動動動的,而是由LGWR記錄資料庫的異動情形,將這些記錄資料寫到onlineRedoLogFile裏。如果OracleServer不幸掛了,此時的資料庫僅能復原onlineRedoLogFile裏有記錄的資料。可是,其他的呢?這時候就要靠ARCH將onlineRedoLogFile備份出來。31培训专用System M
28、onitor(SMON)System Monitor(SMON)如果是因為停電或是其它因素導致OracleOracle資料庫資料庫資料庫資料庫不正常不正常被關閉被關閉,下一次啟動資料庫時將由SMON進行必要的資料庫修復動作。主要的工作有:執行一些資料庫必要的修復工作修復工作修復工作修復工作(如果有需要的話,SMON會使用onlineRedoLogFile的內容)。定時清除資料庫系統中一些不必要的殘餘物件殘餘物件殘餘物件殘餘物件,例如上次系統交易進行一半的資料或暫時性區間。執行整個系統儲存空間的管理儲存空間的管理儲存空間的管理儲存空間的管理,對於Tablespace上破碎的Extent,它會將這
29、些較小的Extents予以合併,整理出一個較大的空間,以供系統日後的使用。32培训专用InstanceSGASMONControl filesData files Redo log filesInstanceSGASMONDatabase33培训专用Process Monitor(PMON)當某個UserProcess異常中止時,PMON會執行程程程程序序序序修修修修復復復復(ProcessRecovery)(ProcessRecovery)的動作,就是把已經失效的UserProcesses給趕出記憶體,並釋釋釋釋放放放放該該該該記記記記憶憶憶憶體體體體空空空空間間間間,留待系統日後使用釋放該
30、Process之前使用的系統資源,避免Deadlock發生。PMON和SMON一樣,都是由Oracle資料庫系統週週週週期期期期性性性性自自自自動執行動執行動執行動執行,檢查整個資料庫系統的運作情形。34培训专用InstanceSGAPMONPGA area35培训专用Checkpoint(Checkpoint(CKPTCKPT)在一個指指指指定定定定的的的的時時時時間間間間區區區區間間間間裏,DBWR會對所有在DatabaseBufferCache所做的異動,將其結果寫入到相關的DataFiles以及RedoLogFiles、ControlFiles,這樣的動作,就稱為產產產產生生生生(設定
31、設定設定設定)一個一個一個一個checkpointcheckpoint事件事件事件事件。CKPTBackgroundProcess就是扮演著一個通通通通知知知知者者者者的角色,經過一定的時間後,負責通知DBWR執行Checkpoint的動作。CKPT會在適常時候產生一個Checkpoint事件,其意義為:確保Database Buffer Cache內經經經經常常常常被被被被異異異異動動動動的的的的資資資資料料料料也能夠定期被寫入硬碟的Data File。(LRULRU演算法演算法演算法演算法)萬一Oracle需要進行InstanceRecovery時,就不需要Checkpoint之前的Red
32、orecord,可縮短資料庫動新啟動的時間。36培训专用InstanceSGADWW0Redo LogBufferLGWRInstanceSGADBWnLGWRCKPTControl filesData files Redo log files37培训专用執行Checkpoint的時間區間,可以透過設定LOG_CHECKPOINT_INTERVALLOG_CHECKPOINT_INTERVAL這個參數,改變checkpoint的區間。然而,在設定LOG_CHECKPOINT_INTERVAL時,要注意的是:這個值設得太小太小太小太小的話,會造成系統額外額外額外額外I/OI/O的負擔的負擔的負擔
33、的負擔設得太大太大太大太大,超過onlineRedoLogFileswaponlineRedoLogFileswap的時間時,LOG_CHECKPOINT_INTERVAL的值又會變得沒有意義沒有意義沒有意義沒有意義因為Oracle會在swaponlineRedoLogFileonlineRedoLogFile時,做一次checkpoint的動作。38培训专用 Summary縱觀以上的說明,現在我們可以勾勒出整個OracleInstance的整個架構圖:系統記憶體大致上的配置情形有DatabaseBufferCache、RedoLogBuffer、SharedPool、LargePool、Ja
34、vaPool等。在BackgroundProcesses部份,計有DBWR、LGWR、SMON、PMON、CKPT等。Background Background structuresstructuresMemory Memory structuresstructuresSGASGARedo logbufferDatabase buffer cacheShared poolDBWRSMONPMONCKPTLGWROthersData DictionarycacheLibrarycacheInstanceInstance39培训专用InstanceInstanceSGASGARedo logbuf
35、fer cacheShared poolShared poolData Dict.cacheLibrarycacheDBWRSMONPMONCKPTLGWROthersUserprocessServerprocessPGAControl filesData files Archived log filesParameterfilePasswordfileRedo log filesDatabaseDatabaseDatabasebuffer cache40培训专用漫談Oracle Database Structures41培训专用第一部份曾談到所謂的OracleDatabase可分為:邏輯結構
36、邏輯結構邏輯結構邏輯結構實體結構實體結構實體結構實體結構兩部份,並做了概略的說明。如果您有心成為一個頂尖的OracleDBA,那麼不僅要對以上兩結構內的各個項目各個項目各個項目各個項目如數家珍般熟悉,還要瞭解其內內內內部部部部運作與相互關係運作與相互關係運作與相互關係運作與相互關係才行。現在就分別針對這兩部份做深入的說明。42培训专用 邏輯結構(Logical Database Structures)邏輯資料庫結構是Oracle所提供的一種抽象化的資料庫管抽象化的資料庫管抽象化的資料庫管抽象化的資料庫管理理理理概念,透過一個Mapping的機制,管理OraclePhysicalDatabase
37、Structures。由外至內,我們可以看到:整個Database是由一個以上的一個以上的Tablespace(Tablespace(表空間表空間)組成;每個Tablespace存在著許多的Segment(Segment(區段區段);每個Segment內含許多的Extent(Extent(延伸區塊延伸區塊);最後,則是構成整個OracleDatabase的最小邏輯單位block(block(區區塊塊)。43培训专用44培训专用Tablespace(表空間)Oracle資料庫允許DBA自行規劃各種用途的資料表空間(Tablespace),以便存放不同型態的資料與資料庫物件。例如:存放Oracle
38、Oracle系統資訊的資料辭典系統資訊的資料辭典(datadictionary)(datadictionary)可放在SYSTEMSYSTEM表空間表空間表空間表空間;使用者所存放的相關資料使用者所存放的相關資料可存放在USERUSER表空間表空間表空間表空間;所有資料表的索引索引(Index)(Index)則可單獨存放在INDXINDX表空間表空間表空間表空間。SYSTEM為Oracle資料庫預設的表空間;USER與INDX則是由DBA自行規劃建置的。45培训专用一般來說,Oracle資料庫至少應規劃出五個以上的資料表空間,如下圖所示:46培训专用OracleServer其他相關的邏輯結構,
39、均是經由Tablespace做統一集中的管理。Tablespace依其可存取的狀態狀態狀態狀態,分為兩種狀態:on-line(on-line(在線在線在線在線)off-line(off-line(離線離線離線離線)再以其可存取的模式模式模式模式區分,可分為兩種式read-only(read-only(唯讀唯讀唯讀唯讀)read-write(read-write(讀寫讀寫讀寫讀寫)透過其存取狀態的控制以及存取模式的切換,將可使整個資料庫的管理更為方便。47培训专用Tablespace的特性OracleDatabase是由數個數個TablespaceTablespace所構成。一個Tablespa
40、ce在同一時間點上,僅能類歸於一個Database。即,Database與Tablespace之間的關係,是呈現一對多的關係。除了SYSTEMTablespaceSYSTEMTablespace與存在存在作用中作用中(active)(active)的的RollbackRollbackSegmentSegment的的TablespaceTablespace外,其餘的Tablespace均可在Database尚在執行的時候,將其選擇性的off-lineoff-line或on-lineon-line,以利資料庫的管理。Tablespace能夠隨意切換其存取模式read-onlyread-only及r
41、ead-writeread-write模式。48培训专用Block(區塊)OracleDatabase邏輯空間概念中最小的邏輯空間單位最小的邏輯空間單位最小的邏輯空間單位最小的邏輯空間單位,有關OracleServer對儲存空間所執行的配置(allocate)、讀取(read)及寫入(write),均是以此為單位,進行資料庫的種種操作。且在新建Oracle資料庫時就必須明確地定義。Oracle的區塊大小通常是數倍於數倍於數倍於數倍於“作業系統的磁碟讀寫區作業系統的磁碟讀寫區作業系統的磁碟讀寫區作業系統的磁碟讀寫區塊塊塊塊”(O.S.blocks)表示,Oracle在存取資料時是以自身的bloc
42、k為最小讀取單位,而不是以O.S.block為單位。它的參數設定透過參數DB_BLOCK_SIZEDB_BLOCK_SIZE設定之。必須將DB_BLOCK_SIZE設定為O.S.blocks的整數倍。49培训专用Extent(延伸區塊)雖然資料區塊是Oracle最小的資料讀寫單位,但值得注意的是:Oracle在“配置配置配置配置”儲存空間儲存空間儲存空間儲存空間時,並不是以資料區塊為單位,而是改採延伸區塊延伸區塊延伸區塊延伸區塊的方式來配置空間。它是由許多連續的連續的連續的連續的blocksblocks所組成。一個Extent的相關資訊,僅能存在於同一個Datafile中。50培训专用好處:減
43、少資料庫空間配置空間配置空間配置空間配置的動作假定您準備在Oracle資料庫內存放80KB的資料:當執行DDL指令建立資料庫物件時(例如:CREATETABLE),Oracle會先配置出一連串的一連串的一連串的一連串的BlocksBlocks(即:Extent),其大小可為單一Block(假設8KB)的5倍。當這些資料區塊全部存滿資料後,視實際需要再配置第二個第二個第二個第二個 ExtentExtent(大小還是40KB)。只要兩次的空間配置動作兩次的空間配置動作兩次的空間配置動作兩次的空間配置動作就可以存放80KB的資料。反例反例反例反例如果Oracle每次只配置8KB的Block讓您存放資
44、料,總共需要1010次次空間配置動作才能放滿80KB的資料,比較沒有效率由此可見,Extent的確有其存在的必要性。51培训专用Segment(Segment(區段區段)Segment是僅次於Tablespace的邏輯空間單位。依照不同的資料處理性質,您可能需要在表空間內劃分出不同Segment,以存放不同資料。依其儲存、管理資料型態的不同,可大致分為:Datasegment(Datasegment(資料區段資料區段資料區段資料區段)Indexsegment(Indexsegment(索引區段索引區段索引區段索引區段)Temporarysegment(Temporarysegment(暫時性區
45、段暫時性區段暫時性區段暫時性區段)Rollbacksegment(Rollbacksegment(退回區段退回區段退回區段退回區段)52培训专用從Oracle資料庫的邏輯層面來看,我們知道:資料是存放在每個Block內,資料讀寫動作也將以BlockBlock為單位。空間配置空間配置空間配置空間配置的動作則是引用ExtentExtent的概念。一個Extent由一連串的Blocks所構成。依實際資料量多寡,資料(或資料庫物件)由多個多個多個多個ExtentExtent所組成。Tablespace內可劃分不同的Segment;而每個Segment內又包含許多Extents。在每個Oracle資料庫
46、內可規劃不同的Tablespace,用以存放不同型態的資料。53培训专用 實體結構(Physical Database Structures)OracleServer實體結構概觀圖如下:整個OracleDatabase的實體結構,主要由三大部份所組成:ControlfilesControlfilesDatafilesDatafilesRedologfilesRedologfiles其它PasswordfilePasswordfile、ParameterfileParameterfile則是關於OracleServerSecurity及資料庫啟動設定檔ArchivedlogfilesArchiv
47、edlogfiles則與DatabaseRecovery息息相關Control filesData files Archived log filesParameterfilePasswordfileRedo log filesOracle DatabaseOracle Database54培训专用資料庫的啟動順序如下:55培训专用Password file(密碼檔)PasswordFile是由DBA建立的,儲存那些可以管理Oracle的登入密碼。可以用一個叫做ORAPWDORAPWD的工具建立它。ORAPWD需要輸入三個參數:FILEFILE-這是PasswordFile的儲存地方。PASSW
48、ORDPASSWORD-密碼,留意這個密碼也會同時成為SYS的密碼,如果之後您用SYS登入,發出ALTERUSER的變更密碼指令,那就會同時變更PasswordFile和SYS的密碼。ENTRIESENTRIES-設定PasswordFile有多少個用戶,即該資料庫最多可擁有多少個Administrators。如果之後要增加這個數目,就要先把PasswordFile刪除,然後再建立,這個動作是有風險的。56培训专用Parameter file(參數檔)啟動OracleServer時,OracleServer會先配置一塊記憶體空間,供OracleInstance及Backgroundproces
49、ses使用。在這之前,OracleServer會先讀取讀取讀取讀取ParameterfileParameterfile內內內內的相關設定的相關設定的相關設定的相關設定,做為配置記憶體空間與Backgroundprocesses時的設定值。Parameterfile是一個文字檔文字檔文字檔文字檔,一般均是使用文字編輯器編輯該檔,修改OracleInstance的設定值。前兩部份提及的許多參數,如:DB_BLOCK_BUFFERS、LOG_BUFFER、SHARED_POOL_SIZE等,均可以在Parameterfile中設定。參數名稱沒有大小寫之分沒有大小寫之分沒有大小寫之分沒有大小寫之分,只
50、是一般而言,均是以小寫字母小寫字母小寫字母小寫字母為主。在改變Parameterfile的相關設定時,要重新重新重新重新啟啟啟啟動動動動OracleOracle的相關服務的相關服務的相關服務的相關服務,所做的改變才能反映在系統中。57培训专用有關Parameterfile的Initializationparameters,依其使用時機、方式,大致可歸納成以下幾類:指定檔案所在位址及名稱檔案所在位址及名稱檔案所在位址及名稱檔案所在位址及名稱,如CONTROL_FILESCONTROL_FILES指定DatabaseControlFile的相關資訊。設定區間限制區間限制區間限制區間限制,如LOG_