偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

Oracle體系結(jié)構(gòu)全面介紹

數(shù)據(jù)庫(kù) Oracle
Oracle體系結(jié)構(gòu)由數(shù)據(jù)庫(kù)、表空間、數(shù)據(jù)文件、內(nèi)部結(jié)構(gòu)、存儲(chǔ)區(qū)內(nèi)部的結(jié)構(gòu)、數(shù)據(jù)庫(kù)的外部結(jié)構(gòu)等組成。本文主要講述了Oracle體系結(jié)構(gòu)中的內(nèi)部結(jié)構(gòu)、存儲(chǔ)區(qū)內(nèi)部的結(jié)構(gòu)以及數(shù)據(jù)庫(kù)的外部結(jié)構(gòu)。

通過學(xué)習(xí)數(shù)據(jù)庫(kù)及實(shí)例,我們可以知道Oracle體系結(jié)構(gòu)中的可分為三個(gè)范疇:數(shù)據(jù)庫(kù)內(nèi)部結(jié)構(gòu)(如表)、存儲(chǔ)區(qū)內(nèi)部的結(jié)構(gòu)(包括共享存儲(chǔ)區(qū)和進(jìn)程)、數(shù)據(jù)庫(kù)的外部結(jié)構(gòu)。

一、Oracle體系結(jié)構(gòu)中的內(nèi)部結(jié)構(gòu)
數(shù)據(jù)庫(kù)的內(nèi)部結(jié)構(gòu),即Oracle數(shù)據(jù)的邏輯表現(xiàn)層,也稱oracleschema,包括以下這些內(nèi)容:
1.表、列、約束條件、數(shù)據(jù)類型(包括抽象數(shù)據(jù)類型)
2.分區(qū)與子分區(qū)
3.用戶與模式
4.索引、簇和散列簇
5.視圖
6.序列
7.過程、函數(shù)、軟件包和觸發(fā)器
8.同義詞
9.權(quán)限及角色
10.數(shù)據(jù)庫(kù)鏈接
11段、盤區(qū)和塊
12.回滾段
13.快照與顯形圖
14.各部分的具體介紹以后將在Oralceschema欄目中討論。

二、Oracle體系結(jié)構(gòu)中的內(nèi)部存儲(chǔ)結(jié)構(gòu)
包括內(nèi)存緩沖池與后臺(tái)進(jìn)程:

1.系統(tǒng)全局區(qū)(SGA),主要包括:

1)數(shù)據(jù)塊緩存區(qū)
數(shù)據(jù)塊緩存區(qū)(datablockbuffercache)是SGA中的一個(gè)高速緩存區(qū)域,用來存儲(chǔ)從數(shù)據(jù)庫(kù)中讀取數(shù)據(jù)段的數(shù)據(jù)塊(如表、索引和簇)。數(shù)據(jù)塊緩存區(qū)的大小由數(shù)據(jù)庫(kù)服務(wù)器init.ora文件中的DB_LOCK_BUFFERS參數(shù)決定(用數(shù)據(jù)庫(kù)塊的個(gè)數(shù)表示)。在調(diào)整和管理數(shù)據(jù)庫(kù)時(shí),調(diào)整數(shù)據(jù)塊緩存區(qū)的大小是一個(gè)重要的部分。

因?yàn)閿?shù)據(jù)塊緩存區(qū)的大小固定,并且其大小通常小于數(shù)據(jù)庫(kù)段所使用的空間,所以它不能一次裝載下內(nèi)存中所有的數(shù)據(jù)庫(kù)段。通常,數(shù)據(jù)塊緩存區(qū)只是數(shù)據(jù)庫(kù)大小的1%~2%,Oracle使用最近最少使用(LRU,leastrecentlyused)算法來管理可用空間。當(dāng)存儲(chǔ)區(qū)需要自由空間時(shí),最近最少使用塊將被移出,新數(shù)據(jù)塊將在存儲(chǔ)區(qū)代替它的位置。通過這種方法,將最頻繁使用的數(shù)據(jù)保存在存儲(chǔ)區(qū)中。

然而,如果SGA的大小不足以容納所有最常使用的數(shù)據(jù),那么,不同的對(duì)象將爭(zhēng)用數(shù)據(jù)塊緩存區(qū)中的空間。當(dāng)多個(gè)應(yīng)用程序共享同一個(gè)SGA時(shí),很有可能發(fā)生這種情況。此時(shí),每個(gè)應(yīng)用的最近使用段都將與其他應(yīng)用的最近使用段爭(zhēng)奪SGA中的空間。其結(jié)果是,對(duì)數(shù)據(jù)塊緩存區(qū)的數(shù)據(jù)請(qǐng)求將出現(xiàn)較低的命中率,導(dǎo)致系統(tǒng)性能下降。

2)字典緩存區(qū)
數(shù)據(jù)庫(kù)對(duì)象的信息存儲(chǔ)在數(shù)據(jù)字典表中,這些信息包括用戶帳號(hào)數(shù)據(jù)、數(shù)據(jù)文件名、段名、盤區(qū)位置、表說明和權(quán)限,當(dāng)數(shù)據(jù)庫(kù)需要這些信息(如檢查用戶查詢一個(gè)表的授權(quán))時(shí),將讀取數(shù)據(jù)字典表并且將返回的數(shù)據(jù)存儲(chǔ)在字典緩存區(qū)的SGA中。

數(shù)據(jù)字典緩存區(qū)通過最近最少使用(LRU)算法來管理。字典緩存區(qū)的大小由數(shù)據(jù)庫(kù)內(nèi)部管理。字典緩存區(qū)是SQL共享池的一部分,共享池的大小由數(shù)據(jù)庫(kù)文件init.ora中的SHARED_POOL_SIZE參數(shù)來設(shè)置。

如果字典緩存區(qū)太小,數(shù)據(jù)庫(kù)就不得不反復(fù)查詢數(shù)據(jù)字典表以訪問數(shù)據(jù)庫(kù)所需的信息,這些查詢稱為循環(huán)調(diào)用(recuesivecall),這時(shí)的查詢速度相對(duì)字典緩存區(qū)獨(dú)立完成查詢時(shí)要低。

3)重做日志緩沖區(qū)
重做項(xiàng)描述對(duì)數(shù)據(jù)庫(kù)進(jìn)行的修改。它們寫到聯(lián)機(jī)重做日志文件中,以便在數(shù)據(jù)庫(kù)恢復(fù)過程中用于向前滾動(dòng)操作。然而,在被寫入聯(lián)機(jī)重做日志文件之前,事務(wù)首先被記錄在稱作重做日志緩沖區(qū)(redologbuffer)的SGA中。數(shù)據(jù)庫(kù)可以周期地分批向聯(lián)機(jī)重做日志文件中寫重做項(xiàng)的內(nèi)容,從而優(yōu)化這個(gè)操作。重做日志緩沖區(qū)的大小(以字節(jié)為單位)由init.ora文件中的LOG_BUFFER參數(shù)決定。

4)SQL共享池
SQL共享池存儲(chǔ)數(shù)據(jù)字典緩存區(qū)及庫(kù)緩存區(qū)(librarycache),即對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作的語句信息。當(dāng)數(shù)據(jù)塊緩沖區(qū)和字典緩存區(qū)能夠共享數(shù)據(jù)庫(kù)用戶間的結(jié)構(gòu)及數(shù)據(jù)信息時(shí),庫(kù)緩存區(qū)允許共享常用的SQL語句。

SQL共享池包括執(zhí)行計(jì)劃及運(yùn)行數(shù)據(jù)庫(kù)的SQL語句的語法分析樹。在第二次運(yùn)行(由任何用戶)相同的SQL語句時(shí),可以利用SQL共享池中可用的語法分析信息來加快執(zhí)行速度。

SQL共享池通過LRU算法來管理。當(dāng)SQL共享池填滿時(shí),將從庫(kù)緩存區(qū)中刪掉最近最少使用的執(zhí)行路徑和語法分析樹,以便為新的條目騰出空間。如果SQL共享池太小,語句將被連續(xù)不斷地再裝入到庫(kù)緩存區(qū),從而影響操作性能。

SQL共享池的大小(以字節(jié)為單位)由init.ora文件參數(shù)SHARED_POOL_SIZE決定。

5)大池
大池(LargePool)是一個(gè)可選內(nèi)存區(qū)。如果使用線程服務(wù)器選項(xiàng)或頻繁執(zhí)行備份/恢復(fù)操作,只要?jiǎng)?chuàng)建一個(gè)大池,就可以更有效地管理這些操作。大池將致力于支持SQL大型命令。利用大池,就可以防止這些SQL大型命令把條目重寫入SQL共享池中,從而減少再裝入到庫(kù)緩存區(qū)中的語句數(shù)量。大池的大小(以字節(jié)為單位)通過init.ora文件的LARGE_POOL_SIZE參數(shù)設(shè)置,用戶可以使用init.ora文件的LARGE_POOL_MIN_ALLOC參數(shù)設(shè)置大池中的最小位置。Oracle8i已不用這個(gè)參數(shù)。作為使用LargePool的一種選擇方案,可以用init.ora文件的SHARED_POOL_RESERVED_SIZE參數(shù)為SQL大型語句保留一部分SQL共享池。

6)Java池
由其名字可知,Java池為Java命令提供語法分析。Java池的大小(以字節(jié)為單位)通過在Oracle8i引入的init.ora文件的JAVA_POOL_SIZE參數(shù)設(shè)置。init.ora文件的JAVA_POOL_SIZE參數(shù)缺省設(shè)置為10MB。

7)多緩沖池
可以在SGA中創(chuàng)建多個(gè)緩沖池,能夠用多個(gè)緩沖池把大數(shù)據(jù)集與其他的應(yīng)用程序分開,以減少它們爭(zhēng)奪數(shù)據(jù)塊緩存區(qū)內(nèi)相同資源的可能性。對(duì)于創(chuàng)建的每一個(gè)緩沖池,都要規(guī)定其LRU鎖存器的大小和數(shù)量。緩沖區(qū)的數(shù)量必須至少比LRU鎖存器的數(shù)量多50倍。

創(chuàng)建緩沖池時(shí),需要規(guī)定保存區(qū)(keeparea)的大小和再循環(huán)區(qū)(recyclearea)的大小。與SQL共享池的保留區(qū)一樣,保存區(qū)保持條目,而再循環(huán)區(qū)則被頻繁地再循環(huán)使用??梢酝ㄟ^BUFFER_POOL_KEEP參數(shù)規(guī)定來保存區(qū)的大小。例如:
保存和再循環(huán)緩沖池的容量減少了數(shù)據(jù)塊緩沖存儲(chǔ)區(qū)中的可用空間(通過DB_BLOCK_BUFFERS參數(shù)設(shè)置)。對(duì)于使用一個(gè)新緩沖池的表,通過表的storage子句中的buffer_pool參數(shù)來規(guī)定緩沖池的名字。例如,如果需要從內(nèi)存中快速刪除一個(gè)表,就把它賦予RECYCLE池。缺省池叫作DEFAULT,這樣就能在以后用altertable命令把一個(gè)表轉(zhuǎn)移到DEFAULT池。#p#

2.程序全局區(qū)(PGA)。
程序全局區(qū)(PGA,ProgramGlobalArea)是存儲(chǔ)區(qū)中的一個(gè)區(qū)域,由一個(gè)Oracle用戶進(jìn)程所使用,PGA中的內(nèi)存不能共享。

3.環(huán)境區(qū)

4.后臺(tái)進(jìn)程
數(shù)據(jù)庫(kù)擁有多個(gè)后臺(tái)進(jìn)程,其數(shù)量取決于數(shù)據(jù)庫(kù)的配置。這些進(jìn)程由數(shù)據(jù)庫(kù)管理,它們只需要進(jìn)行很少的管理。每個(gè)后臺(tái)進(jìn)程創(chuàng)建一個(gè)跟蹤文件。在實(shí)例操作期間保存跟蹤文件。后臺(tái)進(jìn)程跟蹤文件的命名約定和位置隨操作系統(tǒng)和數(shù)據(jù)庫(kù)版本而不同。一般來說,跟蹤文件含有后臺(tái)進(jìn)程名或后臺(tái)進(jìn)程的操作系統(tǒng)進(jìn)程ID??梢栽O(shè)置初始化參數(shù)文件的BACKGROUND_DUMP_DEST參數(shù)來規(guī)定后臺(tái)進(jìn)程跟蹤文件的位置,但是有些版本的Oracle忽略這種設(shè)置。排除數(shù)據(jù)庫(kù)故障時(shí),跟蹤文件就顯得非常重要。影響后臺(tái)進(jìn)程的嚴(yán)重問題通常記錄在數(shù)據(jù)庫(kù)的警告日志上。警告日志通常位于BACKGROUND_DUMP_DEST目錄下。一般來說,這個(gè)目錄是ORACLE_BASE目錄下的/ADMIN/INSTANCE_NAME/BDUMP目錄。

1)SMON
當(dāng)啟動(dòng)一個(gè)數(shù)據(jù)庫(kù)時(shí),SMON(SystemMonitor,系統(tǒng)監(jiān)控程序)進(jìn)程執(zhí)行所需的實(shí)例恢復(fù)操作(使用聯(lián)機(jī)重做日志文件),它也可以清除數(shù)據(jù)庫(kù),取消系統(tǒng)不再需要的事務(wù)對(duì)象。SMON的另一個(gè)用途是:將鄰接的自由盤區(qū)組成一個(gè)較大的自由盤區(qū)。對(duì)于某些表空間,數(shù)據(jù)庫(kù)管理員必須手工執(zhí)行自由空間合并;SMON只合并表空間中的自由空間,這些表空間的缺省pctincrease存儲(chǔ)值為非零。

2)PMON
PMON(進(jìn)程監(jiān)控程序)后臺(tái)進(jìn)程清除失敗用戶的進(jìn)程,釋放用戶當(dāng)時(shí)正在使用的資源。當(dāng)一個(gè)持有鎖的進(jìn)程被取消時(shí),其效果是顯而易見的,PMON負(fù)責(zé)釋放鎖并使其可以被其他用戶使用。同SMON一樣,PMON周期性地喚醒檢測(cè)它是否需要被使用。

3)DBWR
DBWR(數(shù)據(jù)庫(kù)寫入程序)后臺(tái)進(jìn)程負(fù)責(zé)管理數(shù)據(jù)塊緩存區(qū)及字典緩存區(qū)的內(nèi)容。它以批方式把修改塊從SGA寫到數(shù)據(jù)文件中。

盡管每一個(gè)數(shù)據(jù)庫(kù)實(shí)例只有一個(gè)SMON和一個(gè)PMON進(jìn)程在運(yùn)行,但是根據(jù)平臺(tái)和操作系統(tǒng)的不同,用戶可以同時(shí)擁有多個(gè)DBWR進(jìn)程。使用多個(gè)DBWR進(jìn)程有助于在進(jìn)行大的操作期間減少DBWR中的沖突。所需DBWR進(jìn)程的數(shù)量由數(shù)據(jù)庫(kù)的init.ora文件中的DB_WRITER_PROCESSES參數(shù)決定。如果系統(tǒng)支持異步I/O,可以用多個(gè)DBWRI/O從(slave)進(jìn)程創(chuàng)建一個(gè)DBWR進(jìn)程。DBWRI/O從進(jìn)程的數(shù)量由init.ora文件的DBWR_I/O_SLAVES參數(shù)設(shè)置。

如果創(chuàng)建多個(gè)DBWR進(jìn)程,這些進(jìn)程就不叫做DBWR,它們將有一個(gè)數(shù)字分量。例如,如果創(chuàng)建5個(gè)DBWR進(jìn)程,進(jìn)程的操作系統(tǒng)名就可能是DBW0、DBW1、DBW2、DBW3和DBW4。
4)LGWR
LGWR(日志寫入程序)后臺(tái)進(jìn)程負(fù)責(zé)把聯(lián)機(jī)重做日志緩沖區(qū)的內(nèi)容寫入聯(lián)機(jī)重做日志文件。LGWR分批將日志條目寫入聯(lián)機(jī)重做日志文件。重做日志緩沖區(qū)條目總是包含著數(shù)據(jù)庫(kù)的最新狀態(tài),這是因?yàn)镈BWR進(jìn)程可以一直等待到把數(shù)據(jù)塊緩沖區(qū)中的修改數(shù)據(jù)塊寫入到數(shù)據(jù)文件中。

LGWR是數(shù)據(jù)庫(kù)正常操作時(shí)唯一向聯(lián)機(jī)重做日志文件寫入內(nèi)容并從重做日志緩沖區(qū)直接讀取內(nèi)容的進(jìn)程。與DBWR對(duì)數(shù)據(jù)文件執(zhí)行的完全隨機(jī)訪問相反,聯(lián)機(jī)重做日志文件以序列形式寫入。如果聯(lián)機(jī)重做日志文件是鏡像文件,LGWR同時(shí)向鏡像日志文件中寫內(nèi)容。

對(duì)于Oracle8,可以創(chuàng)建多個(gè)LGWRI/O從進(jìn)程以改善向聯(lián)機(jī)重做日志文件的寫入性能,其個(gè)數(shù)由數(shù)據(jù)庫(kù)的init.ora文件的LGWR_IO_SLAVES參數(shù)決定。

在Oracle8i中,這個(gè)參數(shù)已不能用,LGWRI/O從進(jìn)程由DBWR_IO_SLAVES設(shè)置值派生
而來。

5)CKPT
CKPT(檢查點(diǎn)進(jìn)程)用來減少執(zhí)行實(shí)例恢復(fù)所需的時(shí)間。檢查點(diǎn)使DBWR把上一個(gè)檢查點(diǎn)以后的全部已修改數(shù)據(jù)塊寫入數(shù)據(jù)文件,并更新數(shù)據(jù)文件頭部和控制文件以記錄該檢查點(diǎn)。

當(dāng)一個(gè)聯(lián)機(jī)重做日志文件被填滿時(shí),檢查點(diǎn)進(jìn)程會(huì)自動(dòng)出現(xiàn)。可以用數(shù)據(jù)庫(kù)實(shí)例的init.ora文件中的LOG_CHECKPOINT_INTERVAL參數(shù)來設(shè)置一個(gè)頻繁出現(xiàn)的檢查點(diǎn)。

CKPT后臺(tái)進(jìn)程把早期數(shù)據(jù)庫(kù)版本中LGWR的兩個(gè)功能(向檢查點(diǎn)發(fā)信號(hào)及復(fù)制日志內(nèi)容)分成兩個(gè)后臺(tái)進(jìn)程。當(dāng)數(shù)據(jù)庫(kù)實(shí)例的init.ora文件中的CHECKPOINT_PROCESS參數(shù)被設(shè)置為TRUE時(shí),就可以建立CKPT后臺(tái)進(jìn)程。

6)ARCH
LGWR后臺(tái)進(jìn)程以循環(huán)方式向聯(lián)機(jī)重做日志文件寫入;當(dāng)填滿第一個(gè)日志文件后,就開始向第二個(gè)日志文件寫入;第二個(gè)日志文件填滿后,再向第三個(gè)日志文件寫入。一旦最后一個(gè)重做日志文件填滿,LGWR就開始重寫第一個(gè)重做日志文件的內(nèi)容。

當(dāng)Oracle以ARCHIVELOG(歸檔日志)模式運(yùn)行時(shí),數(shù)據(jù)庫(kù)在開始重寫重做日志文件之前先對(duì)其進(jìn)行備份。這些歸檔的重做日志文件通常寫入一個(gè)磁盤設(shè)備中。也可以直接寫入磁帶設(shè)備中,但是這往往要增加操作員的勞動(dòng)強(qiáng)度。

這種歸檔功能由ARCH(歸檔進(jìn)程)后臺(tái)進(jìn)程完成,利用該性能的數(shù)據(jù)庫(kù)在處理大數(shù)據(jù)事務(wù)時(shí)將遇到重做日志磁盤沖突問題,這是因?yàn)楫?dāng)LGWR準(zhǔn)備寫入一個(gè)重做日志文件時(shí),ARCH正準(zhǔn)備讀取另一個(gè)。如果歸檔日志目標(biāo)磁盤寫滿,數(shù)據(jù)庫(kù)還將遇到數(shù)據(jù)庫(kù)鎖定問題。此時(shí),ARCH凍結(jié),禁止LGWR寫入;從而禁止在數(shù)據(jù)庫(kù)中出現(xiàn)進(jìn)一步的事務(wù)處理;這種情況一起延續(xù)到歸檔重做日志文件的空間清空為止。

對(duì)于Oracle8,可以創(chuàng)建多個(gè)ARCHI/O從進(jìn)程以改善對(duì)歸檔重做日志文件的寫入功能。在Oracle8.0中,ARCHI/O從進(jìn)程的個(gè)數(shù)由數(shù)據(jù)庫(kù)的init.ora文件中的ARCH_IO_SLAVES參數(shù)決定。在Oracle8i中,這個(gè)參數(shù)已不能用,ARCH_IO_SLAVES設(shè)置值由DBWR_IO_SLAVES設(shè)置值派生。

7)RECO
RECO(恢復(fù)進(jìn)程)后臺(tái)進(jìn)程用于解決分布式數(shù)據(jù)庫(kù)中的故障問題。RECO進(jìn)程試圖訪問存在疑問的分布式事務(wù)的數(shù)據(jù)庫(kù)并解析這些事務(wù)。只有在平臺(tái)支持DistributedOption(分布式選項(xiàng))且init.ora文件中的DISTRIBUTED_TRANSACTIONS參數(shù)大于零時(shí)才創(chuàng)建這個(gè)進(jìn)程。

8)SNPn
Oracle的快照刷新及內(nèi)部作業(yè)隊(duì)列調(diào)度依賴于它們執(zhí)行的后臺(tái)進(jìn)程(快照進(jìn)程)。這些后臺(tái)進(jìn)程的名字以字母SNP開頭,以數(shù)字或字母結(jié)束。為一實(shí)例所創(chuàng)建的SNP進(jìn)程的個(gè)數(shù)由數(shù)據(jù)庫(kù)的init.ora文件中的JOB_QUEUE_PROCESSES參數(shù)決定(在Oracle7中,該參數(shù)名為SNAPSHOT_REFRESH_PROCESSES)。

9)LCKn
當(dāng)采用Oracle并行服務(wù)器選項(xiàng)時(shí),多個(gè)LCK(鎖定進(jìn)程)后臺(tái)進(jìn)程(命名為L(zhǎng)CK0~LCK9)用于解決內(nèi)部實(shí)例的鎖定問題。LCK進(jìn)程的個(gè)數(shù)由GC_LCK_PROCS參數(shù)決定。

10)Dnnn
Dnnn(調(diào)度程序進(jìn)程)是MTS結(jié)構(gòu)的一部分;這些進(jìn)程有助于減少處理多重連接所需要的資源。對(duì)于數(shù)據(jù)庫(kù)服務(wù)器支持的每一個(gè)協(xié)議必須至少創(chuàng)建一個(gè)調(diào)度程序進(jìn)程,調(diào)度程序進(jìn)程根據(jù)SQL*Net(或Net8)的配置在數(shù)據(jù)庫(kù)啟動(dòng)時(shí)創(chuàng)建,在數(shù)據(jù)庫(kù)打開后可以創(chuàng)建或取消。

11)Snnn
創(chuàng)建Snnn(服務(wù)器進(jìn)程)來管理需要專用服務(wù)器的數(shù)據(jù)庫(kù)連接。服務(wù)器進(jìn)程可以對(duì)數(shù)據(jù)文件進(jìn)行I/O操作。

12)Pnnn
如果啟動(dòng)數(shù)據(jù)庫(kù)中的并行查詢選項(xiàng),一個(gè)查詢的資源要求可以分布在多個(gè)處理器中。當(dāng)實(shí)例啟動(dòng)由init.ora文件的PARALLEL_MIN_SERVERS參數(shù)確定時(shí),指定數(shù)目的并行查詢服務(wù)器進(jìn)程就啟動(dòng)。每一個(gè)這樣的進(jìn)程都將出現(xiàn)在操作系統(tǒng)級(jí)。需要并行操作的進(jìn)程越多,啟動(dòng)的并行查詢服務(wù)器進(jìn)程就越多。每個(gè)并行查詢服務(wù)器進(jìn)程在操作系統(tǒng)級(jí)將有一個(gè)P000、P001、P002這樣的名字。并行查詢服務(wù)器進(jìn)程的最大數(shù)量由init.ora文件的PARALLEL_MAX_SERVERS參數(shù)確定。#p#

三、Oracle體系結(jié)構(gòu)中的的外部結(jié)構(gòu)

1.重做日志
Oracle保存所有數(shù)據(jù)庫(kù)事務(wù)的日志。這些事務(wù)被記錄在聯(lián)機(jī)重做日志文件(onlineredologfile)中。當(dāng)數(shù)據(jù)庫(kù)被破壞時(shí),這些日志文件能夠以正確順序恢復(fù)數(shù)據(jù)庫(kù)事務(wù)。重做日志文件信息存儲(chǔ)在數(shù)據(jù)庫(kù)數(shù)據(jù)文件的外部。

重做日志文件也可以讓Oracle優(yōu)化向磁盤寫入數(shù)據(jù)的方式。當(dāng)數(shù)據(jù)庫(kù)中出現(xiàn)一個(gè)事務(wù)時(shí),就把該事務(wù)輸入到重做日志緩沖區(qū);同時(shí)受該事務(wù)影響的數(shù)據(jù)塊不會(huì)立即寫入磁盤。

每個(gè)Oracle數(shù)據(jù)庫(kù)都有兩個(gè)或更多的聯(lián)機(jī)重做日志文件。Oracle以循環(huán)方式向聯(lián)機(jī)重做日志文件寫入:第一個(gè)日志文件被填滿后,就向第二個(gè)日志文件寫入,然后依次類推。當(dāng)所有聯(lián)機(jī)重做日志文件都被填滿時(shí),就又回到第一個(gè)日志文件,用新事務(wù)的數(shù)據(jù)對(duì)其進(jìn)行重寫。如果數(shù)據(jù)庫(kù)正以ARCHIVELOG模式運(yùn)行,在重寫聯(lián)機(jī)重做日志文件前,數(shù)據(jù)庫(kù)將先對(duì)其進(jìn)行備份。任何時(shí)候都可以用這些歸檔重做日志文件來恢復(fù)數(shù)據(jù)庫(kù)的任何部分。

重做日志文件可以被數(shù)據(jù)庫(kù)鏡像(復(fù)制)。鏡像聯(lián)機(jī)重做日志文件不依賴操作系統(tǒng)或操作環(huán)境的硬件性能就可以對(duì)重做日志文件進(jìn)行鏡像。

2.控制文件
數(shù)據(jù)庫(kù)的全局物理結(jié)構(gòu)由其控制文件(controlfile)維護(hù)??刂莆募涗洈?shù)據(jù)庫(kù)中所有文件的控制信息??刂莆募S護(hù)內(nèi)部的一致性并引導(dǎo)恢復(fù)操作。

由于控制文件對(duì)數(shù)據(jù)庫(kù)至關(guān)重要,所以聯(lián)機(jī)存儲(chǔ)著多個(gè)拷貝。這些文件一般存儲(chǔ)在各個(gè)不同的磁盤上,以便將因磁盤失效引起的潛在危險(xiǎn)降至最低限度。創(chuàng)建數(shù)據(jù)庫(kù)時(shí),同時(shí)就提供與之對(duì)應(yīng)的控制文件。

數(shù)據(jù)庫(kù)控制文件的名字通過init.ora文件的CONTROL_FILES參數(shù)規(guī)定。盡管這是一個(gè)init.ora參數(shù),但是CONTORL_FILES參數(shù)通常用config.ora文件規(guī)定,因?yàn)樗苌僮兓H绻枰o數(shù)據(jù)庫(kù)添加一個(gè)新的控制文件,可關(guān)閉實(shí)例,把已存在的一個(gè)控制文件復(fù)制到新的地址,把新的地址添加到CONTROL_FILES參數(shù)設(shè)置值上,并重新啟動(dòng)這個(gè)實(shí)例。

3.跟蹤文件與警告日志
在實(shí)例中運(yùn)行的每一個(gè)后臺(tái)進(jìn)程都有一個(gè)跟蹤文件與之相連。跟蹤文件記載后臺(tái)進(jìn)程遇到的重大事件的信息。除了跟蹤文件外,Oracle還有一個(gè)稱作警告日志(alertlog)的文件,警告日志記錄數(shù)據(jù)庫(kù)文件運(yùn)行中主要事件的命令及結(jié)果。例如,表空間的創(chuàng)建、重做日志的轉(zhuǎn)換、操作系統(tǒng)的恢復(fù)、數(shù)據(jù)庫(kù)的建立等信息都記錄在警告日志中。警告日志是數(shù)據(jù)庫(kù)每日管理的重要資源,當(dāng)需要查找主要失敗原因時(shí),跟蹤文件就非常有用。

應(yīng)經(jīng)常監(jiān)控警告日志。警告日志的條目將通知你數(shù)據(jù)庫(kù)操作期間遇到的任何問題,其中包括出現(xiàn)的任何ORA_0600內(nèi)部錯(cuò)誤。為使警告日志便于使用,最好是每天能自動(dòng)對(duì)其重新命名。例如,如果警告日志稱作alert_orcl.log,可以對(duì)它重新命名,以便其文件名包括當(dāng)前日期。下次Oracle要寫該警告日志時(shí),將找不到具有alert_orcl.log文件名的文件,因此數(shù)據(jù)庫(kù)將創(chuàng)建一個(gè)新的文件名。這樣,除了有以前的警告日志外,還有一個(gè)當(dāng)前的警告日志(alert_orcl.log)。用這種方式區(qū)分警告日志條目就可以使對(duì)警告日志條目的分析更有效。

【編輯推薦】

  1. Oracle體系結(jié)構(gòu)中兩個(gè)概念詳解
  2. Oracle體系結(jié)構(gòu)實(shí)例的相關(guān)內(nèi)容介紹
  3. Oracle體系結(jié)構(gòu)中的基本概念,數(shù)據(jù)庫(kù)的介紹
  4. Oracle體系結(jié)構(gòu)的基本概念,實(shí)例
  5. Oracle體系結(jié)構(gòu)中基本概念,數(shù)據(jù)庫(kù)
責(zé)任編輯:王婧瑤 來源: 互聯(lián)網(wǎng)
相關(guān)推薦

2010-04-08 10:02:15

Oracle體系結(jié)構(gòu)

2009-07-09 13:52:41

Inside JVM

2009-02-05 11:07:27

Sybase SQL SybaseSQL Server

2017-08-03 14:01:07

大數(shù)據(jù)深度學(xué)習(xí)體系結(jié)構(gòu)

2011-05-20 09:22:43

Oracle數(shù)據(jù)庫(kù)體系結(jié)構(gòu)

2010-04-01 16:54:06

Oracle體系結(jié)構(gòu)

2019-09-06 08:35:03

TCPIP算法

2018-09-11 12:41:42

HadoopJava工具

2009-03-30 10:53:37

體系結(jié)構(gòu)數(shù)據(jù)倉(cāng)庫(kù)Oracle

2010-04-08 09:46:27

Oracle體系結(jié)構(gòu)

2009-09-11 10:38:03

LINQ體系結(jié)構(gòu)

2009-06-26 15:58:28

EJB

2010-04-08 10:17:37

Oracle體系結(jié)構(gòu)

2010-04-20 10:23:06

Oracle入門

2012-02-06 17:22:44

MySQL

2014-07-23 09:33:52

2009-07-15 13:46:26

Swing體系結(jié)構(gòu)

2009-12-31 10:16:45

ADO.NET體系結(jié)構(gòu)

2010-03-18 13:53:48

無線USB體系結(jié)構(gòu)

2010-09-25 13:38:23

Inside JVM
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)