




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 窗體頂端DotNet Java DataMining知識(shí)改變命運(yùn),DataMining,Java,C/C+ 博客園: 首頁(yè): 新隨筆: 聯(lián)系: 訂閱: 管理posts - 29, comments - 22, trackbacks - 0 與我聯(lián)系 發(fā)短消息搜索常用 我的隨筆 我的空間 我的短信 我的評(píng)論 更多 我的參與 我的新聞 最新評(píng)論 我的標(biāo)簽留言簿(9) 給我留言 查看留言隨筆檔案(29) 2006年3月 (1) 2006年2月 (5) 2006年1月 (10) 2005年11月 (1) 2005年7月 (1) 2005年1月 (6) 2004年12月 (2) 2004年11月 (3
2、)文章檔案(1) 2004年11月 (1)相冊(cè) 什剎海數(shù)據(jù)挖掘blog 數(shù)據(jù)挖掘列表 我的Google主頁(yè) 我的Google主頁(yè),English Home Page數(shù)據(jù)挖掘經(jīng)典資源 rabbit blog 月亮的別稱 moon。如:兔魄,兔輪,兔月(月亮的別名);兔鉤(彎月);兔宮(月宮);兔起鳥沉(月出日落);兔輝(月光);兔闕(月宮);兔華(明月)最新隨筆 1.經(jīng)過(guò)2個(gè)星期的日夜奮戰(zhàn),終于答辯完了 2.已經(jīng)信息化的我們能否想起使用或第一想起用信息化的手段辦事 3.對(duì)一個(gè)懶散的國(guó)家或個(gè)人,沒(méi)有什么比成功更令人鼓舞 4.8小時(shí)是能做很多事的 5.這幾天做論文,作為消遣看了一本很棒的書金錢魔杖現(xiàn)
3、代猶太商法 6.新的年又完全開始了,回到了,一切又是那么忙碌。 7.生活工作無(wú)小事 8.把有限的精力放在最有意義的事上 9.保爾柯察金的那句話太對(duì)了,原來(lái)人最不能忍受的是碌碌無(wú)為 10.sql交叉查詢 11.SqlServer如何生成動(dòng)態(tài)交叉表查詢-zz 12.玖玖精品軟件下載基地,當(dāng)前最棒的軟件基地 13.管理十大經(jīng)典理論終生受用 14.成長(zhǎng)中應(yīng)該知道的20個(gè)故事-不錯(cuò)的噢 15.05年最經(jīng)典語(yǔ)言解析 16.2006年,希望是我更有收獲的一年,也是大家更有成就的一年 17.ORACLE 體系結(jié)構(gòu)(Architecture of ORACLE) 18.中國(guó)軟件業(yè)失望與希望-超有理的文章 19.
4、論程序員應(yīng)具備的職業(yè)素質(zhì) 20.Oracle 常用命令大匯總最新評(píng)論 1.re: Internet與Intranet中的人工智能技術(shù) 不錯(cuò)的容,容信息很多,了解不少相關(guān)信息。幸苦了樓主。 -孤劍閱讀排行榜 1.05年最經(jīng)典語(yǔ)言解析(3915) 2.JDBC的作用與重要接口(2040) 3.世界500強(qiáng)名稱中英對(duì)照 (1877) 4.數(shù)據(jù)挖掘術(shù)語(yǔ)簡(jiǎn)介(1703) 5.Oracle 常用命令大匯總(1261)評(píng)論排行榜 1.數(shù)據(jù)挖掘術(shù)語(yǔ)簡(jiǎn)介(5) 2.歡迎大家訪問(wèn)我的blog(4) 3.Internet與Intranet中的人工智能技術(shù)(3) 4.已經(jīng)信息化的我們能否想起使用或第一想起用信息化的手
5、段辦事(2) 5.ORACLE 體系結(jié)構(gòu)(Architecture of ORACLE)(1)ORACLE 體系結(jié)構(gòu)(Architecture of ORACLE)ORACLE 體系結(jié)構(gòu)(Architecture of ORACLE)第一部分:ORACLE8i體系結(jié)構(gòu)第一章. 概要在本章里你可以了解以下容1、理解ORACLE 實(shí)例的組成2、理解ORACLE 數(shù)據(jù)庫(kù)的組成3、理解ORACLE存結(jié)構(gòu)的組成4、理解后臺(tái)進(jìn)程的作用與分工5、理解數(shù)據(jù)庫(kù)的物理文件與對(duì)應(yīng)的邏輯結(jié)構(gòu)6、理解ORACLE的整體構(gòu)架第二章. 理解ORACLE實(shí)例2.1 ORACLE SERVERORACLE是一個(gè)可移植的數(shù)據(jù)庫(kù)它
6、在相關(guān)的每一個(gè)平臺(tái)上都可以使用,即所謂的跨平臺(tái)特性。在不同的操作系統(tǒng)上也略有差別,如在UNIX/LINUX上,ORACLE是多個(gè)進(jìn)程實(shí)現(xiàn)的,每一個(gè)主要函數(shù)都是一個(gè)進(jìn)程;而在Windows上,則是一個(gè)單一進(jìn)程,但是在該進(jìn)程中包含多個(gè)線程。但是從整體構(gòu)架上來(lái)看,ORACLE在不同的平臺(tái)上是一樣的,如存結(jié)構(gòu)、后臺(tái)進(jìn)程、數(shù)據(jù)的存儲(chǔ)。一個(gè)運(yùn)行著的ORACLE數(shù)據(jù)庫(kù)就可以看成是一個(gè)ORACLE SERVER,該SERVER由數(shù)據(jù)庫(kù)(Database)和實(shí)例(Instance)組成,在一般的情況下一個(gè)ORACLE SERVER包含一個(gè)實(shí)例和一個(gè)與之對(duì)應(yīng)的數(shù)據(jù)庫(kù),但是在特殊情況下,如8i的OPS,9i的RAC
7、,一個(gè)SERVER中一個(gè)數(shù)據(jù)庫(kù)可以對(duì)應(yīng)多個(gè)實(shí)例。一系列物理文件(數(shù)據(jù)文件,控制文件,聯(lián)機(jī)日志等)的集合或與之對(duì)應(yīng)的邏輯結(jié)構(gòu)(表空間,段等)被稱為數(shù)據(jù)庫(kù),簡(jiǎn)單的說(shuō),就是一系列與磁盤有關(guān)系的物理文件的組成。ORACLE存結(jié)構(gòu)和后臺(tái)進(jìn)程被成為數(shù)據(jù)庫(kù)的實(shí)例,一個(gè)實(shí)例最多只能安裝(Mount)和打開(Open)在一個(gè)數(shù)據(jù)庫(kù)上,負(fù)責(zé)數(shù)據(jù)庫(kù)的相應(yīng)操作并與用戶交互。實(shí)例與數(shù)據(jù)庫(kù)的關(guān)系如下圖所示:圖一 ORACLE SERVER2.2 ORACLE存結(jié)構(gòu) (Memory structure)2.2.1 存結(jié)構(gòu)的組成Oracle存結(jié)構(gòu)主要可以分共享存區(qū)與非共享存區(qū),共享存區(qū)主要包含SGA(System Globa
8、l Area),非共享存區(qū)主要由PGA(Program Global Area)組成,可以用如下圖形表示。圖二 ORACLE MEMOERY STRUCTRUE2.2.2全局共享區(qū)System Global Area(SGA) System Global Area 是一塊巨大的共享存區(qū)域,他被看做是Oracle 數(shù)據(jù)庫(kù)的一個(gè)大緩沖池,這里的數(shù)據(jù)可以被ORACLE的各個(gè)進(jìn)程共用。其大小可以通過(guò)如下語(yǔ)句查看:SQL select * from v$sga;NAME VALUE- -Fixed Size 39816Variable Size 259812784Database Buffers 1.0
9、49E+09Redo Buffers 327680更詳細(xì)的信息可以參考V$sgastat、V$buffer_pool主要包括以下幾個(gè)部分:共享池(Shared pool)共享池是SGA中最關(guān)鍵的存片段,特別是在性能和可伸縮性上。一個(gè)太小的共享池會(huì)扼殺性能,使系統(tǒng)停止,太大的共享池也會(huì)有同樣的效果,將會(huì)消耗大量的CPU來(lái)管理這個(gè)共享池。不正確的使用共享池只會(huì)帶來(lái)災(zāi)難。共享池主要又可以分為以下兩個(gè)部分:1、SQL語(yǔ)句緩沖(Library Cache)當(dāng)一個(gè)用戶提交一個(gè)SQL語(yǔ)句,Oracle會(huì)將這句SQL進(jìn)行分析(parse),這個(gè)過(guò)程類似于編譯,會(huì)耗費(fèi)相對(duì)較多的時(shí)間。在分析完這個(gè)S
10、QL,Oracle會(huì)把他的分析結(jié)果給保存在Shared pool的Library Cache中,當(dāng)數(shù)據(jù)庫(kù)第二次執(zhí)行該SQL時(shí),Oracle自動(dòng)跳過(guò)這個(gè)分析過(guò)程,從而減少了系統(tǒng)運(yùn)行的時(shí)間。這也是為什么第一次運(yùn)行的SQL 比第二次運(yùn)行的SQL要慢一點(diǎn)的原因。下面舉例說(shuō)明parse的時(shí)間SQLStartupSQL select count(*) from usertable;COUNT(*)-243Elapsed: 00:00:00.08這是在Share_pool 和Data buffer 都沒(méi)有數(shù)據(jù)緩沖區(qū)的情況下所用的時(shí)間SQL alter system flush SHARED_POOL;Sys
11、tem altered.清空Share_pool,保留Data bufferSQL select count(*) from usertable;COUNT(*)-243Elapsed: 00:00:00.02SQL select count(*) from usertable;COUNT(*)-243Elapsed: 00:00:00.00從兩句SQL 的時(shí)間差上可以看出該SQL 的Parse 時(shí)間約為00:00:00.02對(duì)于保存在共享池中的SQL語(yǔ)句,可以從V$Sqltext、v$Sqlarea中查詢到,對(duì)于編程者來(lái)說(shuō),要盡量提高語(yǔ)句的重用率,減少語(yǔ)句的分析時(shí)間。一個(gè)設(shè)計(jì)的差的應(yīng)用程序可
12、以毀掉整個(gè)數(shù)據(jù)庫(kù)的Share pool,提高SQL語(yǔ)句的重用率必須先養(yǎng)成良好的變成習(xí)慣,盡量使用Bind變量。2、數(shù)據(jù)字典緩沖區(qū)(Data Dictionary Cache)顯而易見(jiàn),數(shù)據(jù)字典緩沖區(qū)是ORACLE特地為數(shù)據(jù)字典準(zhǔn)備的一塊緩沖池,供ORACLE部使用,沒(méi)有什么可以說(shuō)的。塊緩沖區(qū)高速緩存(Database Buffer Cache)這些緩沖是對(duì)應(yīng)所有數(shù)據(jù)文件中的一些被使用到的數(shù)據(jù)塊。讓他們能夠在存中進(jìn)行操作。在這個(gè)級(jí)別里沒(méi)有系統(tǒng)文件,,戶數(shù)據(jù)文件,臨時(shí)數(shù)據(jù)文件,回滾段文件之分。也就是任何文件的數(shù)據(jù)塊都有可能被緩沖。數(shù)據(jù)庫(kù)的任何修改都在該緩沖里完成,并由DBWR進(jìn)程將修
13、改后的數(shù)據(jù)寫入磁盤。這個(gè)緩沖區(qū)的塊基本上在兩個(gè)不同的列表中管理。一個(gè)是塊的“臟”表(Dirty List),需要用數(shù)據(jù)庫(kù)塊的書寫器(DBWR)來(lái)寫入,另外一個(gè)是不臟的塊的列表(LRU List),一般的情況下,是使用最近最少使用(Least Recently Used,LRU)算法來(lái)管理。塊緩沖區(qū)高速緩存又可以細(xì)分為以下三個(gè)部分(Default pool,Keep pool,Recycle pool)。如果不是人為設(shè)置初始化參數(shù)(Init.ora),ORACLE將默認(rèn)為Default pool。由于操作系統(tǒng)尋址能力的限制,不通過(guò)特殊設(shè)置,在32位的系統(tǒng)上,塊緩沖區(qū)高速緩存最大可以達(dá)到1.7G,
14、在64位系統(tǒng)上,塊緩沖區(qū)高速緩存最大可以達(dá)到10G。重做日志緩沖區(qū)(Redo log buffer)重做日志文件的緩沖區(qū),對(duì)數(shù)據(jù)庫(kù)的任何修改都按順序被記錄在該緩沖,然后由LGWR進(jìn)程將它寫入磁盤。這些修改信息可能是DML語(yǔ)句,如(Insert,Update,Delete),或DDL語(yǔ)句,如(Create,Alter,Drop等)。重做日志緩沖區(qū)的存在是因?yàn)榇娴酱娴牟僮鞅容^存到硬盤的速度快很多,所以重作日志緩沖區(qū)可以加快數(shù)據(jù)庫(kù)的操作速度,但是考慮的數(shù)據(jù)庫(kù)的一致性與可恢復(fù)性,數(shù)據(jù)在重做日志緩沖區(qū)中的滯留時(shí)間不會(huì)很長(zhǎng)。所以重作日志緩沖區(qū)一般都很小,大于3M之后的重作日志緩沖區(qū)已經(jīng)沒(méi)有太
15、大的實(shí)際意義。 Java程序緩沖區(qū)(Java Pool)Java 的程序區(qū),Oracle 8I 以后,Oracle 在核中加入了對(duì)Java的支持。該程序緩沖區(qū)就是為Java 程序保留的。如果不用Java程序沒(méi)有必要改變?cè)摼彌_區(qū)的默認(rèn)大小。大池(Large Pool)大池的得名不是因?yàn)榇?,而是因?yàn)樗脕?lái)分配大塊的存,處理比共享池更大的存,在8.0開始引入。下面對(duì)象使用大池:1、 MTS在SGA的Large Pool中分配UGA2、 語(yǔ)句的并行查詢(Parallel Executeion of Statements)允許進(jìn)程間消息緩沖區(qū)的分配,用來(lái)協(xié)調(diào)并行查詢服務(wù)器3、
16、 備份(Backup)用于RMAN磁盤I/O緩存2.2.3程序共享區(qū) Program Global Area(PGA)Program Global Area(PGA)是用來(lái)保存與用戶進(jìn)程相關(guān)的存段,PGA總是由進(jìn)程或線程在本地分配,其它進(jìn)程與線程無(wú)法訪問(wèn)。User Global Area(UGA)實(shí)際上是會(huì)話的狀態(tài),它是會(huì)話必須始終能夠得到的存。對(duì)于專用服務(wù)器進(jìn)程,UGA在PGA中分配。對(duì)于多線程進(jìn)程,UGA在Large pool中分配。PGA/UGA一般保存了用戶的變量、權(quán)限、堆棧、排序(Sort)空間等信息。影響PGA/UGA最大的也就是Sort信息,由初始化參數(shù)sort_area_siz
17、e決定,由于Sort信息分配在UGA中,所以在共享服務(wù)器中能更好的利用存。2.3 后臺(tái)進(jìn)程 (Background process)后臺(tái)進(jìn)程是Oracle的程序,用來(lái)管理數(shù)據(jù)庫(kù)的讀寫,恢復(fù)和監(jiān)視等工作。Server Process主要是通過(guò)他和user process進(jìn)行聯(lián)系和溝通,并由他和user process進(jìn)行數(shù)據(jù)的交換。在Unix機(jī)器上,Oracle后臺(tái)進(jìn)程相對(duì)于操作系統(tǒng)進(jìn)程,也就是說(shuō),一個(gè)Oracle后臺(tái)進(jìn)程將啟動(dòng)一個(gè)操作系統(tǒng)進(jìn)程;在Windows機(jī)器上,Oracle后臺(tái)進(jìn)程相對(duì)于操作系統(tǒng)線程,打開任務(wù)管理器,我們只能看到一個(gè)ORACLE.EXE的進(jìn)程,但是通過(guò)另外的工具,就可以看
18、到包含在這里進(jìn)程中的線程。后臺(tái)進(jìn)程與其它結(jié)構(gòu)的關(guān)系如圖所示:圖三ORACLE BACKGROUP PROCESS在Unix上可以通過(guò)如下方法查看后臺(tái)進(jìn)程:ps ef | grep ora_# ps -ef | grep ora_ | grep XCLUAToracle 29431 1 0 Sep 02 ? 2:02 ora_dbwr_SIDoracle 29444 1 0 Sep 02 ? 0:03 ora_ckpt_SIDoracle 29448 1 0 Sep 02 ? 2:42 ora_smon_SIDoracle 29442 1 0 Sep 02 ? 3:25 ora_lgwr_SID
19、oracle 29427 1 0 Sep 02 ? 0:01 ora_pmon_SIDOracle系統(tǒng)有5 個(gè)基本進(jìn)程他們是DBWR(數(shù)據(jù)文件寫入進(jìn)程)LGWR(日志文件寫入進(jìn)程)SMON(系統(tǒng)監(jiān)護(hù)進(jìn)程)PMON(用戶進(jìn)程監(jiān)護(hù)進(jìn)程)CKPT(檢查點(diǎn)進(jìn)程,同步數(shù)據(jù)文件, 日志文件,控制文件)2.3.1 數(shù)據(jù)寫進(jìn)程DBWR將修改過(guò)的數(shù)據(jù)緩沖區(qū)的數(shù)據(jù)寫入對(duì)應(yīng)數(shù)據(jù)文件維護(hù)系統(tǒng)的空緩沖區(qū)這里指出幾個(gè)容易錯(cuò)誤的概念:當(dāng)一個(gè)更新提交后,DBWR把數(shù)據(jù)寫到磁盤并返回給用戶提交完成。DBWR會(huì)觸發(fā)CKPT 后臺(tái)進(jìn)程DBWR不會(huì)觸發(fā)LGWR 進(jìn)程上面的概念都是錯(cuò)誤的。DBWR是一個(gè)很底層的工作進(jìn)程,他批量的把緩沖
20、區(qū)的數(shù)據(jù)寫入磁盤。和任何前臺(tái)用戶的進(jìn)程幾乎沒(méi)有什么關(guān)系,也不受他們的控制。至于DBWR會(huì)不會(huì)觸發(fā)LGWR和CKPT進(jìn)程,我們將在下面幾節(jié)里討論。DBWR工作的主要條件如下DBWR 超時(shí)系統(tǒng)中沒(méi)有多的空緩沖區(qū)用來(lái)存放數(shù)據(jù)CKPT 進(jìn)程觸發(fā)DBWR 等2.3.2日志寫進(jìn)程LGWR將重做日志緩沖區(qū)的數(shù)據(jù)寫入重做日志文件,LGWR是一個(gè)必須和前臺(tái)用戶進(jìn)程通信的進(jìn)程。當(dāng)數(shù)據(jù)被修改的時(shí)候,系統(tǒng)會(huì)產(chǎn)生一個(gè)重做日志并記錄在重做日志緩沖區(qū)。這個(gè)重做日志可以類似的認(rèn)為是以下的一個(gè)結(jié)構(gòu):SCN=0數(shù)據(jù)塊ID對(duì)象ID=0801數(shù)據(jù)行=02修改后的數(shù)據(jù)=0011提交的時(shí)候,LGWR必須將被修改的數(shù)據(jù)的重做日志緩沖區(qū)數(shù)據(jù)
21、寫入日志數(shù)據(jù)文件,然后再通知前臺(tái)進(jìn)程提交成功,并由前臺(tái)進(jìn)程通知用戶。從這點(diǎn)可以看出LGWR承擔(dān)了維護(hù)系統(tǒng)數(shù)據(jù)完整性的任務(wù)。LGWR 工作的主要條件如下用戶提交有1/3 重做日志緩沖區(qū)未被寫入磁盤有大于1M 重做日志緩沖區(qū)未被寫入磁盤超時(shí)DBWR需要寫入的數(shù)據(jù)的SCN號(hào)大于LGWR 記錄的SCN號(hào),DBWR 觸發(fā)LGWR寫入2.3.3系統(tǒng)監(jiān)控SMON工作主要包含清除臨時(shí)空間在系統(tǒng)啟動(dòng)時(shí),完成系統(tǒng)實(shí)例恢復(fù)聚結(jié)空閑空間從不可用的文件中恢復(fù)事務(wù)的活動(dòng)OPS中失敗節(jié)點(diǎn)的實(shí)例恢復(fù)清除OBJ$表縮減回滾段使回滾段脫機(jī)2.3.4進(jìn)程監(jiān)控PMON主要用于清除失效的用戶進(jìn)程,釋放用戶進(jìn)程所用的資源。如PMON將回
22、滾未提交的工作,釋放鎖,釋放分配給失敗進(jìn)程的SGA資源。2.3.5檢查點(diǎn)進(jìn)程CKPT同步數(shù)據(jù)文件,日志文件和控制文件,由于DBWR/LGWR的工作原理,造成了數(shù)據(jù)文件,日志文件,控制文件的不一至,這就需要CKPT進(jìn)程來(lái)同步。CKPT會(huì)更新數(shù)據(jù)文件/控制文件的頭信息。CKPT工作的主要條件如下在日志切換的時(shí)候數(shù)據(jù)庫(kù)用immediate ,transaction , normal 選項(xiàng)shutdown 數(shù)據(jù)庫(kù)的時(shí)候根據(jù)初始話文件LOG_CHECKPOINT_INTERVAL、LOG_CHECKPOINT_TIMEOUT、FAST_START_IO_TARGET 的設(shè)置的數(shù)值來(lái)確定用戶觸發(fā)以下進(jìn)程的
23、啟動(dòng)需要手工配置2.3.6歸檔進(jìn)程ARCH當(dāng)數(shù)據(jù)庫(kù)以歸檔方式運(yùn)行的時(shí)候,Oracle會(huì)啟動(dòng)ARCH進(jìn)程,當(dāng)重做日志文件被寫滿時(shí),日志文件進(jìn)行切換,舊的重做日志文件就被ARCH進(jìn)程復(fù)制到一個(gè)/多個(gè)特定的目錄/遠(yuǎn)程機(jī)器。這些被復(fù)制的重做日志文件被叫做歸檔日志文件。2.3.7分布式恢復(fù)RECO負(fù)責(zé)解決分布事物中的故障。Oracle可以連接遠(yuǎn)程的多個(gè)數(shù)據(jù)庫(kù),當(dāng)由于網(wǎng)絡(luò)問(wèn)題,有些事物處于懸而未決的狀態(tài)。RECO進(jìn)程試圖建立與遠(yuǎn)程服務(wù)器的通信,當(dāng)故障消除后,RECO進(jìn)程自動(dòng)解決所有懸而未決的會(huì)話。2.3.8服務(wù)進(jìn)程Server Process服務(wù)進(jìn)程的分類專用服務(wù)進(jìn)程(Dedicated Server P
24、rocess)一個(gè)服務(wù)進(jìn)程對(duì)應(yīng)一個(gè)用戶進(jìn)程共享服務(wù)進(jìn)程(MultiTreaded Server Process)一個(gè)服務(wù)進(jìn)程對(duì)應(yīng)多個(gè)用戶進(jìn)程,輪流為用戶進(jìn)程服務(wù)。2.3.9用戶進(jìn)程User Process在客戶端,負(fù)責(zé)將用戶的SQL 語(yǔ)句傳遞給服務(wù)進(jìn)程,并從服務(wù)器段拿回查詢數(shù)據(jù)。2.4 一個(gè)貫穿數(shù)據(jù)庫(kù)全局的概念-系統(tǒng)改變號(hào)SCN(System Change Number)系統(tǒng)改變號(hào),一個(gè)由系統(tǒng)部維護(hù)的序列號(hào)。當(dāng)系統(tǒng)需要更新的時(shí)候自動(dòng)增加,他是系統(tǒng)中維持?jǐn)?shù)據(jù)的一致性和順序恢復(fù)的重要標(biāo)志。運(yùn)行以下語(yǔ)句可以得到系統(tǒng)SCN號(hào)SQL select max(ktuxescnw * power(2, 32)
25、 + ktuxescnb) scn from x$ktuxe; SCN- 31014SCN有如下特點(diǎn):a. 查詢語(yǔ)句不會(huì)使SCN增加,就算是同時(shí)發(fā)生的更新,數(shù)據(jù)庫(kù)部對(duì)應(yīng)的SCN也是不同的。這樣一來(lái)就保證了數(shù)據(jù)恢復(fù)時(shí)候的順序。b. 維持?jǐn)?shù)據(jù)的一致性,當(dāng)一個(gè)查詢執(zhí)行的時(shí)候,他會(huì)先從系統(tǒng)中得到一個(gè)當(dāng)前的SCN號(hào),在他查找數(shù)據(jù)的同時(shí),他會(huì)檢查每個(gè)數(shù)據(jù)行和他對(duì)應(yīng)的SCN號(hào),只有那些不比他的SCN號(hào)大的行才能從對(duì)應(yīng)用戶數(shù)據(jù)文件的緩沖區(qū)取出,而那些大于他SCN號(hào)的行,就應(yīng)該從回滾段數(shù)據(jù)文件的緩沖中取出。實(shí)例分析:一個(gè)查詢返回以下5 行ID Name-1 ShangHai2 Beijing3 Gugangzh
26、ou4 ShenZhen5 HanZhou用戶A從12:00開始運(yùn)行,到12:05結(jié)束在12:01用戶B執(zhí)行了一條Update語(yǔ)句,更新了ID是2的那條記錄把Beijing該成了Tianjing.并提交,這時(shí)候用戶A 的那個(gè)查詢是不會(huì)出現(xiàn)Tianjing的記錄。12:00查詢時(shí)候的SCN是N然后用戶B的更新使得系統(tǒng)的SCN變成N+1當(dāng)用戶A查詢到ID=2的記錄的時(shí)候發(fā)現(xiàn)他的SCN已經(jīng)大于查詢開始時(shí)候的SCN,他就會(huì)在回滾段數(shù)據(jù)緩沖中找到SCN=N的那條記錄,并把它返回。第三章. ORACLE 數(shù)據(jù)庫(kù)(Database)3.1物理結(jié)構(gòu)物理操作系統(tǒng)文件的集合.3.1.1 控制文件(Control
27、files)參數(shù)文件init.ora記錄了控制文件的位置,控制文件是一個(gè)非常小的二進(jìn)制文件,最大可以增長(zhǎng)到64MB,控制文件包括如下主要信息數(shù)據(jù)庫(kù)的名字,檢查點(diǎn)信息,數(shù)據(jù)庫(kù)創(chuàng)建的時(shí)間戳所有的數(shù)據(jù)文件,聯(lián)機(jī)日志文件,歸檔日志文件信息備份信息等有了這些信息,Oracle就知道那些文件是數(shù)據(jù)文件,現(xiàn)在的重做日志文件是哪些,這些都是系統(tǒng)啟動(dòng)和運(yùn)行的基本條件,所以他是Oracle運(yùn)行的根本。如果沒(méi)有控制文件系統(tǒng)是不可能啟動(dòng)的。控制文件是非常重要的,一般采用多個(gè)鏡相復(fù)制來(lái)保護(hù)控制文件,或采用RAID來(lái)保護(hù)控制文件??刂莆募膩G失,將使數(shù)據(jù)庫(kù)的恢復(fù)變的很復(fù)雜。控制文件信息可以從V$Controlfile中查
28、詢獲得3.1.2數(shù)據(jù)文件(Data files)數(shù)據(jù)文件的詳細(xì)信息記載在控制文件中可以通過(guò)如下方式查看數(shù)據(jù)文件SQL select name from v$datafile;NAME-/u05/dbf/PROD/system_01.dbf/u06/dbf/PROD/temp_01.dbf/u04/dbf/PROD/users_01.dbf/u09/dbf/PROD/rbs_01.dbf/u06/dbf/PROD/applsys_indx_01.dbf/u05/dbf/PROD/applsys_data_01.dbf數(shù)據(jù)文件是ORACLE中最重要的物理文件,直接記錄了用戶數(shù)據(jù)。按照使用上的不同,
29、可以把數(shù)據(jù)文件分成如下幾類:系統(tǒng)數(shù)據(jù)文件回滾數(shù)據(jù)文件臨時(shí)數(shù)據(jù)文件用戶數(shù)據(jù)文件以上各類文件分別屬于不同性質(zhì)的表空間,在以下的邏輯結(jié)構(gòu)中,將進(jìn)一步說(shuō)明該類型文件的作用。3.1.3重做日志文件(Redo files)用戶對(duì)數(shù)據(jù)庫(kù)進(jìn)行的任何操作都會(huì)記錄在重做日志文件。在了解重做日志之前必須了解重做日志的兩個(gè)概念,重做日志組和重做日志組成員(Member),一個(gè)數(shù)據(jù)庫(kù)中至少要有兩個(gè)日志組文件,一組寫完后再寫另一組,即輪流寫。每個(gè)日志組中至少有一個(gè)日志成員,一個(gè)日志組中的多個(gè)日志成員是鏡相關(guān)系,有利于日志文件的保護(hù),因?yàn)槿罩疚募膿p壞,特別是當(dāng)前聯(lián)機(jī)日志的損壞,對(duì)數(shù)據(jù)庫(kù)的影響是巨大的。聯(lián)機(jī)日志組的交換過(guò)程
30、叫做切換,需要特別注意的是,日志切換在一個(gè)優(yōu)化效果不好的數(shù)據(jù)庫(kù)中會(huì)引起臨時(shí)的“掛起”。掛起大致有兩種情況:在歸檔情況下,需要?dú)w檔的日志來(lái)不與歸檔,而聯(lián)機(jī)日志又需要被重新利用檢查點(diǎn)事件還沒(méi)有完成(日志切換引起檢查點(diǎn)),而聯(lián)機(jī)日志需要被重新利用解決這種問(wèn)題的常用手段是:i.增加日志組ii.增大日志文件成員大小一個(gè)包含三個(gè)日志組,每個(gè)日志組兩個(gè)成員的聯(lián)機(jī)日志組成與運(yùn)行大致如圖所示:圖四 REDO LOG通過(guò)v$log可以查看日志組,v$logfile可以查看具體的成員文件。3.1.4歸檔日志文件(Archived files)Oracle可 以運(yùn)行在兩種模式之中,歸檔模式和不歸檔模式。如果不用歸檔模
31、式,當(dāng)然,你就不會(huì)有歸檔日志,但是,你的系統(tǒng)將不會(huì)是一個(gè)實(shí)用系統(tǒng),特別是不能用于生產(chǎn)系 統(tǒng),因?yàn)槟憧赡軙?huì)丟失數(shù)據(jù)。但是在歸檔模式中,為了保存用戶的所有修改,在重做日志文件切換后和被覆蓋之間系統(tǒng)將他們另外保存成一組連續(xù)的文件系列,該文 件系列就是歸檔日志文件。有 人或許會(huì)說(shuō),歸檔日志文件占領(lǐng)我大量的硬盤空間,其實(shí),具體想一想,你是愿意浪費(fèi)一點(diǎn)磁盤空間來(lái)保護(hù)你的數(shù)據(jù),還是愿意丟失你的數(shù)據(jù)呢?顯而義見(jiàn),我們需 要保證我們的數(shù)據(jù)的安全性。其實(shí),歸檔并不是一直占領(lǐng)你的磁盤空間,你可以把她備份到磁帶上,或則刪除上一次完整備份前的所有日志文件。通過(guò)v$archived_log和v$log_history可以
32、查看歸檔日志文件的信息。3.1.5初始化參數(shù)文件(Parameter file)initSID.ora或init.ora文件,因?yàn)榘姹镜牟灰粯?,其位置也可能?huì)不一樣。在8i中,通常位于$ORACLE_HOME/admin/Pfile下。在9i以下參數(shù)文件是一個(gè)純文本文件,可以用文本編輯器打開修改,從9i開始,多了一個(gè)叫spfile的參數(shù)文件,以二進(jìn)制方式保存。初始化文件記載了許多數(shù)據(jù)庫(kù)的啟動(dòng)參數(shù),如存,控制文件,進(jìn)程數(shù)等,在數(shù)據(jù)庫(kù)啟動(dòng)的時(shí)候加載(Nomount時(shí)加載),初始化文件記錄了很多重要參數(shù),對(duì)數(shù)據(jù)庫(kù)的性能影響很大,如果沒(méi)有它,數(shù)據(jù)庫(kù)將無(wú)法啟動(dòng)。在9i以前,對(duì)參數(shù)文件的修改,必須重新啟動(dòng)
33、數(shù)據(jù)庫(kù)才能使參數(shù)生效,從9i開始,可以用命令來(lái)修改spfile文件的容了。參數(shù)文件中的參數(shù)不是一直一成不變的,隨著版本的不同而不同。大多數(shù)參數(shù),如Db_block_size的壽命就很長(zhǎng),其它很多參數(shù)隨著版本的改變就被廢棄了。除了文檔記錄的參數(shù)外,ORACLE還支持很多部參數(shù),當(dāng)然,這些參數(shù)是不建議被使用的。通過(guò)v$parameter視圖可以查詢當(dāng)前的參數(shù)設(shè)置。3.1.6其他文件i . 密碼文件用于Oracle 的具有sysdba權(quán)限用戶的認(rèn)證,在9i以前主要指Internal用戶,從9i開始已經(jīng)取消了這個(gè)用戶。密碼文件的密碼可以通過(guò)ORAPWD命令來(lái)修改。ii. 日志文件報(bào)警日志文件(aler
34、t.log或alrt.ora)記錄數(shù)據(jù)庫(kù)啟動(dòng),關(guān)閉和一些重要的出錯(cuò)信息。數(shù)據(jù)庫(kù)管理員應(yīng)該經(jīng)常檢查這個(gè)文件,并對(duì)出現(xiàn)的問(wèn)題作出即使的反應(yīng)。你可以通過(guò)以下SQL 找到他的路徑select value from v$parameter where name =background_dump_dest,或通過(guò)參數(shù)文件獲得其路徑。后臺(tái)跟蹤文件路徑與報(bào)警文件路徑一致,記載了系統(tǒng)后臺(tái)進(jìn)程出錯(cuò)時(shí)寫入的信息。用戶跟蹤文件記載了用戶進(jìn)程出錯(cuò)時(shí)寫入的信息,一般不可能讀懂,可以通過(guò)ORACLE的TKPROF工具轉(zhuǎn)化為可以讀懂的格式。用戶跟蹤文件的路徑,你可以通過(guò)以下SQL找到他的路徑select value from
35、 v$parameter where name =user_dump_dest,或通過(guò)參數(shù)文件獲得其路徑??梢酝ㄟ^(guò)設(shè)置用戶跟蹤或dump命令來(lái)產(chǎn)生用戶跟蹤文件,一般在調(diào)試、優(yōu)化、系統(tǒng)分析中有很大的作用。第四章. ORACLE邏輯結(jié)構(gòu)(Logical structure)ORACLE邏輯結(jié)構(gòu)由一系列有相互關(guān)系的邏輯對(duì)象組成。如圖:圖五LOGICAL STRUCTURE4.1表空間(tablespace)表空間是數(shù)據(jù)庫(kù)中的基本邏輯結(jié)構(gòu),一系列數(shù)據(jù)文件的集合。一個(gè)表空間可以包含多個(gè)數(shù)據(jù)文件,但是一個(gè)數(shù)據(jù)文件只能屬于一個(gè)表空間。在8i以前,表空間的管理類型只有一種,被稱為字典管理表空間(DMT),即在
36、數(shù)據(jù)字典中管理表空間中的空間的分配。在8i以后的版本,為了減少在字典上的開銷,引入了本地管理的表空間(LMT),在該類型的表空間中,在每個(gè)數(shù)據(jù)文件中存儲(chǔ)的位圖來(lái)管理空間的分配,不再要求使用數(shù)據(jù)字典。本地管理的表空間有速度快,無(wú)碎片等眾多優(yōu)點(diǎn),建議用戶表空間都實(shí)現(xiàn)本地管理。通過(guò)v$tablespace可以查詢表空間,DBA_TABLESPACE可以查詢?cè)敿?xì)表空間信息。4.2 段(Segment)段是對(duì)象在數(shù)據(jù)庫(kù)中占用的空間,雖然段和數(shù)據(jù)庫(kù)對(duì)象是一一對(duì)應(yīng)的,但段是從數(shù)據(jù)庫(kù)存儲(chǔ)的角度來(lái)看的。一個(gè)段只能屬于一個(gè)表空間,當(dāng)然一個(gè)表空間可以有多個(gè)段。表空間和數(shù)據(jù)文件是物理存儲(chǔ)上的一對(duì)多的關(guān)系,表空間和段是
37、邏輯存儲(chǔ)上的一對(duì)多的關(guān)系,段不直接和數(shù)據(jù)文件發(fā)生關(guān)系。一個(gè)段可以屬于多個(gè)數(shù)據(jù)文件,關(guān)于段可以指定擴(kuò)展到哪個(gè)數(shù)據(jù)文件上面。段基本可以分為以下四種數(shù)據(jù)段(Data Segment)索引段(Index Segment)回滾段(Rollback Segment)臨時(shí)段(Temporary Segment)通過(guò)DBA/ALL/USER_SEGMENTS可以查詢?cè)敿?xì)的段信息。4.3區(qū)間(Extent)關(guān)于Extent的翻譯有多種解釋,有的譯作擴(kuò)展,有的譯作盤區(qū),我這里通常譯為區(qū)間。在一個(gè)段中可以存在多個(gè)區(qū)間,區(qū)間是為數(shù)據(jù)一次性預(yù)留的一個(gè)較大的存儲(chǔ)空間,直到那個(gè)區(qū)間被用滿,數(shù)據(jù)庫(kù)會(huì)繼續(xù)申請(qǐng)一個(gè)新的預(yù)留存儲(chǔ)空
38、間,即新的區(qū)間,一直到段的最大區(qū)間數(shù)(Max Extent)或沒(méi)有可用的磁盤空間可以申請(qǐng)。在ORACLE8i以上版本,理論上一個(gè)段可以無(wú)窮個(gè)區(qū)間,但是多個(gè)區(qū)間對(duì)ORACLE卻是有性能影響的,ORACLE建議把數(shù)據(jù)分布在盡量少的區(qū)間上,以減少ORACLE的管理與磁頭的移動(dòng),但是在某些特殊情況下,需要把一個(gè)段分布在多個(gè)數(shù)據(jù)文件或多個(gè)設(shè)備上,適當(dāng)?shù)募佣鄥^(qū)間數(shù)也是有很大好處的。通過(guò)DBA/ALL/USER_EXTENTS可以查詢?cè)敿?xì)的區(qū)間信息。4.4 Oracle數(shù)據(jù)塊(Block)ORACLE最基本的存儲(chǔ)單位,在建立數(shù)據(jù)庫(kù)的時(shí)候指定,雖然在初始化文件中可見(jiàn),但是不能修改。為了保證存取的速度,它是OS
39、數(shù)據(jù)塊的整數(shù)倍。ORACLE的操作都是以塊為基本單位,一個(gè)區(qū)間可以包含多個(gè)塊,如果區(qū)間大小不是塊大小的整數(shù)倍,ORACLE實(shí)際也擴(kuò)展到塊的整數(shù)倍。塊的部結(jié)構(gòu)與數(shù)據(jù)的存取方法都是比較復(fù)雜的,以表段的塊為例,從簡(jiǎn)單的結(jié)構(gòu)上劃分,可以把塊的部劃分成如下幾個(gè)部分:公用頭,表目錄,行目錄,可存取空間等。以下是一個(gè)表塊的大致結(jié)構(gòu)圖:圖六 TABLE BLOCK塊頭(BLOCK HEADER)包含著關(guān)于塊類型(表塊、索引塊等等)的信息、關(guān)于塊上活動(dòng)和過(guò)時(shí)事務(wù)信息、磁盤上筷的地址的信息。表目錄(Table directory),如果給出的話,包含著此塊中存儲(chǔ)各行的表的信息(多個(gè)表的數(shù)據(jù)可能保存在同一個(gè)塊中)。
40、行目錄(Row directory)包含在塊中發(fā)現(xiàn)的描述行的信息。以上3部分為塊的開銷(Block Overhead),其余部分為可用存儲(chǔ)空間,可以用如下查詢獲得可用空間大小。Select kvisval,kvistag,kvisdsc from sys.x$kvis;一般的8K(8192)的塊可用空間為8168PCTFREE與PCTUSED是表的兩個(gè)存取參數(shù),其實(shí)是作用在表中的塊上面的,PCTFREE與PCTUSED表示兩個(gè)百分比,默認(rèn)分別是10與40。PCTFREE表示保留該百分比的可用空間用于以后的行更新,避免行遷移。如果行數(shù)據(jù)達(dá)到PCTFREE保留的空間,該塊從FREE LIST上撤消
41、下來(lái),不再接收數(shù)據(jù)。PCTUSED表示當(dāng)行的空閑空間降低(如刪除數(shù)據(jù))到該參數(shù)指定的百分比的時(shí)候,該塊重新進(jìn)入FREE LIST,開始接收新的數(shù)據(jù)。PCTFREE與PCTUSED的配置與系統(tǒng)的優(yōu)化有一定的關(guān)系,所以要慎重,PCTFREE+PCTUSED不要大于等于100,否則將導(dǎo)致塊不斷的在FREELIST移上移下,嚴(yán)重影響性能。4.5基本表空間介紹4.5.1系統(tǒng)表空間(System)該表空間包含的數(shù)據(jù)文件稱為系統(tǒng)數(shù)據(jù)文件。該存放系統(tǒng)表和數(shù)據(jù)字典,一般不放用戶的數(shù)據(jù),但是用戶腳本,如過(guò)程,函數(shù),包等卻是保存在數(shù)據(jù)字典中的。數(shù)據(jù)字典是一些系統(tǒng)表或視圖,他存放系統(tǒng)的信息,他包括數(shù)據(jù)庫(kù)版本,數(shù)據(jù)文件
42、信息,表與索引等段信息,系統(tǒng)的運(yùn)行狀態(tài)等各種和系統(tǒng)有關(guān)的信息和用戶腳本信息。數(shù)據(jù)庫(kù)管理員可以通過(guò)對(duì)數(shù)據(jù)字典的查詢,就可以了解到Oracle的運(yùn)行狀態(tài)。查看數(shù)據(jù)數(shù)據(jù)字典的SQLselect * from dict查看部系統(tǒng)表的SQLselect * from v$fixed_view_definitionDBA對(duì)系統(tǒng)的系統(tǒng)表中的數(shù)據(jù)字典必須有一個(gè)很深刻的了解,他們必須準(zhǔn)備一些基礎(chǔ)的SQL語(yǔ)句,通過(guò)這些SQL可以立即了解系統(tǒng)的狀況和數(shù)據(jù)庫(kù)的狀態(tài),這些基本的SQL包括系統(tǒng)的剩余空間系統(tǒng)的SGA 狀態(tài)系統(tǒng)的等待用戶的權(quán)限當(dāng)前的用戶鎖緩沖區(qū)的使用狀況等在成為DBA 的道路上我們不建議你過(guò)分的依賴于OEM
43、/Quest 等優(yōu)秀的數(shù)據(jù)庫(kù)管理工具,因?yàn)樗麄儾焕谀銓?duì)數(shù)據(jù)數(shù)據(jù)字典的理解,SQL語(yǔ)句可以完成幾乎全部的數(shù)據(jù)庫(kù)管理工作。大量的讀少量的寫是該表空間的一個(gè)顯著的特點(diǎn)。4.5.2 臨時(shí)表空間(Temporary)該表空間包含的數(shù)據(jù)文件稱為臨時(shí)數(shù)據(jù)文件主要存放用戶的排序等臨時(shí)數(shù)據(jù),因?yàn)闆](méi)有辦法在一個(gè)永久表空間上開辟臨時(shí)段,所以就必須有一個(gè)臨時(shí)表空間,主要用于不能在存上進(jìn)行的排序操作。我們必須為用戶指定一個(gè)臨時(shí)表空間。臨時(shí)段占有的空間會(huì)在下次系統(tǒng)啟動(dòng)的時(shí)候全部被釋放。4.5.3 回滾段表空間(Rollback)如果數(shù)據(jù)庫(kù)進(jìn)行對(duì)數(shù)據(jù)的修改,那么就必須使用回滾段,回滾段是用來(lái)臨時(shí)存放修改前的數(shù)據(jù)(UNDO
44、)。回滾段通常都放在一個(gè)單獨(dú)的表空間上(回滾表空間),避免表空間碎片化,這個(gè)表空間包含的數(shù)據(jù)文件就是回滾數(shù)據(jù)文件。回滾段在系統(tǒng)中的作用當(dāng)數(shù)據(jù)庫(kù)進(jìn)行更新插入刪除等操作的時(shí)候,新的數(shù)據(jù)被更新到原來(lái)的數(shù)據(jù)文件,而舊的數(shù)據(jù)(Before Image)就被放到回滾段中,如果數(shù)據(jù)需要回滾,那么可以從回滾段將數(shù)據(jù)再?gòu)?fù)制到數(shù)據(jù)文件中。來(lái)完成數(shù)據(jù)的回滾。在系統(tǒng)恢復(fù)的時(shí)候,回滾段可以用來(lái)回滾沒(méi)有被commit 的數(shù)據(jù),解決系統(tǒng)的一直性讀?;貪L段在一般情況下都是大量的寫,少量讀,因此建議把回滾段單獨(dú)出來(lái)放在一個(gè)單獨(dú)的設(shè)備(如單獨(dú)的磁盤或RAID),以減少磁盤的IO爭(zhēng)用?;貪L段的工作方式一
45、個(gè)回滾表空間可以被劃分成多個(gè)回滾段.一個(gè)回滾段可以保存多個(gè)會(huì)話的數(shù)據(jù).回滾段是一個(gè)圓形的數(shù)據(jù)模型假設(shè)回滾段由4 個(gè)區(qū)間組成,他們的使用順序就是區(qū)間1區(qū)間2區(qū)間3區(qū)間4區(qū)間1。也就是說(shuō),區(qū)間是可以循環(huán)使用的,當(dāng)區(qū)間4到區(qū)間1的時(shí)候,區(qū)間1里面的會(huì)話還沒(méi)有結(jié)束, 區(qū)間4用完后就不能再用區(qū)間1,這時(shí)系統(tǒng)必須分配區(qū)間5,來(lái)繼續(xù)為其他會(huì)話服務(wù)服務(wù)。這也就是為什么回滾段在大事務(wù)的情況下會(huì)不斷“漲大”的原因,回滾段的擴(kuò)充是影響性能的,要盡量避免。這是一個(gè)回滾段從4個(gè)區(qū)間簡(jiǎn)單的擴(kuò)充到5個(gè)區(qū)間的例子:圖七 ROLLBACK SEGMENT我們分析一個(gè)Update 語(yǔ)句的完成1、用戶提交一個(gè)Update 語(yǔ)句2、
46、Server Process 檢查存緩沖.如果沒(méi)有該數(shù)據(jù)塊的緩沖,則從磁盤讀入i. 如果沒(méi)有存的有效空間,DBWR被啟動(dòng)將未寫入磁盤的臟緩沖寫入磁盤ii. 如果有有效空間,則讀入3、在緩沖更新數(shù)據(jù)i. 申請(qǐng)一個(gè)回滾段入口,將舊數(shù)據(jù)寫如回滾段ii. 加鎖并更新數(shù)據(jù)iii. 并在同時(shí)將修改記錄在Redo log buffer中4、用戶提交一個(gè)Commit 語(yǔ)句i. SCN增加ii. 將Redo log buffer 寫入Redo log fileiii. 返回用戶Commit 完成4.5.4用戶表空間(User)其包含的數(shù)據(jù)文件稱為用戶數(shù)據(jù)文件一般是由用戶建立,來(lái)存取用戶數(shù)據(jù)的表空間,一般有兩類常
47、見(jiàn)的用戶型數(shù)據(jù),數(shù)據(jù)和索引,一般來(lái)說(shuō),如果條件許可的話,可以考慮放在不同的磁盤上。第五章. 常見(jiàn)問(wèn)題1、實(shí)例和SID的關(guān)系是什么?經(jīng)常有人問(wèn)SID 是什么?在Oracle 系統(tǒng)中SID 是一個(gè)經(jīng)常出現(xiàn)的變量,如環(huán)境變量ORACLE_SID,初始化文件initSID.ora,那究竟什么是SID 呢?其實(shí)SID 就是Oracle 實(shí)例的標(biāo)識(shí),不同的SID 對(duì)應(yīng)不同的存緩沖(SGA)和不同的后臺(tái)進(jìn)程。這樣一來(lái)我們就可以得當(dāng)在一臺(tái)物理的服務(wù)器上可以有多個(gè)SID 的數(shù)據(jù)庫(kù)實(shí)例。2、Oracle數(shù)據(jù)庫(kù)和實(shí)例的關(guān)系是什么?數(shù)據(jù)庫(kù)是由物理文件和存取數(shù)據(jù)文件的實(shí)例組成,當(dāng)存取數(shù)據(jù)文件的實(shí)例是一個(gè)的時(shí)候,數(shù)據(jù)庫(kù)被
48、稱做單節(jié)點(diǎn)數(shù)據(jù)庫(kù)。這是我們看到的最多的數(shù)據(jù)庫(kù)形式。當(dāng)然還有一種多節(jié)點(diǎn)數(shù)據(jù)庫(kù),就是一個(gè)以上的實(shí)例共同訪問(wèn)一個(gè)數(shù)據(jù)庫(kù)(或者說(shuō)共同訪問(wèn)一組數(shù)據(jù)文件),更好的提供穩(wěn)定性和并行處理能力。這在8i中被稱為OPS(Oracle Parallel Server ),在Oracle9i 中被稱為RAC(real application cluster)。在這種數(shù)據(jù)庫(kù)中。兩個(gè)/多個(gè)實(shí)例分別在不同服務(wù)器上,所有Oracle 數(shù)據(jù)文件在共享的磁盤陣列上,多個(gè)服務(wù)器上的實(shí)例可以同時(shí)工作,他們通過(guò)一個(gè)部的網(wǎng)絡(luò)進(jìn)行通信。如果一臺(tái)服務(wù)器不能提供服務(wù)的話,另一臺(tái)會(huì)接管它的工作,特別是在關(guān)鍵的業(yè)務(wù)有很大的潛力。3、在運(yùn)行的數(shù)據(jù)庫(kù)
49、中數(shù)據(jù)文件中是不是可能存在沒(méi)有被提交的數(shù)據(jù)?這是可能存在的,因?yàn)橛脩魯?shù)據(jù)文件的數(shù)據(jù)是由DBWR寫入的,DBWR是一個(gè)很底層的后臺(tái)進(jìn)程,不負(fù)責(zé)與用戶交互。用戶的交互是由LGWR完成的。4、在問(wèn)題3中,如果存在沒(méi)有寫入的數(shù)據(jù),那么機(jī)器突然斷電,數(shù)據(jù)完整性會(huì)不會(huì)損壞?不會(huì)的,因?yàn)閿?shù)據(jù)庫(kù)的完整性是LGWR來(lái)保證的,而且ORACLE保證了DBWR寫入數(shù)據(jù)文件的任何修改已經(jīng)被記錄在重做日志文件中。當(dāng)系統(tǒng)再次啟動(dòng)的時(shí)候,通過(guò)讀取重做日志文件就可以知道那些數(shù)據(jù)沒(méi)有被提交。這時(shí)候ORACLE 會(huì)自動(dòng)回滾那些數(shù)據(jù)。所以說(shuō)聯(lián)機(jī)日志的損壞,特別是當(dāng)前聯(lián)機(jī)日志的損壞,對(duì)數(shù)據(jù)庫(kù)的影響是巨大的,可能會(huì)導(dǎo)致數(shù)據(jù)庫(kù)的不完整。5
50、、數(shù)據(jù)文件損壞會(huì)丟失數(shù)據(jù)嗎?可以這么說(shuō),如果你有備份和歸檔,就不會(huì)。因?yàn)樗袑?duì)數(shù)據(jù)修改的記錄都在重做日志中有記錄,所以不會(huì)丟失數(shù)據(jù),你只要恢復(fù)以前的備份再用歸檔日志文件恢復(fù)和當(dāng)前的在線重做日志就可以恢復(fù)所有數(shù)據(jù)。6、在線重做日志損壞會(huì)丟失數(shù)據(jù)嗎?以上說(shuō)了,在線日志對(duì)數(shù)據(jù)庫(kù)的損壞是極大的,所以不僅可能丟失數(shù)據(jù),還可能引起數(shù)據(jù)庫(kù)的不同步。在重做日志中的所有commit的記錄都會(huì)丟失,這也是Oracle 為什么要對(duì)在線重做日志文件做鏡像的原因。任何的數(shù)據(jù)丟失都是不允許的。7、我在事務(wù)能不能指定不寫回滾段?不可以的,寫回滾段是ORACLE保證一致性讀和事務(wù)一致性的根本?;貪L段是高寫入段,建議把它放到單
51、獨(dú)的設(shè)備上來(lái)。對(duì)于DDL語(yǔ)句,如DROP,TRUNCATE卻可以不寫回滾段(沒(méi)有UNDO信息),所以對(duì)于整個(gè)表的刪除,如果數(shù)據(jù)量比較大,建議用Truncate Table的方法。不寫聯(lián)機(jī)日志也是不可能的,但可以在某些特定操作中,可以寫很少的聯(lián)機(jī)日志,如以NOLOGGING的方式通過(guò)Create table tablename as select創(chuàng)建表,或以Append的方式Insert數(shù)據(jù)到表,或直接載入等操作。第六章. 小結(jié)這里,我們了解了實(shí)例和數(shù)據(jù)庫(kù)的關(guān)系,一個(gè)數(shù)據(jù)庫(kù)可以有多個(gè)實(shí)例,但是一個(gè)實(shí)例卻不可能對(duì)應(yīng)多個(gè)數(shù)據(jù)庫(kù),在一般的情況下,我們都是用的單節(jié)點(diǎn)數(shù)據(jù)庫(kù),即一個(gè)實(shí)例僅僅對(duì)應(yīng)一個(gè)數(shù)據(jù)庫(kù)。
52、我們了解了ORACLE實(shí)例的組成,包括存和后臺(tái)進(jìn)程,進(jìn)一步解釋了SGA的組成與SGA的作用,并分析了語(yǔ)句重用的好處。在后臺(tái)進(jìn)程中,重要的闡述了DBWR與LGWR,其中DBWR是一個(gè)底層的由ORACLE控制的后臺(tái)進(jìn)程,而LGWR負(fù)責(zé)與用戶交互.在ORACLE數(shù)據(jù)庫(kù)中,我們重要闡述了數(shù)據(jù)庫(kù)的物理與邏輯結(jié)構(gòu),在物理結(jié)構(gòu)中,需要注意四類以下文件:控制文件,聯(lián)機(jī)日志,數(shù)據(jù)文件與參數(shù)文件。在邏輯結(jié)構(gòu)中,需要清楚每個(gè)邏輯結(jié)構(gòu)的關(guān)系,從大到小的順序?yàn)椋罕砜臻g段區(qū)間塊。第二部分:ORACLE9i新特性一、創(chuàng)建數(shù)據(jù)庫(kù)9i創(chuàng)建數(shù)據(jù)庫(kù)的工具改名為DBCA,也可以通過(guò)腳本更輕松容易的創(chuàng)建數(shù)據(jù)庫(kù),如:create dat
53、abase $ORACLE_SIDuser sys identified by sysuser system identified by systemlogfile group 1 ($ORACLE_BASE/oradata/$ORACLE_SID/redo01.log) size 10M,group 2 ($ORACLE_BASE/oradata/$ORACLE_SID/redo02.log) size 10M,group 3 ($ORACLE_BASE/oradata/$ORACLE_SID/redo03.log) size 10Mmaxlogfiles 5maxlogmembers 5m
54、axloghistory 1maxdatafiles 254 maxinstances 1archivelogcharacter set ZHS16GBKnational character set AL16UTF16datafile $ORACLE_BASE/oradata/$ORACLE_SID/system01.dbf size 300Mdefault temporary tablespace tbstemp tempfile$ORACLE_BASE/oradata/$ORACLE_SID/temp01.dbf size 500Mundo tablespace tbsundo datafile$ORACLE_BASE/oradata/$ORACLE_SID/undo01.dbf size 500M;其特點(diǎn)為使用專用的回滾和臨時(shí)表空間,而不象Oracle 8i中的那樣,回滾和臨時(shí)表空間與普通表空間沒(méi)有差異,這樣既簡(jiǎn)化了配置也有利于效能提高。要注意臨時(shí)表空間的指定文件關(guān)鍵字是tempfile而不是通用的datafile,而且臨時(shí)表空間的存儲(chǔ)選項(xiàng)由Oracle系統(tǒng)決定。同樣回滾表空間也是由Oracle系統(tǒng)決定,不必人工干預(yù)。二、二進(jìn)制
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- NB/T 11516-2024臥式振動(dòng)離心機(jī)
- 課外班報(bào)班合同協(xié)議
- 設(shè)計(jì)裝修酒店合同協(xié)議
- 購(gòu)買船舶協(xié)議合同協(xié)議
- 設(shè)備合同違約賠償協(xié)議
- 賬戶轉(zhuǎn)讓協(xié)議合同協(xié)議
- 訂購(gòu)合同協(xié)議書范本
- 購(gòu)買特定車位合同協(xié)議
- 超市會(huì)員促銷協(xié)議合同
- 《第02節(jié) 核衰變與核反應(yīng)方程》教學(xué)設(shè)計(jì)1
- 2025年中國(guó)熔融鹽儲(chǔ)能行業(yè)市場(chǎng)占有率及投資前景預(yù)測(cè)分析報(bào)告
- 小學(xué)語(yǔ)文教學(xué):深度融入過(guò)程性評(píng)價(jià)
- 唐山2025年唐山市市直事業(yè)單位招聘277人筆試歷年參考題庫(kù)附帶答案詳解
- 血液透析室的管理規(guī)范
- 四年級(jí)上冊(cè)信息技術(shù)教案-《龜兔賽跑》教學(xué)設(shè)計(jì)+說(shuō)課稿-人教(新版) (2份打包)
- 肺癌的手術(shù)治療方案
- 2025年中考數(shù)學(xué)總復(fù)習(xí)《四邊形的證明題》專項(xiàng)測(cè)試卷(附答案)
- 踝關(guān)節(jié)骨折中醫(yī)護(hù)理方案
- 統(tǒng)編版語(yǔ)文七年級(jí)下第18課《井岡翠竹》公開課一等獎(jiǎng)創(chuàng)新教學(xué)設(shè)計(jì)
- 山西地質(zhì)集團(tuán)招聘筆試真題2024
- 【MOOC】人工智能導(dǎo)論-福建師范大學(xué) 中國(guó)大學(xué)慕課MOOC答案
評(píng)論
0/150
提交評(píng)論