1、國立聯合大學 資訊管理學系陳士杰老師1國立聯合大學 資訊管理學系 資料庫系統課程(陳士杰)Outline Oracle 系統架構概觀Overview Oracle Instance Oracle Database Other Processes 漫談Oracle Instance 記憶體結構Background Processes 漫談Oracle Database StructuresPhysical Database StructuresLogical Database Structures2國立聯合大學 資訊管理學系 資料庫系統課程(陳士杰)Oracle 系統架構概觀關於Oracle系統
2、架構,是非常重要的基礎觀念,正所謂君子務本,本立而道生,有了踏實的基礎觀念之後,才能在往後學習Oracle的路上,無往不利3國立聯合大學 資訊管理學系 資料庫系統課程(陳士杰)Overview Oracle Server主要是由Oracle Instance與Database所組成,透過Server Process與User Process之間的交互運作,藉以達成使用者交付執行的工作。Oracle ServerOracle Instance DatabaseUser ProcessesServer ProcessesPGA 4國立聯合大學 資訊管理學系 資料庫系統課程(陳士杰)例如,使用者可能
3、想要在Oracle Server上查詢一筆人事資料,使用者將相關的SQL敘述輸入系統中,此時系統會產生相對應的User Process與Server Process,由Server Process負責向Oracle Server溝通,並將符合使用者所需的資料,從Oracle Server送至User Process,以完成該使用者下達的request。5國立聯合大學 資訊管理學系 資料庫系統課程(陳士杰)Oracle Instance(Oracle資料庫引擎)Oracle資料庫中的任何動作都和它有關,是Oracle DB的心臟地帶。Oracle Instance主要包含:background
4、process(背景處理程序)是一群,執行I/O Process 與非Oracle Process 的監控管理,針對目前的使用者所提出的request執行一些。每一個Process專責於一至兩項的工作System Global Area(SGA;系統全域區)用來存放資料庫系統相關資訊的一塊,讓background process得以利用這些系統資訊,以提供適當的服務,處理外部的user request。6國立聯合大學 資訊管理學系 資料庫系統課程(陳士杰)由於Oracle Instance掌控著處理Oracle Database所有運作的相關資訊。因此,當要存取或操作Oracle Databa
5、se裏的資料時,必須先啟動Oracle Instance,才能對Oracle Database的內容加以處理。當Oracle Instance啟動時,電腦系統會先配置一塊給SGA(System Global Area),並且載入相關的background process。7國立聯合大學 資訊管理學系 資料庫系統課程(陳士杰)Oracle Database可分為兩個部份來說明:實體結構邏輯結構 8國立聯合大學 資訊管理學系 資料庫系統課程(陳士杰)Oracle Database的實體結構部份是由一個個的檔案所組合,主要的檔案包括另外尚有:9國立聯合大學 資訊管理學系 資料庫系統課程(陳士杰)Co
6、ntrol filesData files Archived log filesParameterfilePasswordfileRedo log filesDatabase10國立聯合大學 資訊管理學系 資料庫系統課程(陳士杰)Oracle Database的邏輯結構部份,主要有11國立聯合大學 資訊管理學系 資料庫系統課程(陳士杰)不屬於Oracle Instance內的Process皆稱為Other Process。是User和應用程式要連接Oracle DB Server的重要橋樑。如User Process、Server Process等主要是反應使用者下達的request(即SQL
7、敘述),將其轉化為Oracle Server能看得懂的相關指令,從Oracle Database裏抓取資料,以反映使用者需求的資料。在Server Process中還有一個相當重要的資料結構:PGA是一個,存放相關Server Process的與。當Server Process被呼叫啟動後,Oracle Server會為其建立一個所屬的PGA,使用者下達的SQL敘述,就是存放在這裏的。12國立聯合大學 資訊管理學系 資料庫系統課程(陳士杰)漫談Oracle Instance13國立聯合大學 資訊管理學系 資料庫系統課程(陳士杰)第一部份我們曾談到所謂的Oracle Instance可分為:兩部
8、份,並做了概略的說明。現在就分別針對SGA與Background Processes做更完整深入的說明。14國立聯合大學 資訊管理學系 資料庫系統課程(陳士杰)記憶體結構SGA是Oracle Server在系統上所建立的一塊,Oracle Server利用這塊記憶體結構,協同Oracle 的各種Processes來完成使用者所交付的工作。SGA主要是由幾種不同的資料區塊所組成Database Buffer CacheRedo Log BufferShared PoolLarge PoolJava Pool其它(如:Cursors等)SGADatabaseBufferCacheRedoLogBu
9、fferSharedPoolLargePoolJavaPoolOthers15國立聯合大學 資訊管理學系 資料庫系統課程(陳士杰)Database Buffer Cache(資料庫緩衝快取區)資料庫系統擷取資料時的一個快取空間,其用途在於。(到硬碟從事I/O是很耗時的工作!)我們可以透過設定這個參數值來設定Database Buffer Cache的大小。在Oracle的Database Buffer Cache中,尚有一些sub-caches:DB_CACHE_SIZEDB_KEEP_CACHE_SIZEDB_RECYCLE_CACHE_SIZE我們可以透過這個參數,藉由statistics
10、的方式來對不同的cache size做預設。指令:Alter system set db_cache_advice=on16國立聯合大學 資訊管理學系 資料庫系統課程(陳士杰)Oracle用所謂的來管理這塊記憶體空間。LRU:當這塊記憶體空間時,Oracle Server將只保留最近有被使用過的資料,最不常用的資料則中,並將該資料所佔用的記憶體空間釋放出來。由於Database Buffer Cache關係著Oracle Server的,因此如何管理及設定Database Buffer Cache的大小,對於Oracle Server的效能調校,是相當重要的一項課題。17國立聯合大學 資訊管理
11、學系 資料庫系統課程(陳士杰)當資料庫的內容有所異動時,Redo Log Buffer會記錄其經過一定的時間週期或者是Redo Log Buffer滿載時,Oracle Server會將Redo Log Buffer的內容寫到裏,以追蹤整個資料庫的使用情形。當Oracle Server不幸當掉的話,就能利用這些記錄下來的資訊,進行資料庫的。有關Redo Log Buffer的大小設定,可以透過設定參數,改變Redo Log Buffer的大小。18國立聯合大學 資訊管理學系 資料庫系統課程(陳士杰)當使用者將SQL、PL/SQL等操作指令送至Oracle資料庫後,系統會先解析(Parse)語法
12、是否正確。解析時,下列兩項資料將會放入Shared Pool中:當有不同的使用者執行相同的SQL指令,就可以共用Shared Pool中解析好的結果,以。Shared Pool內包含數種不同的區域,主要有下列兩類:存放解析時所需要的相關資訊,以供查詢之用 存放各類指令解析後的結果,以供重覆使用Shared Pool亦是採的記憶體管理演算法。Shared Pool的大小設定,是由這個參數來控制 19國立聯合大學 資訊管理學系 資料庫系統課程(陳士杰)Large Pool是Oracle針對一些的資料庫處理與運算工作所提供的一個額外選項,它可以讓SGA配置一個較大的記憶體空間,提供給處理Oracle
13、的backup/restore、I/O、執行Oracle復原管理程式RMAN、等。透過指定這個參數,設定Large Pool的大小。20國立聯合大學 資訊管理學系 資料庫系統課程(陳士杰)當使用者有使用Java時,Oracle Server利用這塊記憶體空間,及所使用的Java Code,藉以提供Oracle與Internet更高的整合性。透過指定這個參數,來改變Java Pool的大小。21國立聯合大學 資訊管理學系 資料庫系統課程(陳士杰)Background Processes Oracle Server 所提供的Processes可分為兩類:用以,根據Client Processes的
14、需求,由Oracle Server動態配置所產生的,用以服務Client Processes的需求 裏 在Server Processes裏,尚包含另一個重要的記憶體結構PGA(Program Global Area),存放著Client Processes與Server Processes間的重要資訊 用來所需的一些系統常式,諸如資料庫的I/O、Oracle Processes的管理等 中 22國立聯合大學 資訊管理學系 資料庫系統課程(陳士杰)主要的Background Processes共有五個,只要有這五個Background Processes,Oracle Server就可以正常地
15、運作了,分別是:其它尚有Archiver(ARCHARCH)、Recoverer(RECORECO)、Dispatcher(DnnnDnnn)、Lock(LCKnLCKn)、Job Queue(SNPnSNPn)及Queue Monitor(QMNnQMNn)等Background Processes,它們主要是提供Oracle Server。如ARCH,它可以提供比LGWR更強的資料庫回復能力。23國立聯合大學 資訊管理學系 資料庫系統課程(陳士杰)DBWR 主要是負責管理,將Database Buffer Cache中修改過的資料,Data File裏,透過系統整批寫入的方式,可以提高整個
16、系統的執行效率。當使用者執行 DML 指令修改相關資料欄位,並執行commit指令時,Oracle本身並不是直接將修改過的資料直接寫入Data File裏,而是當Database Buffer Cache的內容或是,才將資料寫入Data File中。藉由,以提高系統執行效能。使用的技術 24國立聯合大學 資訊管理學系 資料庫系統課程(陳士杰)InstanceSGADatabase buffercacheDBWnControl filesData files Redo log filesDatabase25國立聯合大學 資訊管理學系 資料庫系統課程(陳士杰)由於在 系統,其資料庫異動情況可能十分
17、頻繁。因此:一個Oracle Server可以有的DBWR Background Processes,可以依實際系統硬體與作業系統的特性,設定參數值,以獲得整個資料庫系統的最佳執行效能。當設定DB_WRITER_PROCESSES的內容值後,系統上有關DBWR的名稱將會變為DBWn,n可為 09,如DBW0、DBW1、DBW2等。(系統預設只會啟動一個DBWn,即DBW0)。然而,在的伺服器系統,配置額外的DBWn並無太多的實質幫助。26國立聯合大學 資訊管理學系 資料庫系統課程(陳士杰)LGWR主要是負責將Redo Log Buffer 的內容值,寫入的Redo Log File中。它與DB
18、WR的運作方式不同點在於:DBWR在Database Buffer Cache即將滿載或是經過一定的時間區隔,才會將資料寫入Data File中,且是在有需要的時候才會對相關檔案做存取的動作LGWR是在資料庫的內容有時,如insert、update、delete等,就會被觸發,將異動的情形記錄到online Redo Log File中。因此,當資料庫crash時,就可以根據online Redo Log File內容,對資料庫進行還原的動作。LGWR一樣可以透過設定這個參數值,提供非同步I/O模式的功能。27國立聯合大學 資訊管理學系 資料庫系統課程(陳士杰)LGWR 之動作時機:當使用者某
19、交易時,LGWR會遵循,將Redo log butter內的資料異動記錄寫入。下列幾種情況:動作,如:間隔時間為3秒(Checkpoint;CKPT)重置日誌緩衝區之當DBWn回寫資料檔時,必要的時候LGWR也會動作(Write-ahead Protocol)28國立聯合大學 資訊管理學系 資料庫系統課程(陳士杰)InstanceSGADBWnRedo logbufferControl filesData files Redo log filesLGWRDatabase29國立聯合大學 資訊管理學系 資料庫系統課程(陳士杰)何謂?在DBWn回寫資料至Data File之前,Redo Log B
20、uffer內相關資料都必須完成寫入動作(即)。若DBWn發現某些重置紀錄尚未寫入Redo Log File時,它會通知LGWR 前來處理。等到LGWR將Redo Log Buffer的紀錄寫入完畢時,DBWn才會開始寫入資料檔。30國立聯合大學 資訊管理學系 資料庫系統課程(陳士杰)為何要把Redo Log File稱為 online Redo Log File?因為Oracle把Redo Log File分為兩部份:這兩個都是負責、整個資料庫的。不同的是,是online Redo Log File的,由另一個Background Process Archiver()負責管理。在預設的情況下,
21、ARCH是的,而是由LGWR記錄資料庫的異動情形,將這些記錄資料寫到online Redo Log File裏。如果Oracle Server不幸掛了,此時的資料庫僅能復原online Redo Log File裏有記錄的資料。可是,其他的呢?這時候就要靠ARCH將online Redo Log File備份出來。31國立聯合大學 資訊管理學系 資料庫系統課程(陳士杰)如果是因為停電或是其它因素導致,下一次啟動資料庫時將由SMON進行必要的資料庫修復動作。主要的工作有:執行一些資料庫必要的(如果有需要的話,SMON會使用online Redo Log File的內容)。定時清除資料庫系統中一些
22、不必要的,例如上次系統交易進行一半的資料或暫時性區間。執行整個系統,對於Tablespace上破碎的Extent,它會將這些較小的Extents予以合併,整理出一個較大的空間,以供系統日後的使用。32國立聯合大學 資訊管理學系 資料庫系統課程(陳士杰)InstanceSGASMONControl filesData files Redo log filesInstanceSGASMONDatabase33國立聯合大學 資訊管理學系 資料庫系統課程(陳士杰)當某個User Process異常中止時,PMON會執行的動作,就是把已經失效的User Processes給趕出記憶體,並,留待系統日後使
23、用釋放該Process之前使用的系統資源,避免Deadlock發生。PMON和SMON一樣,都是由Oracle資料庫系統,檢查整個資料庫系統的運作情形。34國立聯合大學 資訊管理學系 資料庫系統課程(陳士杰)InstanceSGAPMONPGA area35國立聯合大學 資訊管理學系 資料庫系統課程(陳士杰)在一個裏,DBWR會對所有在Database Buffer Cache所做的異動,將其結果寫入到相關的Data Files以及Redo Log Files、Control Files,這樣的動作,就稱為。CKPT Background Process就是扮演著一個的角色,經過一定的時間後,
24、負責通知 DBWR 執行Checkpoint的動作。CKPT會在適常時候產生一個Checkpoint事件,其意義為:確保Database Buffer Cache內也能夠定期被寫入硬碟的Data File。()萬一Oracle需要進行Instance Recovery時,就不需要Checkpoint之前的Redo record,可縮短資料庫動新啟動的時間。36國立聯合大學 資訊管理學系 資料庫系統課程(陳士杰)InstanceSGADWW0Redo LogBufferLGWRInstanceSGADBWnLGWRCKPTControl filesData files Redo log file
25、s37國立聯合大學 資訊管理學系 資料庫系統課程(陳士杰)執行Checkpoint的時間區間,可以透過設定這個參數,改變checkpoint的區間。然而,在設定LOG_CHECKPOINT_INTERVAL時,要注意的是:這個值設得的話,會造成系統設得,超過的時間時,LOG_CHECKPOINT_INTERVAL的值又會變得因為Oracle會在swap 時,做一次checkpoint的動作。38國立聯合大學 資訊管理學系 資料庫系統課程(陳士杰)Summary縱觀以上的說明,現在我們可以勾勒出整個Oracle Instance的整個架構圖:系統記憶體大致上的配置情形有Database Buff
26、er Cache、Redo Log Buffer、Shared Pool、Large Pool、Java Pool等。在Background Processes部份,計有DBWR、LGWR、SMON、PMON、CKPT等。Redo logbufferDatabase buffer cacheShared poolDBWRSMONPMONCKPTLGWROthersData DictionarycacheLibrarycache39國立聯合大學 資訊管理學系 資料庫系統課程(陳士杰)Redo logbuffer cacheData Dict.cacheLibrarycacheDBWRSMONPM
27、ONCKPTLGWROthersUserprocessServerprocessPGAControl filesData files Archived log filesParameterfilePasswordfileRedo log filesDatabasebuffer cache40國立聯合大學 資訊管理學系 資料庫系統課程(陳士杰)漫談Oracle Database Structures41國立聯合大學 資訊管理學系 資料庫系統課程(陳士杰)第一部份曾談到所謂的Oracle Database可分為:兩部份,並做了概略的說明。如果您有心成為一個頂尖的Oracle DBA,那麼不僅要對以
28、上兩結構內的如數家珍般熟悉,還要瞭解其才行。現在就分別針對這兩部份做深入的說明。42國立聯合大學 資訊管理學系 資料庫系統課程(陳士杰)邏輯資料庫結構是Oracle所提供的一種概念,透過一個Mapping的機制,管理Oracle Physical Database Structures。由外至內,我們可以看到:整個Database是由組成;每個Tablespace存在著許多的;每個Segment內含許多的;最後,則是構成整個Oracle Database的最小邏輯單位。43國立聯合大學 資訊管理學系 資料庫系統課程(陳士杰)44國立聯合大學 資訊管理學系 資料庫系統課程(陳士杰)Oracle
29、資料庫允許DBA 自行規劃各種用途的資料表空間(Tablespace),以便存放不同型態的資料與資料庫物件。例如:存放可放在;可存放在;所有資料表的則可單獨存放在。SYSTEM為Oracle資料庫預設的表空間;USER 與INDX 則是由DBA 自行規劃建置的。45國立聯合大學 資訊管理學系 資料庫系統課程(陳士杰)一般來說,Oracle資料庫至少應規劃出五個以上的資料表空間,如下圖所示:46國立聯合大學 資訊管理學系 資料庫系統課程(陳士杰)Oracle Server其他相關的邏輯結構,均是經由Tablespace做統一集中的管理。Tablespace依其可存取的,分為兩種狀態:再以其可存取
30、的區分,可分為兩種式透過其存取狀態的控制以及存取模式的切換,將可使整個資料庫的管理更為方便。47國立聯合大學 資訊管理學系 資料庫系統課程(陳士杰)Tablespace的特性 Oracle Database是由所構成。一個Tablespace在同一時間點上,僅能類歸於一個Database。即,Database與Tablespace之間的關係,是呈現一對多的關係。除了與外,其餘的Tablespace均可在Database尚在執行的時候,將其選擇性的或,以利資料庫的管理。Tablespace能夠隨意切換其存取模式及模式。48國立聯合大學 資訊管理學系 資料庫系統課程(陳士杰)Oracle Data
31、base邏輯空間概念中,有關Oracle Server對儲存空間所執行的配置(allocate)、讀取(read)及寫入(write),均是以此為單位,進行資料庫的種種操作。且在新建Oracle 資料庫時就必須明確地定義。Oracle的區塊大小通常是“”(O.S.blocks)表示,Oracle在存取資料時是以自身的 block為最小讀取單位,而不是以O.S.block 為單位。它的參數設定透過參數設定之。必須將 DB_BLOCK_SIZE 設定為 O.S.blocks的整數倍。49國立聯合大學 資訊管理學系 資料庫系統課程(陳士杰)雖然資料區塊是Oracle最小的資料讀寫單位,但值得注意的是
32、:Oracle在 時,並不是以資料區塊為單位,而是改採的方式來配置空間。它是由許多所組成。一個Extent的相關資訊,僅能存在於同一個Data file中。50國立聯合大學 資訊管理學系 資料庫系統課程(陳士杰)好處:減少資料庫的動作假定您準備在Oracle 資料庫內存放80 KB 的資料:當執行DDL指令建立資料庫物件時(例如:CREATE TABLE),Oracle會先配置出(即:Extent),其大小可為單一Block(假設 8KB)的5倍。當這些資料區塊全部存滿資料後,視實際需要再配置(大小還是40KB)。只要就可以存放80KB 的資料。如果Oracle 每次只配置8KB 的Block
33、讓您存放資料,總共需要空間配置動作才能放滿80 KB 的資料,比較沒有效率由此可見,Extent的確有其存在的必要性。51國立聯合大學 資訊管理學系 資料庫系統課程(陳士杰)Segment是僅次於Tablespace的邏輯空間單位。依照不同的資料處理性質,您可能需要在表空間內劃分出不同Segment,以存放不同資料。依其儲存、管理資料型態的不同,可大致分為:52國立聯合大學 資訊管理學系 資料庫系統課程(陳士杰)從Oracle資料庫的邏輯層面來看,我們知道:資料是存放在每個Block內,資料讀寫動作也將以為單位。的動作則是引用的概念。一個Extent由一連串的Blocks所構成。依實際資料量多
34、寡,資料(或資料庫物件)由所組成。Tablespace內可劃分不同的Segment;而每個Segment內又包含許多Extents。在每個Oracle資料庫內可規劃不同的Tablespace,用以存放不同型態的資料。53國立聯合大學 資訊管理學系 資料庫系統課程(陳士杰)Oracle Server實體結構概觀圖如下:整個Oracle Database的實體結構,主要由三大部份所組成:其它、則是關於Oracle Server Security 及資料庫啟動設定檔則與Database Recovery息息相關Control filesData files Archived log filesPar
35、ameterfilePasswordfileRedo log files54國立聯合大學 資訊管理學系 資料庫系統課程(陳士杰)資料庫的啟動順序如下:55國立聯合大學 資訊管理學系 資料庫系統課程(陳士杰)Password File 是由 DBA 建立的,儲存那些可以管理 Oracle 的登入密碼。可以用一個叫做 的工具建立它。ORAPWD 需要輸入三個參數:-這是 Password File 的儲存地方。-密碼,留意這個密碼也會同時成為 SYS 的密碼,如果之後您用 SYS 登入,發出 ALTER USER 的變更密碼指令,那就會同時變更 Password File 和 SYS 的密碼。-設
36、定 Password File 有多少個用戶,即該資料庫最多可擁有多少個Administrators。如果之後要增加這個數目,就要先把 Password File 刪除,然後再建立,這個動作是有風險的。56國立聯合大學 資訊管理學系 資料庫系統課程(陳士杰)啟動Oracle Server時,Oracle Server會先配置一塊記憶體空間,供Oracle Instance及Background processes使用。在這之前,Oracle Server會先,做為配置記憶體空間與Background processes時的設定值。Parameter file是一個,一般均是使用文字編輯器編輯該
37、檔,修改Oracle Instance的設定值。前兩部份提及的許多參數,如:DB_BLOCK_BUFFERS、LOG_BUFFER、SHARED_POOL_SIZE等,均可以在Parameter file中設定。參數名稱,只是一般而言,均是以為主。在改變Parameter file的相關設定時,要,所做的改變才能反映在系統中。57國立聯合大學 資訊管理學系 資料庫系統課程(陳士杰)有關Parameter file的Initialization parameters,依其使用時機、方式,大致可歸納成以下幾類:指定,如指定Database Control File的相關資訊。設定,如設定Datab
38、ase Checkpoint的時間間隔。指定,如設定Database Buffer Cache記憶空間的大小。這類參數又稱為Variable Parameter。58國立聯合大學 資訊管理學系 資料庫系統課程(陳士杰)起始參數檔包含以下主要內容:SGA相關的組態設定其他各起始參數之名稱與設定值Control File的名稱與存放路徑Redo Log File之相關設定59國立聯合大學 資訊管理學系 資料庫系統課程(陳士杰)一個Oracle Database至少要有一個Control file,記載著用來對,如:Database name。Data files、Redo log files的名稱
39、與所在位置。Database建立的Time stamp。每當資料庫被啟動時,Oracle 會在Instance啟動後立刻讀取Control File內容,待所有都收集完畢,資料庫才會被開啟。60國立聯合大學 資訊管理學系 資料庫系統課程(陳士杰)Control file掌控著所有Oracle Database實體檔案結構的相關資訊,、Data files或Redo log files,Oracle Server均會自動維護Control file的內容資訊。為了避免控制檔毀損導致資料庫系統停擺,建議在實務應用上至少配置,存放在不同實體硬碟,並以 的方式,提供資料庫備援的機制。61國立聯合大學
40、資訊管理學系 資料庫系統課程(陳士杰)Parameter file也有類似的系統資訊。Parameter file主要是給Oracle Instance看的,透過CONTROL_FILES 的指定,讓Instance(記憶體)與Database(實體的檔案結構)能夠彼此結合,提供資料庫的相關服務。因此,Parameter file必 須要搭配適當的Control file,否則將造成系統不可預期的錯誤。62國立聯合大學 資訊管理學系 資料庫系統課程(陳士杰)Data Files包含在資料庫中的。一個Oracle Database至少會有一個以上的Data file來存放資料。資料庫的資料大致上
41、可以分為兩類:資料字典包含資料庫,諸如Tables、Columns、Indexes、Tablespaces 等。63國立聯合大學 資訊管理學系 資料庫系統課程(陳士杰)一般說來,Data file有以下幾個特點:一個Data file僅能對應。Data file有其屬性設定的集合如Auto-extend的設定:當Data file的容量不足時,Oracle Server會自 動配置一額外的空間供其使用。一個Tablespace可包含 一個Segment只能存在於同一個Tablespace中;而一個Tablespace可能包含一個以上的Data file,因此,Segment是得以在其Table
42、space所屬的Data file內。64國立聯合大學 資訊管理學系 資料庫系統課程(陳士杰)65國立聯合大學 資訊管理學系 資料庫系統課程(陳士杰)Data file雖然是Oracle Server用來存放大量資料的實體檔案結構,但它並不是以直接存取Data file的模式,達成資料存取的目的,它是以的機制,間接存取Data file,以提高系統的。讀取資料時,它會先將Data file的資料載入至,使用者實際上是經由Database buffer cache中讀取資料的。寫入資料時,也是先對Database buffer cache做寫入的動作,再經由DBWRn在適當的時機 下,寫回至Da
43、ta file。66國立聯合大學 資訊管理學系 資料庫系統課程(陳士杰)Redo log file也就是大家俗稱的。負責記錄資料庫內任何資料處理的情況(即所有的,如:新增、修改、刪除,查詢動作除外)。當資料被異動時,所有異動紀錄會先保留在記憶體的,並在適當時機由LGWR這個Background process寫入至硬碟上的Redo log file。它主要的功能是當資料庫毀損時,提供,這個動作又稱為。67國立聯合大學 資訊管理學系 資料庫系統課程(陳士杰)與Control file不同的是,Control file記錄的是資料庫實體檔案結構,而Redo log file則是記錄著每一筆資料庫的
44、異動資訊。由交替使用,當其中一個Redo log file的空間被使用完後,Oracle Server會自動swap到另一個Redo log file,此動作稱為。在一個大型線上交易(OLTP)系統下,如果資料交易量十分頻繁,建議不妨配置重置日誌檔。68國立聯合大學 資訊管理學系 資料庫系統課程(陳士杰)需特別注意的是,所有的Redo log file均是交替使用的。因此,假設系統上有二個Redo log file:當第一個Redo log file的儲存空間已滿時,Oracle Server會自動swap到第二個Redo log file。當第二個Redo log file也滿了,Oracl
45、e Server 會自動再swap到第一個Redo log file,先前記錄在第一個Redo log file的異動記錄就會被。以的方式重覆使用。這時,就會發生系統回復的盲點:先前的異動記錄被覆蓋掉了。關於這點,Oracle Server提供另外一個機制,相對於 redo log file,archived log files可以提供更好的資料庫回復機制。69國立聯合大學 資訊管理學系 資料庫系統課程(陳士杰)又稱 Archived log file對Oracle Database而言,是屬於Optional(非必要)的選項,主要是提供資料庫及的機制。Oracle Database提供兩種控
46、制Redo log file的模式如下:Redo log file在被重覆使用之前,會先存放至Archived log files。:Redo log file不會有任何Archive的額外動作。70國立聯合大學 資訊管理學系 資料庫系統課程(陳士杰)Oracle Database中實體資料庫結構與邏輯資料庫結構之間的關係:71國立聯合大學 資訊管理學系 資料庫系統課程(陳士杰)事實上,Oracle Database中的與其存在著較大的依存關係,因為:除了Data file與資料庫中的資料物件有較大的關係外,其他諸如Password file、Control file、Redo log file、Archived redo log file等,均是用以提供資料庫系統的、以及的應用上。72