ORACLE體系結(jié)構(gòu)詳解_第1頁
ORACLE體系結(jié)構(gòu)詳解_第2頁
ORACLE體系結(jié)構(gòu)詳解_第3頁
ORACLE體系結(jié)構(gòu)詳解_第4頁
ORACLE體系結(jié)構(gòu)詳解_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、ORACLE體系結(jié)構(gòu)(Architecture of ORACLE)第一部分: ORACLE8i 體系結(jié)構(gòu)第一章 . 概要在本章里你可以了解以下內(nèi)容1、理解 ORACLE 實例的組成2、理解 ORACLE 數(shù)據(jù)庫的組成3、理解 ORACLE 內(nèi)存結(jié)構(gòu)的組成4、理解后臺進(jìn)程的作用與分工5、理解數(shù)據(jù)庫的物理文件與對應(yīng)的邏輯結(jié)構(gòu)6、理解 ORACLE 的整體構(gòu)架第二章 . 理解 ORACLE 實例2.1 ORACLE SERVERORACLE 是一個可移植的數(shù)據(jù)庫它在相關(guān)的每一個平臺上都可以使用,即所謂的 跨平臺特性。在不同的操作系統(tǒng)上也略有差別,如在 UNIX/LINUX 上, ORACLE 是多

2、個進(jìn) 程實現(xiàn)的,每一個主要函數(shù)都是一個進(jìn)程;而在 Windows 上,則是一個單一進(jìn)程,但是在 該進(jìn)程中包含多個線程。但是從整體構(gòu)架上來看, ORACLE 在不同的平臺上是一樣的,如 內(nèi)存結(jié)構(gòu)、后臺進(jìn)程、數(shù)據(jù)的存儲。一個運(yùn)行著的 ORACLE 數(shù)據(jù)庫就可以看成是一個 ORACLE SERVER ,該 SERVER 由數(shù) 據(jù)庫(Database)和實例(Instanee)組成,在一般的情況下一個 ORACLE SERVER包含一個實例 和一個與之對應(yīng)的數(shù)據(jù)庫,但是在特殊情況下,如 8i的OPS, 9i的RAC, 一個SERVER中 一個數(shù)據(jù)庫可以對應(yīng)多個實例。一系列物理文件(數(shù)據(jù)文件,控制文件,

3、聯(lián)機(jī)日志等)的集合或與之對應(yīng)的邏輯結(jié)構(gòu) (表空間,段等)被稱為數(shù)據(jù)庫 ,簡單的說,就是一系列與磁盤有關(guān)系的物理文件的組成。ORACLE內(nèi)存結(jié)構(gòu)和后臺進(jìn)程被成為數(shù)據(jù)庫的實例,一個實例最多只能安裝(Mount)和打開(Ope n)在一個數(shù)據(jù)庫上,負(fù)責(zé)數(shù)據(jù)庫的相應(yīng)操作并與用戶交互。實例與數(shù)據(jù)庫的關(guān)系如下圖所示:I r r-Physical 日肚abase. T ru : _urrYcaory structuro(Mtn file<CcntTx*l fi lRiido (x)fi TMcDht rilxiseDat fileiDhui file2Dstu file3frats file4Logi

4、calrial iihiscsrruntuTC圖一 ORACLE SERVERSystem lab.t.sPdLeTiihlLku lH.kisc2.2 ORACLE內(nèi)存結(jié)構(gòu)(Memory structure)2.2.1內(nèi)存結(jié)構(gòu)的組成Oracle內(nèi)存結(jié)構(gòu)主要可以分共享內(nèi)存區(qū)與非共享內(nèi)存區(qū),共享內(nèi)存區(qū)主要包含 SGA(System Global Area),非共享內(nèi)存區(qū)主要由PGA(Program Global Area)組成,可以用如下圖形表示。SharedXo-SharedmemorySGAbuffer 成飆 hiRM” ! og bu t fcrLa rge pouj (upt 1 urr

5、nl)Jhy poo' iopr oml)Shared pool'1 Urlf、 < -'df rir P:l圖二 ORACLE MEMOERY STRUCTRUE2.2.2 全局共享區(qū) System Global Area(SGA)System Global Area是一塊巨大的共享內(nèi)存區(qū)域,他被看做是 Oracle數(shù)據(jù)庫的一個大緩沖池,這里的數(shù)據(jù)可以被ORACLE的各個進(jìn)程共用。其大小可以通過如下語句查看:SQL> select * from v$sga;NAME V ALUEFixed Size 39816Variable Size 259812784

6、Database Buffers 1.049E+09Redo Buffers 327680更詳細(xì)的信息可以參考V$sgastat、V$buffer_pool主要包括以下幾個部分:2.2.2.1 共享池(Shared pool)共享池是SGA中最關(guān)鍵的內(nèi)存片段,特另憂在性能和可伸縮性上。一個太小的共享池 會扼殺性能,使系統(tǒng)停止,太大的共享池也會有同樣的效果,將會消耗大量的 CPU 來管理 這個共享池。不正確的使用共享池只會帶來災(zāi)難。共享池主要又可以分為以下兩個部分:1、 SQL 語句緩沖 (Library Cache) 當(dāng)一個用戶提交一個 SQL 語句, Oracle 會將這句 SQL 進(jìn)行分析

7、 (parse) ,這個過程類似 于編譯,會耗費(fèi)相對較多的時間。在分析完這個SQL, Oracle 會把他的分析結(jié)果給保存在Shared pool 的 Library Cache 中,當(dāng)數(shù)據(jù)庫第二次執(zhí)行該 SQL 時, Oracle 自動跳過這個分析 過程,從而減少了系統(tǒng)運(yùn)行的時間。這也是為什么第一次運(yùn)行的 SQL 比第二次運(yùn)行的 SQL 要慢一點(diǎn)的原因。下面舉例說明 parse 的時間SQL>StartupSQL> select count(*) from usertable;COUNT(*)243Elapsed: 00:00:00.08這是在 Share_pool 和 Data

8、 buffer 都沒有數(shù)據(jù)緩沖區(qū)的情況下所用的時間 SQL> alter system flush SHARED_POOL;System 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 的時間差上可以看出該 SQL 的 Parse 時間約為 00:00:00.02對于保存在

9、共享池中的 SQL語句,可以從V$Sqltext、v$Sqlarea中查詢到,對于編程者來說, 要盡量提高語句的重用率, 減少語句的分析時間。 一個設(shè)計的差的應(yīng)用程序可以毀掉整個數(shù) 據(jù)庫的Share pool,提高SQL語句的重用率必須先養(yǎng)成良好的變成習(xí)慣,盡量使用Bind變量。2、數(shù)據(jù)字典緩沖區(qū) (Data Dictionary Cache) 顯而易見,數(shù)據(jù)字典緩沖區(qū)是 ORACLE 特地為數(shù)據(jù)字典準(zhǔn)備的一塊緩沖池, 供 ORACLE 內(nèi)部使用,沒有什么可以說的。2.2.2.2塊緩沖區(qū)高速緩存 (Database Buffer Cache)這些緩沖是對應(yīng)所有數(shù)據(jù)文件中的一些被使用到的數(shù)據(jù)塊。

10、 讓他們能夠在內(nèi)存中進(jìn)行操 作。在這個級別里沒有系統(tǒng)文件 ,,戶數(shù)據(jù)文件,臨時數(shù)據(jù)文件,回滾段文件之分。也就是 任何文件的數(shù)據(jù)塊都有可能被緩沖。數(shù)據(jù)庫的任何修改都在該緩沖里完成,并由DBWR 進(jìn)程將修改后的數(shù)據(jù)寫入磁盤。這個緩沖區(qū)的塊基本上在兩個不同的列表中管理。一個是塊的“臟”表 (Dirty List) ,需 要用數(shù)據(jù)庫塊的書寫器 (DBWR) 來寫入,另外一個是不臟的塊的列表 (LRU List) ,一般的情 況下,是使用最近最少使用 (Least Recently Used,LRU) 算法來管理。塊緩沖區(qū)高速緩存又可以細(xì)分為以下三個部分( Default pool,Keep pool,

11、Recycle pool )。 如果不是人為設(shè)置初始化參數(shù) (Init.ora) , ORACLE 將默認(rèn)為 Default pool 。由于操作系統(tǒng)尋址能力的限制,不通過特殊設(shè)置,在 32 位的系統(tǒng)上,塊緩沖區(qū)高速緩存最大可以達(dá)到1.7G,在64位系統(tǒng)上,塊緩沖區(qū)高速緩存最大可以達(dá)到10G。2.2.2.3重做日志緩沖區(qū) (Redo log buffer)重做日志文件的緩沖區(qū), 對數(shù)據(jù)庫的任何修改都按順序被記錄在該緩沖, 然后由 LGWR 進(jìn)程將它寫入磁盤。這些修改信息可能是 DML 語句,如 (Insert,Update,Delete) ,或 DDL 語 句,如 (Create,Alter,

12、Drop 等 )。重做日志緩沖區(qū)的存在是因為內(nèi)存到內(nèi)存的操作比較內(nèi)存到硬盤的速度快很多,所以重作日志緩沖區(qū)可以加快數(shù)據(jù)庫的操作速度, 但是考慮的數(shù)據(jù)庫的一致性與可恢復(fù)性, 數(shù)據(jù)在 重做日志緩沖區(qū)中的滯留時間不會很長。 所以重作日志緩沖區(qū)一般都很小, 大于 3M 之后的 重作日志緩沖區(qū)已經(jīng)沒有太大的實際意義。222.4 Java程序緩沖區(qū)(Java Pool)Java的程序區(qū),Oracle 81以后,Oracle在內(nèi)核中加入了對 Java的支持。該程序緩沖區(qū) 就是為Java程序保留的。如果不用 Java程序沒有必要改變該緩沖區(qū)的默認(rèn)大小。2.2.2.5 大池(Large Pool)大池的得名不是

13、因為大,而是因為它用來分配大塊的內(nèi)存,處理比共享池更大的內(nèi)存, 在 8.0 開始引入。下面對象使用大池:1、MTS 在 SGA 的 Large Pool 中分配 UGA2、 語句的并行查詢(Parallel Executeion of Statements)允許進(jìn)程間消息緩沖區(qū)的分 配,用來協(xié)調(diào)并行查詢服務(wù)器3、備份(Backup)用于RMAN磁盤I/O緩存2.2.3程序共享區(qū) Program Global Area(PGA)Program Global Area(PGA)是用來保存與用戶進(jìn)程相關(guān)的內(nèi)存段,PGA總是由進(jìn)程或線程在本地分配,其它進(jìn)程與線程無法訪問。User Global Are

14、a(UGA) 實際上是會話的狀態(tài), 它是會話必須始終能夠得到的內(nèi)存。 對于 專用服務(wù)器進(jìn)程,UGA在PGA中分配。對于多線程進(jìn)程,UGA在Large pool中分配。PGA/UGA 一般保存了用戶的變量、 權(quán)限、堆棧、排序(Sort)空間等信息。影響PGA/UGA 最大的也就是 Sort 信息,由初始化參數(shù) sort_area_size 決定,由于 Sort 信息分配在 UGA 中, 所以在共享服務(wù)器中能更好的利用內(nèi)存。2.3 后臺進(jìn)程 (Background process)后臺進(jìn)程是Oracle的程序,用來管理數(shù)據(jù)庫的讀寫,恢復(fù)和監(jiān)視等工作。Server Process 主要是通過他和 u

15、ser process進(jìn)行聯(lián)系和溝通,并由他和user process進(jìn)行數(shù)據(jù)的交換。在Unix機(jī)器上,Oracle后臺進(jìn)程相對于操作系統(tǒng)進(jìn)程,也就是說,一個Oracle后臺進(jìn)程將啟動一個操作系統(tǒng)進(jìn)程;在Windows機(jī)器上,Oracle后臺進(jìn)程相對于操作系統(tǒng)線程,打開任務(wù)管理器,我們只能看到一個ORACLE.EXE的進(jìn)程,但是通過另外的工具,就可以看到包含在這里進(jìn)程中的線程。后臺進(jìn)程與其它結(jié)構(gòu)的關(guān)系如圖所示:Cuiltlnul ri HIkiin filenUserprocessRFCObuffer cachrShared poolhuffpTDedicatedserverSGAbhared

16、serverprocessR(?qllcstqueueRgp.iiM queue血 v CeIJ spd tcherIJ spd tcherprocessUserprorrss圖三 ORACLE BACKGROUP PROCESS在Unix上可以通過如下方法查看后臺進(jìn)程:ps -ef | grep ora_# ps -ef | grep ora_ | grep XCLUA Toracle 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 ?

17、 2:42 ora_smon_SIDoracle 29442 1 0 Sep 02 ? 3:25 ora_lgwr_SIDoracle 29427 1 0 Sep 02 ? 0:01 ora_pmon_SIDOracle系統(tǒng)有5個基本進(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將修改過的數(shù)據(jù)緩沖區(qū)的數(shù)據(jù)寫入對應(yīng)數(shù)據(jù)文件 維護(hù)系統(tǒng)內(nèi)的空緩沖區(qū)這里指出幾個容易錯誤的概念:當(dāng)一個更新提交后,DBWR把數(shù)據(jù)寫到磁盤并返回給用戶

18、提交完成。 DBWR會觸發(fā)CKPT后臺進(jìn)程 DBWR不會觸發(fā)LGWR進(jìn)程上面的概念都是錯誤的。DBWR 是一個很底層的工作進(jìn)程,他批量的把緩沖區(qū)的數(shù)據(jù)寫入磁盤。和任何前臺用 戶的進(jìn)程幾乎沒有什么關(guān)系,也不受他們的控制。至于 DBWR 會不會觸發(fā) LGWR 和 CKPT 進(jìn)程,我們將在下面幾節(jié)里討論。DBWR 工作的主要條件如下 DBWR 超時系統(tǒng)中沒有多的空緩沖區(qū)用來存放數(shù)據(jù) CKPT 進(jìn)程觸發(fā) DBWR 等2.3.2 日志寫進(jìn)程 LGWR將重做日志緩沖區(qū)的數(shù)據(jù)寫入重做日志文件, LGWR 是一個必須和前臺用戶進(jìn)程通信 的進(jìn)程。 當(dāng)數(shù)據(jù)被修改的時候, 系統(tǒng)會產(chǎn)生一個重做日志并記錄在重做日志緩沖

19、區(qū)內(nèi)。這個重做日志可以類似的認(rèn)為是以下的一個結(jié)構(gòu) :SCN=000000001000數(shù)據(jù)塊 ID對象 ID=0801數(shù)據(jù)行 =02 修改后的數(shù)據(jù) =0011 提交的時候, LGWR 必須將被修改的數(shù)據(jù)的重做日志緩沖區(qū)內(nèi)數(shù)據(jù)寫入日志數(shù)據(jù)文件, 然后再通知前臺進(jìn)程提交成功,并由前臺進(jìn)程通知用戶。從這點(diǎn)可以看出LGWR 承擔(dān)了維護(hù)系統(tǒng)數(shù)據(jù)完整性的任務(wù)。LGWR 工作的主要條件如下用戶提交有 1/3 重做日志緩沖區(qū)未被寫入磁盤 有大于 1M 重做日志緩沖區(qū)未被寫入磁盤 超時 DBWR 需要寫入的數(shù)據(jù)的 SCN 號大于 LGWR 記錄的 SCN 號, DBWR 觸發(fā) LGWR寫入2.3.3 系統(tǒng)監(jiān)控 S

20、MON工作主要包含清除臨時空間在系統(tǒng)啟動時,完成系統(tǒng)實例恢復(fù)聚結(jié)空閑空間從不可用的文件中恢復(fù)事務(wù)的活動 OPS中失敗節(jié)點(diǎn)的實例恢復(fù)清除OBJ$表縮減回滾段使回滾段脫機(jī)2.3.4 進(jìn)程監(jiān)控 PMON主要用于清除失效的用戶進(jìn)程,釋放用戶進(jìn)程所用的資源。如PMON 將回滾未提交的工作,釋放鎖,釋放分配給失敗進(jìn)程的 SGA 資源。2.3.5 檢查點(diǎn)進(jìn)程 CKPT同步數(shù)據(jù)文件,日志文件和控制文件,由于 DBWR/LGWR 的工作原理,造成了數(shù)據(jù)文 件,日志文件,控制文件的不一至,這就需要 CKPT 進(jìn)程來同步。 CKPT 會更新數(shù)據(jù)文件 / 控制文件的頭信息。CKPT 工作的主要條件如下在日志切換的時候

21、數(shù)據(jù)庫用 immediate ,transaction , normal 選項 shutdown 數(shù)據(jù)庫的時候根據(jù)初始話文件 LOG_CHECKPOINT_INTERV AL 、LOG_CHECKPOINT_TIMEOUT 、 FAST_START_IO_TARGET 的設(shè)置的數(shù)值來確定用戶觸發(fā)以下進(jìn)程的啟動需要手工配置2.3.6 歸檔進(jìn)程 ARCH當(dāng)數(shù)據(jù)庫以歸檔方式運(yùn)行的時候, Oracle 會啟動 ARCH 進(jìn)程,當(dāng)重做日志文件被寫滿 時,日志文件進(jìn)行切換,舊的重做日志文件就被 ARCH 進(jìn)程復(fù)制到一個 /多個特定的目錄 / 遠(yuǎn)程機(jī)器。這些被復(fù)制的重做日志文件被叫做歸檔日志文件。2.3.7

22、 分布式恢復(fù) RECO負(fù)責(zé)解決分布事物中的故障。 Oracle 可以連接遠(yuǎn)程的多個數(shù)據(jù)庫, 當(dāng)由于網(wǎng)絡(luò)問題, 有 些事物處于懸而未決的狀態(tài)。 RECO 進(jìn)程試圖建立與遠(yuǎn)程服務(wù)器的通信,當(dāng)故障消除后, RECO 進(jìn)程自動解決所有懸而未決的會話。2.3.8 服務(wù)進(jìn)程 Server Process服務(wù)進(jìn)程的分類專用服務(wù)進(jìn)程(Dedicated Server Process) 一個服務(wù)進(jìn)程對應(yīng)一個用戶進(jìn)程共享服務(wù)進(jìn)程(MultiTreaded Server Process) 一個服務(wù)進(jìn)程對應(yīng)多個用戶進(jìn)程,輪流為用戶進(jìn)程服務(wù)。2.3.9 用戶進(jìn)程 User Process在客戶端,負(fù)責(zé)將用戶的 SQL

23、語句傳遞給服務(wù)進(jìn)程,并從服務(wù)器段拿回查詢數(shù)據(jù)。2.4 一個貫穿數(shù)據(jù)庫全局的概念 系統(tǒng)改變號 SCN(SystemChange Number)系統(tǒng)改變號, 一個由系統(tǒng)內(nèi)部維護(hù)的序列號。 當(dāng)系統(tǒng)需要更新的時候自動增加, 他是系 統(tǒng)中維持?jǐn)?shù)據(jù)的一致性和順序恢復(fù)的重要標(biāo)志。運(yùn)行以下語句可以得到系統(tǒng) SCN 號SQL> select max(ktuxescnw * power(2, 32) + ktuxescnb) scn from x$ktuxe;SCN31014SCN 有如下特點(diǎn) :a. 查詢語句不會使 SCN 增加,就算是同時發(fā)生的更新,數(shù)據(jù)庫內(nèi)部對應(yīng)的 SCN 也是 不同的。這樣一來就保證

24、了數(shù)據(jù)恢復(fù)時候的順序。b. 維持?jǐn)?shù)據(jù)的一致性,當(dāng)一個查詢執(zhí)行的時候,他會先從系統(tǒng)中得到一個當(dāng)前的SCN號,在他查找數(shù)據(jù)的同時, 他會檢查每個數(shù)據(jù)行和他對應(yīng)的 SCN 號,只有那些不比他的 SCN 號大的行才能從對應(yīng)用戶數(shù)據(jù)文件的緩沖區(qū)內(nèi)取出,而那些大于他SCN 號的行,就應(yīng)該從回滾段數(shù)據(jù)文件的緩沖中取出。實例分析 :一個查詢返回以下 5 行ID Name1 ShangHai2 Beijing3 Gugangzhou4 ShenZhen5 HanZhou用戶A從12:00開始運(yùn)行,到12:05結(jié)束在12:01用戶B執(zhí)行了一條 Update語句,更 新了 ID 是 2 的那條記錄把 Beijing

25、 該成了 Tianjing. 并提交,這時候用戶 A 的那個查詢是不 會出現(xiàn)Tianjing的記錄。12:00查詢時候的SCN是N然后用戶B的更新使得系統(tǒng)的 SCN變 成 N+1 當(dāng)用戶 A 查詢到 ID=2 的記錄的時候發(fā)現(xiàn)他的 SCN 已經(jīng)大于查詢開始時候的 SCN , 他就會在回滾段數(shù)據(jù)緩沖中找到 SCN=N 的那條記錄,并把它返回。第三章 . ORACLE 數(shù)據(jù)庫( Database)3.1 物理結(jié)構(gòu)物理操作系統(tǒng)文件的集合 .3.1.1 控制文件 ( Control files)參數(shù)文件 init.ora 記錄了控制文件的位置,控制文件是一個非常小的二進(jìn)制文件,最大 可以增長到 64M

26、B ,控制文件包括如下主要信息數(shù)據(jù)庫的名字,檢查點(diǎn)信息,數(shù)據(jù)庫創(chuàng)建的時間戳所有的數(shù)據(jù)文件,聯(lián)機(jī)日志文件,歸檔日志文件信息備份信息等有了這些信息, Oracle 就知道那些文件是數(shù)據(jù)文件, 現(xiàn)在的重做日志文件是哪些, 這些 都是系統(tǒng)啟動和運(yùn)行的基本條件,所以他是 Oracle 運(yùn)行的根本。如果沒有控制文件系統(tǒng)是 不可能啟動的??刂莆募欠浅V匾模话悴捎枚鄠€鏡相復(fù)制來保護(hù)控制文件,或采用 RAID 來保護(hù)控制文件??刂莆募膩G失,將使數(shù)據(jù)庫的恢復(fù)變的很復(fù)雜??刂莆募畔⒖梢詮?V$Controlfile 中查詢獲得3.1.2數(shù)據(jù)文件( Data files)數(shù)據(jù)文件的詳細(xì)信息記載在控制文件中可

27、以通過如下方式查看數(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ù)。 按照使用上的不同, 可以把數(shù)據(jù)文件分成如下幾類:系統(tǒng)數(shù)據(jù)文件回滾數(shù)據(jù)文件臨時數(shù)據(jù)文件用戶

28、數(shù)據(jù)文件以上各類文件分別屬于不同性質(zhì)的表空間, 在以下的邏輯結(jié)構(gòu)中, 將進(jìn)一步說明該類型文件的作用。3.1.3重做日志文件(Redo file$用戶對數(shù)據(jù)庫進(jìn)行的任何操作都會記錄在重做日志文件。在了解重做日志之前必須了解重做日志的兩個概念,重做日志組和重做日志組成員(Member),個數(shù)據(jù)庫中至少要有兩個日志組文件,一組寫完后再寫另一組, 即輪流寫。每個日志組中至少有一個日志成員,一個日志組中的多個日志成員是鏡相關(guān)系,有利于日志文件的保護(hù), 因為日志文件的損壞, 特別是當(dāng)前聯(lián)機(jī)日志的損壞,對數(shù)據(jù)庫的影響是巨大的。聯(lián)機(jī)日志組的交換過程叫做切換,需要特別注意的是,日志切換在一個優(yōu)化效果不好的數(shù)據(jù)庫

29、中會引起臨時的“掛起”。掛起大致有兩種情況:在歸檔情況下,需要?dú)w檔的日志來不及歸檔,而聯(lián)機(jī)日志又需要被重新利用檢查點(diǎn)事件還沒有完成(日志切換引起檢查點(diǎn)),而聯(lián)機(jī)日志需要被重新利用解決這種問題的常用手段是:i. 增加日志組ii. 增大日志文件成員大小一個包含三個日志組,每個日志組兩個成員的聯(lián)機(jī)日志組成與運(yùn)行大致如圖所示:fog sequenceLog sequenceLog sequencel,4.7p 102,5, 11N&9.12圖四 REDO LOG通過v$log可以查看日志組,v$logfile可以查看具體的成員文件。3.1.4 歸檔日志文件(Archived filesOrac

30、le可以運(yùn)行在兩種模式之中,歸檔模式和不歸檔模式。如果不用歸檔模式,當(dāng)然, 你就不會有歸檔日志,但是,你的系統(tǒng)將不會是一個實用系統(tǒng),特別是不能用于生產(chǎn)系統(tǒng), 因為你可能會丟失數(shù)據(jù)。但是在歸檔模式中, 為了保存用戶的所有修改, 在重做日志文件切換后和被覆蓋之間系統(tǒng)將他們另外保存成一組連續(xù)的文件系列,該文件系列就是歸檔日志文件。有人或許會說,歸檔日志文件占領(lǐng)我大量的硬盤空間,其實,具體想一想,你是愿意浪費(fèi)一點(diǎn)磁盤空間來保護(hù)你的數(shù)據(jù),還是愿意丟失你的數(shù)據(jù)呢?顯而義見,我們需要保證我們 的數(shù)據(jù)的安全性。 其實, 歸檔并不是一直占領(lǐng)你的磁盤空間, 你可以把她備份到磁帶上, 或 則刪除上一次完整備份前的所

31、有日志文件。通過 v$archived_log 和 v$log_history 可以查看歸檔日志文件的信息。3.1.5 初始化參數(shù)文件( Parameter file)initSID.ora 或 init.ora 文件,因為版本的不一樣,其位置也可能會不一樣。在 8i 中,通 常位于 $ORACLE_HOME/admin/<SID>/Pfile 下。在 9i 以下參數(shù)文件是一個純文本文件,可 以用文本編輯器打開修改,從 9i 開始,多了一個叫 spfile 的參數(shù)文件,以二進(jìn)制方式保存。初始化文件記載了許多數(shù)據(jù)庫的啟動參數(shù), 如內(nèi)存, 控制文件, 進(jìn)程數(shù)等, 在數(shù)據(jù)庫啟 動的時候加

32、載( Nomount 時加載),初始化文件記錄了很多重要參數(shù),對數(shù)據(jù)庫的性能影響 很大,如果沒有它,數(shù)據(jù)庫將無法啟動。在 9i 以前,對參數(shù)文件的修改,必須重新啟動數(shù) 據(jù)庫才能使參數(shù)生效,從 9i 開始,可以用命令來修改 spfile 文件的內(nèi)容了。參數(shù)文件中的參數(shù)不是一直一成不變的,隨著版本的不同而不同。大多數(shù)參數(shù),如 Db_block_size 的壽命就很長,其它很多參數(shù)隨著版本的改變就被廢棄了。除了文檔記錄的 參數(shù)外, ORACLE 還支持很多內(nèi)部參數(shù),當(dāng)然,這些參數(shù)是不建議被使用的。通過 v$parameter 視圖可以查詢當(dāng)前的參數(shù)設(shè)置。3.1.6 其他文件i . 密碼文件用于Ora

33、cle的具有sysdba權(quán)限用戶的認(rèn)證,在9i以前主要指Internal用戶,從9i開始已經(jīng)取消了這個用戶。密碼文件的密碼可以通過 ORAPWD 命令來修改。ii. 日志文件報警日志文件(alert.log 或 alrt<SID>.ora )記錄數(shù)據(jù)庫啟動,關(guān)閉和一些重要的出錯信息。數(shù)據(jù)庫管理員應(yīng)該經(jīng)常檢查這個文件, 并對出現(xiàn)的問題作出即使的反應(yīng)。你可以通過以下SQL 找到他的路徑 select value fromv$parameter where name ='background_dump_dest' ,或通過參數(shù)文件獲得其路徑。后臺跟蹤文件路徑與報警文件路徑

34、一致,記載了系統(tǒng)后臺進(jìn)程出錯時寫入的信息。用戶跟蹤文件記載了用戶進(jìn)程出錯時寫入的信息,一般不可能讀懂,可以通過ORACLE 的 TKPROF工具轉(zhuǎn)化為可以讀懂的格式。 用戶跟蹤文件的路徑, 你可以通過以下 SQL 找到他的路徑 select value from v$parameter where name ='user_dump_dest' ,或通過參數(shù)文件獲得其路徑??梢酝ㄟ^設(shè)置用戶跟蹤或 dump 命令來產(chǎn)生用戶跟蹤文件,一般在調(diào)試、優(yōu)化、系統(tǒng)分 析中有很大的作用。第四章.ORACLE 邏 輯結(jié)構(gòu)(Logical structure)圖五 LOGICAL STRUCTUR

35、E4.1 表空間(tablespace)表空間是數(shù)據(jù)庫中的基本邏輯結(jié)構(gòu),一系列數(shù)據(jù)文件的集合。一個表空間可以包含多個數(shù)據(jù)文件,但是一個數(shù)據(jù)文件只能屬于一個表空間。在8i以前,表空間的管理類型只有一種,被稱為字典管理表空間 (DMT),即在數(shù)據(jù)字典中管理表空間中的空間的分配。在8i以后的版本,為了減少在字典上的開銷,弓I入了本地管理的表空間(LMT ),在該類型的表空間中,在每個數(shù)據(jù)文件中存儲的位圖來管理空間 的分配,不再要求使用數(shù)據(jù)字典。本地管理的表空間有速度快,無碎片等眾多優(yōu)點(diǎn),建議用 戶表空間都實現(xiàn)本地管理。通過v$tablespace可以查詢表空間, DBA_TABLESPACE 可以查

36、詢詳細(xì)表空間信息。4.2 段(Segment)段是對象在數(shù)據(jù)庫中占用的空間,雖然段和數(shù)據(jù)庫對象是一一對應(yīng)的,但段是從數(shù)據(jù)庫存儲的角度來看的。一個段只能屬于一個表空間,當(dāng)然一個表空間可以有多個段。表空間和數(shù)據(jù)文件是物理存儲上的一對多的關(guān)系,表空間和段是邏輯存儲上的一對多的關(guān)系,段不直接和數(shù)據(jù)文件發(fā)生關(guān)系。一個段可以屬于多個數(shù)據(jù)文件,關(guān)于段可以指定擴(kuò)展到哪個數(shù)據(jù)文件上面。段基本可以分為以下四種數(shù)據(jù)段(Data Segment)索引段(Index Segment)回滾段(Rollback Segment)臨時段(Temporary Segment)通過DBA/ALL/USER_SEGMENTS 可以

37、查詢詳細(xì)的段信息。4.3 區(qū)間(Extent)關(guān)于Extent的翻譯有多種解釋,有的譯作擴(kuò)展,有的譯作盤區(qū),我這里通常譯為區(qū)間。 在一個段中可以存在多個區(qū)間,區(qū)間是為數(shù)據(jù)一次性預(yù)留的一個較大的存儲空間,直到那個區(qū)間被用滿,數(shù)據(jù)庫會繼續(xù)申請一個新的預(yù)留存儲空間,即新的區(qū)間,一直到段的最大區(qū)間數(shù)(Max Extent)或沒有可用的磁盤空間可以申請。在ORACLE8i以上版本,理論上一個段可以無窮個區(qū)間, 但是多個區(qū)間對 ORACLE卻 是有性能影響的,ORACLE建議把數(shù)據(jù)分布在盡量少的區(qū)間上,以減少ORACLE的管理與磁頭的移動,但是在某些特殊情況下, 需要把一個段分布在多個數(shù)據(jù)文件或多個設(shè)備上

38、,適當(dāng)?shù)募佣鄥^(qū)間數(shù)也是有很大好處的。通過DBA/ALL/USER_EXTENTS 可以查詢詳細(xì)的區(qū)間信息。4.4 Oracle 數(shù)據(jù)塊(Block)ORACLE最基本的存儲單位,在建立數(shù)據(jù)庫的時候指定,雖然在初始化文件中可見, 但是不能修改。為了保證存取的速度, 它是OS數(shù)據(jù)塊的整數(shù)倍。ORACLE的操作都是以塊 為基本單位,一個區(qū)間可以包含多個塊,如果區(qū)間大小不是塊大小的整數(shù)倍,ORACLE實際也擴(kuò)展到塊的整數(shù)倍。塊的內(nèi)部結(jié)構(gòu)與數(shù)據(jù)的存取方法都是比較復(fù)雜的,以表段的塊為例,從簡單的結(jié)構(gòu)上劃分,可以把塊的內(nèi)部劃分成如下幾個部分:公用頭,表目錄,行目錄,可存取空間等。以下是一個表塊的大致結(jié)構(gòu)圖:

39、1枷-PCTUSED圖六 TABLE BLOCK公用頭約I錄-PCTFREE塊頭(BLOCK HEADER)包含著關(guān)于塊類型(表塊、索引塊等等)的信息、關(guān)于塊上活 動和過時事務(wù)信息、磁盤上筷的地址的信息。表目錄(Table directory) ,如果給出的話,包含著此塊中存儲各行的表的信息(多個表的數(shù)據(jù)可能保存在同一個塊中)。行目錄( Rowdirectory )包含在塊中發(fā)現(xiàn)的描述行的信息。以上3部分為塊的開銷(Block Overhead),其余部分為可用存儲空間,可以用如下查詢獲得可用空間大小。Select kvisval,kvistag,kvisdsc from sys.x$kvis

40、;一般的 8K(8192) 的塊可用空間為 8168PCTFREE 與 PCTUSED 是表的兩個存取參數(shù), 其實是作用在表中的塊上面的, PCTFREE 與 PCTUSED 表示兩個百分比,默認(rèn)分別是 10 與 40。 PCTFREE 表示保留該百分比的可用 空間用于以后的行更新, 避免行遷移。 如果行數(shù)據(jù)達(dá)到 PCTFREE 保留的空間, 該塊從 FREE LIST 上撤消下來,不再接收數(shù)據(jù)。 PCTUSED 表示當(dāng)行的空閑空間降低(如刪除數(shù)據(jù))到 該參數(shù)指定的百分比的時候,該塊重新進(jìn)入 FREE LIST ,開始接收新的數(shù)據(jù)。 PCTFREE 與 PCTUSED 的配置與系統(tǒng)的優(yōu)化有一定

41、的關(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ù),但是用戶腳本,如過程,函數(shù),包等 卻是保存在數(shù)據(jù)字典中的。數(shù)據(jù)字典是一些系統(tǒng)表或視圖, 他存放系統(tǒng)的信息, 他包括數(shù)據(jù)庫版本, 數(shù)據(jù)文件信息, 表與索引等段信息, 系統(tǒng)的運(yùn)行狀態(tài)等各種和系統(tǒng)有關(guān)的信息和用戶腳本信息。數(shù)據(jù)庫管理員可以通過對數(shù)據(jù)字典的查詢,就可以了解到 Oracle的運(yùn)行狀態(tài)。查看數(shù)據(jù)數(shù)據(jù)字典的

42、 SQLselect * from dict查看內(nèi)部系統(tǒng)表的 SQLselect * from v$fixed_view_definitionDBA 對系統(tǒng)的系統(tǒng)表中的數(shù)據(jù)字典必須有一個很深刻的了解,他們必須準(zhǔn)備一些基礎(chǔ) 的 SQL 語句,通過這些 SQL 可以立即了解系統(tǒng)的狀況和數(shù)據(jù)庫的狀態(tài),這些基本的SQL包括系統(tǒng)的剩余空間系統(tǒng)的SGA狀態(tài)系統(tǒng)的等待用戶的權(quán)限當(dāng)前的用戶鎖緩沖區(qū)的使用狀況等在成為 DBA 的道路上我們不建議你過分的依賴于 OEM/Quest 等優(yōu)秀的數(shù)據(jù)庫管理工 具,因為他們不利于你對數(shù)據(jù)數(shù)據(jù)字典的理解, SQL 語句可以完成幾乎全部的數(shù)據(jù)庫管理 工作。大量的讀少量的寫是該

43、表空間的一個顯著的特點(diǎn)。452臨時表空間(Temporary)該表空間包含的數(shù)據(jù)文件稱為臨時數(shù)據(jù)文件主要存放用戶的排序等臨時數(shù)據(jù),因為沒有辦法在一個永久表空間上開辟臨時段, 所以就必須有一個臨時表空間,主要用于不能在內(nèi)存上進(jìn)行的排序操作。我們必須為用戶指定一個臨時表空間。臨時段占有的空間會在下次系統(tǒng)啟動的時候全部被釋放。453回滾段表空間(Rollback)如果數(shù)據(jù)庫進(jìn)行對數(shù)據(jù)的修改,那么就必須使用回滾段,回滾段是用來臨時存放修改前 的數(shù)據(jù)(UNDO)。回滾段通常都放在一個單獨(dú)的表空間上(回滾表空間),避免表空間碎片化,這個表空間包含的數(shù)據(jù)文件就是回滾數(shù)據(jù)文件。4.5.3.1回滾段在系統(tǒng)中的作

44、用當(dāng)數(shù)據(jù)庫進(jìn)行更新插入刪除等操作的時候,新的數(shù)據(jù)被更新到原來的數(shù)據(jù)文件,而舊的數(shù)據(jù)(Before Image)就被放到回滾段中,如果數(shù)據(jù)需要回滾,那么可以從回滾段將數(shù)據(jù)再復(fù) 制到數(shù)據(jù)文件中。來完成數(shù)據(jù)的回滾。在系統(tǒng)恢復(fù)的時候,回滾段可以用來回滾沒有被commit的數(shù)據(jù),解決系統(tǒng)的一直性讀?;貪L段在一般情況下都是大量的寫,少量讀,因此建議把回滾段單獨(dú)出來放在一個單獨(dú)的設(shè)備(如單獨(dú)的磁盤或 RAID),以減少磁盤的10爭用。4.5.3.2回滾段的工作方式一個回滾表空間可以被劃分成多個回滾段一個回滾段可以保存多個會話的數(shù)據(jù)回滾段是一個圓形的數(shù)據(jù)模型假設(shè)回滾段由4個區(qū)間組成,他們的使用順序就是區(qū)間 1

45、區(qū)間2區(qū)間3區(qū)間4 區(qū)間1。也就是說,區(qū)間是可以循環(huán)使用的,當(dāng)區(qū)間 4到區(qū)間1的時候,區(qū)間1里面的會話 還沒有結(jié)束,區(qū)間4用完后就不能再用區(qū)間 1,這時系統(tǒng)必須分配區(qū)間 5,來繼續(xù)為其他會話 服務(wù)服務(wù)。這也就是為什么回滾段在大事務(wù)的情況下會不斷“漲大”的原因,回滾段的擴(kuò)充是影響性能的,要盡量避免。這是一個回滾段從 4個區(qū)間簡單的擴(kuò)充到 5個區(qū)間的例子:圖七 ROLLBACK SEGMENT我們分析一個 Update 語句的完成1、用戶提交一個 Update 語句2、 Server Process 檢查內(nèi)存緩沖 . 如果沒有該數(shù)據(jù)塊的緩沖,則從磁盤讀入i. 如果沒有內(nèi)存的有效空間, DBWR 被

46、啟動將未寫入磁盤的臟緩沖寫入磁盤 ii. 如果有有效空間,則讀入3、在緩沖內(nèi)更新數(shù)據(jù)i. 申請一個回滾段入口,將舊數(shù)據(jù)寫如回滾段ii. 加鎖并更新數(shù)據(jù)iii. 并在同時將修改記錄在 Redo log buffer 中4、用戶提交一個 Commit 語句i. SCN 增加ii. 將 Redo log buffer 寫入 Redo log file iii. 返回用戶 Commit 完成4.5.4 用戶表空間 (User)其包含的數(shù)據(jù)文件稱為用戶數(shù)據(jù)文件 一般是由用戶建立, 來存取用戶數(shù)據(jù)的表空間, 一般有兩類常見的用戶型數(shù)據(jù), 數(shù)據(jù)和 索引,一般來說,如果條件許可的話,可以考慮放在不同的磁盤上。

47、第五章 . 常見問題1、實例和 SID 的關(guān)系是什么?經(jīng)常有人問 SID 是什么?在 Oracle 系統(tǒng)中 SID 是一個經(jīng)常出現(xiàn)的變量,如環(huán)境變量 ORACLE_SID , 初始化文件 initSID.ora ,那究竟什么是 SID 呢?其實 SID 就是 Oracle 實 例的標(biāo)識, 不同的 SID 對應(yīng)不同的內(nèi)存緩沖 (SGA) 和不同的后臺進(jìn)程。 這樣一來我們就可以 得當(dāng)在一臺物理的服務(wù)器上可以有多個 SID 的數(shù)據(jù)庫實例。2、Oracle 數(shù)據(jù)庫和實例的關(guān)系是什么? 數(shù)據(jù)庫是由物理文件和存取數(shù)據(jù)文件的實例組成,當(dāng)存取數(shù)據(jù)文件的實例是一個的時 候,數(shù)據(jù)庫被稱做單節(jié)點(diǎn)數(shù)據(jù)庫。 這是我們看

48、到的最多的數(shù)據(jù)庫形式。 當(dāng)然還有一種多節(jié)點(diǎn) 數(shù)據(jù)庫,就是一個以上的實例共同訪問一個數(shù)據(jù)庫(或者說共同訪問一組數(shù)據(jù)文件), 更好的提供穩(wěn)定性和并行處理能力。這在8i中被稱為OPSQracle Parallel Server ),在Oracle9i中被稱為 RAC(real application cluster) 。在這種數(shù)據(jù)庫中。 兩個/多個實例分別在不同服務(wù)器上, 所有 Oracle 數(shù)據(jù)文件在共享的磁盤陣列上,多個服務(wù)器上的實例可以同時工作,他們通過 一個內(nèi)部的網(wǎng)絡(luò)進(jìn)行通信。 如果一臺服務(wù)器不能提供服務(wù)的話, 另一臺會接管它的工作, 特 別是在關(guān)鍵的業(yè)務(wù)有很大的潛力。3、在運(yùn)行的數(shù)據(jù)庫中數(shù)

49、據(jù)文件中是不是可能存在沒有被提交的數(shù)據(jù)?這是可能存在的,因為用戶數(shù)據(jù)文件的數(shù)據(jù)是由 DBWR 寫入的, DBWR 是一個很底層 的后臺進(jìn)程,不負(fù)責(zé)與用戶交互。用戶的交互是由 LGWR 完成的。4、在問題 3 中,如果存在沒有寫入的數(shù)據(jù),那么機(jī)器突然斷電,數(shù)據(jù)完整性會不會損壞?不會的,因為數(shù)據(jù)庫的完整性是 LGWR 來保證的,而且 ORACLE 保證了 DBWR 寫入 數(shù)據(jù)文件的任何修改已經(jīng)被記錄在重做日志文件中。 當(dāng)系統(tǒng)再次啟動的時候, 通過讀取重做 日志文件就可以知道那些數(shù)據(jù)沒有被提交。這時候 ORACLE 會自動回滾那些數(shù)據(jù)。所以說 聯(lián)機(jī)日志的損壞, 特別是當(dāng)前聯(lián)機(jī)日志的損壞, 對數(shù)據(jù)庫的

50、影響是巨大的, 可能會導(dǎo)致數(shù)據(jù) 庫的不完整。5、數(shù)據(jù)文件損壞會丟失數(shù)據(jù)嗎?可以這么說, 如果你有備份和歸檔, 就不會。 因為所有對數(shù)據(jù)修改的記錄都在重做日志 中有記錄, 所以不會丟失數(shù)據(jù), 你只要恢復(fù)以前的備份再用歸檔日志文件恢復(fù)和當(dāng)前的在線 重做日志就可以恢復(fù)所有數(shù)據(jù)。6、在線重做日志損壞會丟失數(shù)據(jù)嗎?以上說了, 在線日志對數(shù)據(jù)庫的損壞是極大的, 所以不僅可能丟失數(shù)據(jù), 還可能引起數(shù) 據(jù)庫的不同步。 在重做日志中的所有 commit 的記錄都會丟失, 這也是 Oracle 為什么要對在 線重做日志文件做鏡像的原因。任何的數(shù)據(jù)丟失都是不允許的。7、我在事務(wù)能不能指定不寫回滾段?不可以的,寫回滾

51、段是 ORACLE 保證一致性讀和事務(wù)一致性的根本?;貪L段是高寫入 段,建議把它放到單獨(dú)的設(shè)備上來。對于 DDL 語句,如 DROP,TRUNCA TE 卻可以不寫回滾段 (沒有 UNDO 信息),所以對 于整個表的刪除,如果數(shù)據(jù)量比較大,建議用Truncate Table 的方法。不寫聯(lián)機(jī)日志也是不可能的, 但可以在某些特定操作中, 可以寫很少的聯(lián)機(jī)日志, 如以 NOLOGGING 的方式通過 Create table tablename as select 創(chuàng)建表, 或以 Append 的方式 Insert 數(shù)據(jù)到表,或直接載入等操作。第六章 . 小結(jié)這里, 我們了解了實例和數(shù)據(jù)庫的關(guān)系,

52、 一個數(shù)據(jù)庫可以有多個實例, 但是一個實例卻 不可能對應(yīng)多個數(shù)據(jù)庫, 在一般的情況下, 我們都是用的單節(jié)點(diǎn)數(shù)據(jù)庫, 即一個實例僅僅對 應(yīng)一個數(shù)據(jù)庫。我們了解了 ORACLE 實例的組成, 包括內(nèi)存和后臺進(jìn)程, 進(jìn)一步解釋了 SGA 的組成與 SGA 的作用,并分析了語句重用的好處。在后臺進(jìn)程中,重要的闡述了DBWR 與 LGWR ,其中 DBWR 是一個底層的由 ORACLE 控制的后臺進(jìn)程,而 LGWR 負(fù)責(zé)與用戶交互 .在 ORACLE 數(shù)據(jù)庫中 , 我們重要闡述了數(shù)據(jù)庫的物理與邏輯結(jié)構(gòu),在物理結(jié)構(gòu)中,需要 注意四類以下文件:控制文件,聯(lián)機(jī)日志,數(shù)據(jù)文件與參數(shù)文件。在邏輯結(jié)構(gòu)中,需要清楚

53、每個邏輯結(jié)構(gòu)的關(guān)系,從大到小的順序為:表空間 段 區(qū)間 塊。第二部分: ORACLE9i 新特性、創(chuàng)建數(shù)據(jù)庫9i 創(chuàng)建數(shù)據(jù)庫的工具改名為 DBCA ,也可以通過腳本更輕松容易的創(chuàng)建數(shù)據(jù)庫,如: create database $ORACLE_SID user sys identified by sys user system identified by system logfile group 1 ('$ORACLE_BASE/oradata/$ORACLE_SID/redo01.log') size 10M, group 2 ('$ORACLE_BASE/oradat

54、a/$ORACLE_SID/redo02.log') size 10M, group 3 ('$ORACLE_BASE/oradata/$ORACLE_SID/redo03.log') size 10M maxlogfiles 5 maxlogmembers 5 maxloghistory 1 maxdatafiles 254 maxinstances 1 archivelog character set ZHS16GBK national character set AL16UTF16 datafile '$ORACLE_BASE/oradata/$ORACL

55、E_SID/system01.dbf' size 300M default temporary tablespace tbstemp tempfile '$ORACLE_BASE/oradata/$ORACLE_SID/temp01.dbf' size 500M undo tablespace tbsundo datafile'$ORACLE_BASE/oradata/$ORACLE_SID/undo01.dbf' size 500M; 其特點(diǎn)為使用專用的回滾和臨時表空間,而不象 Oracle 8i 中的那樣,回滾和臨時表空 間與普通表空間沒有差異, 這

56、樣既簡化了配置也有利于效能提高。 要注意臨時表空間的指定 文件關(guān)鍵字是 tempfile 而不是通用的 datafile ,而且臨時表空間的存儲選項由 Oracle 系統(tǒng)決 定。同樣回滾表空間也是由 Oracle 系統(tǒng)決定,不必人工干預(yù)。二、二進(jìn)制的參數(shù)文件Oracle 9i在$ORACLE_HOME/dbs 下可使用二進(jìn)制配置文件,缺省為 spfileSID.ora , 如spfileoradb.ora,支持Oracle系統(tǒng)進(jìn)程在不重啟的情況下動態(tài)調(diào)整參數(shù),這對要求不間斷 運(yùn)行的系統(tǒng)是有利的。在建庫階段就可將此配置文件創(chuàng)建起來。create spfile from pfile;orcreate spfile='文件全名'from pfile='文件全名'數(shù)據(jù)庫在啟動的時候,會默認(rèn)在$ORACLE_HOME/dbs 找spfile實例名.ora文件,如果沒有,它將尋找 pfile 文件,就是與 8i 兼容的 initSID.ora 的文本文件。當(dāng)然,也可以通 過指定的方式啟動數(shù)據(jù)庫。Startup pfile='文件全名'or startup spfile='文件全

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論