![ORACLE體系結(jié)構(gòu)_第1頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/27/ca8b1b59-84b6-4a05-ab7a-f6f4addfb9d9/ca8b1b59-84b6-4a05-ab7a-f6f4addfb9d91.gif)
![ORACLE體系結(jié)構(gòu)_第2頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/27/ca8b1b59-84b6-4a05-ab7a-f6f4addfb9d9/ca8b1b59-84b6-4a05-ab7a-f6f4addfb9d92.gif)
![ORACLE體系結(jié)構(gòu)_第3頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/27/ca8b1b59-84b6-4a05-ab7a-f6f4addfb9d9/ca8b1b59-84b6-4a05-ab7a-f6f4addfb9d93.gif)
![ORACLE體系結(jié)構(gòu)_第4頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/27/ca8b1b59-84b6-4a05-ab7a-f6f4addfb9d9/ca8b1b59-84b6-4a05-ab7a-f6f4addfb9d94.gif)
![ORACLE體系結(jié)構(gòu)_第5頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/27/ca8b1b59-84b6-4a05-ab7a-f6f4addfb9d9/ca8b1b59-84b6-4a05-ab7a-f6f4addfb9d95.gif)
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、概要在本章里你可以了解以下內(nèi)容1 、ORACLE實(shí)例包括內(nèi)存結(jié)構(gòu)與后臺(tái)進(jìn)程2 、ORACLE數(shù)據(jù)庫(kù)物理操作系統(tǒng)文件的集合3 、了解內(nèi)存結(jié)構(gòu)的組成4 、了解后臺(tái)進(jìn)程的作用5 、了解數(shù)據(jù)庫(kù)的物理文件6 、解釋各種邏輯結(jié)構(gòu)一、ORACLE事例1 、ORACLE實(shí)例SystemGlobalArea(SGA)和BackgroundProcess被成為數(shù)據(jù)庫(kù)的實(shí)例。2 、ORACLE數(shù)據(jù)庫(kù)一系列物理文件的集合(數(shù)據(jù)文件,控制文件,聯(lián)機(jī)日志,參數(shù)文件等)3 、系統(tǒng)全局共享區(qū)SystemGlobalArea(SGA)SystemGlobalArea是一塊巨大的共享內(nèi)存區(qū)域,他被看做是Oracle數(shù)據(jù)庫(kù)的一個(gè)大
2、緩沖池,這里的數(shù)據(jù)可以被ORACLE的各個(gè)進(jìn)程共用。其大小可以通過(guò)如下語(yǔ)句查看:SQL>select*fromv$sga;NAMEVALUEFixedSize39816VariableSize259812784DatabaseBuffers1.049E+09RedoBuffers327680更詳細(xì)的信息可以參考V$sgastat、V$buffer_pool主要包括以下幾個(gè)部分:a、共享池(Sharedpool)共享池是SGA中最關(guān)鍵的內(nèi)存片段,特別是在性能和可伸縮性上。一個(gè)太小的共享池會(huì)扼殺性能,使系統(tǒng)停止,太大的共享池也會(huì)有同樣的效果,將會(huì)消耗大量的CPU來(lái)管理這個(gè)共享池。不正確的使用
3、共享池只會(huì)帶來(lái)災(zāi)難。共享池主要又可以分為以下兩個(gè)部分:SQL語(yǔ)句緩沖(LibraryCache)當(dāng)一個(gè)用戶(hù)提交一個(gè)SQL語(yǔ)句,Oracle會(huì)將這句SQL進(jìn)行分析(parse),這個(gè)過(guò)程類(lèi)似于編譯,會(huì)耗費(fèi)相對(duì)較多的時(shí)間。在分析完這個(gè)SQL,Oracle會(huì)把他的分析結(jié)果給保存在Sharedpool的LibraryCache中,當(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í)間SQL>selectcount(*)fromscpass;COUNT(*)243Ela
4、psed:00:00:00.08這是在Share_pool和Databuffer都沒(méi)有數(shù)據(jù)緩沖區(qū)的情況下所用的時(shí)間SQL>altersystemflushSHARED_POOL;Systemaltered.清空Share_pool,保留DatabufferSQL>selectcount(*)fromscpass;COUNT(*)243Elapsed:00:00:00.02SQL>selectcount(*)fromscpass;COUNT(*)243Elapsed:00:00:00.00從兩句SQL的時(shí)間差上可以看出該SQL的Parse時(shí)間約為00:00:00.02對(duì)于保存在
5、共享池中的SQL語(yǔ)句,可以從V$Sqltext、v$Sqlarea中查詢(xún)到,對(duì)于編程者來(lái)說(shuō),要盡量提高語(yǔ)句的重用率,減少語(yǔ)句的分析時(shí)間。一個(gè)設(shè)計(jì)的差的應(yīng)用程序可以毀掉整個(gè)數(shù)據(jù)庫(kù)的Sharepool,提高SQL語(yǔ)句的重用率必須先養(yǎng)成良好的變成習(xí)慣,盡量使用Bind變量。數(shù)據(jù)字典緩沖區(qū)(DataDictionaryCache)顯而易見(jiàn),數(shù)據(jù)字典緩沖區(qū)是ORACLE特地為數(shù)據(jù)字典準(zhǔn)備白一塊緩沖池,供ORACLE內(nèi)部使用,沒(méi)有什么可以說(shuō)的。b、塊緩沖區(qū)高速緩存(DatabaseBufferCache)這些緩沖是對(duì)應(yīng)所有數(shù)據(jù)文件中的一些被使用到的數(shù)據(jù)塊。讓他們能夠在內(nèi)存中進(jìn)行操作。在這個(gè)級(jí)別里沒(méi)有系統(tǒng)文
6、件,,戶(hù)數(shù)據(jù)文件,臨時(shí)數(shù)據(jù)文件,回滾段文件之分。也就是任何文件的數(shù)據(jù)塊都有可能被緩沖。數(shù)據(jù)庫(kù)的任何修改都在該緩沖里完成,并由DBWR進(jìn)程將修改后的數(shù)據(jù)寫(xiě)入磁盤(pán)。這個(gè)緩沖區(qū)的塊基本上在兩個(gè)不同的列表中管理。一個(gè)是塊的臟”表(DirtyList),需要用數(shù)據(jù)庫(kù)塊的書(shū)寫(xiě)器(DBWR)來(lái)寫(xiě)入,另外一個(gè)是不臟的塊的列表(FreeList),一般的情況下,是使用最近最少使用(LeastRecentlyUsed,LRU)算法來(lái)管理。塊緩沖區(qū)高速緩存又可以細(xì)分為以下三個(gè)部分(Defaultpool,Keeppool,Recyclepool)。如果不是人為設(shè)置初始化參數(shù)(Init.ora),ORACLE將默認(rèn)為
7、Defaultpool。由于操作系統(tǒng)尋址能力的限制,不通過(guò)特殊設(shè)置,在32位的系統(tǒng)上,塊緩沖區(qū)高速緩存最大可以達(dá)到1.7G,在64位系統(tǒng)上,塊緩沖區(qū)高速緩存最大可以達(dá)到10G。c、重做日志緩沖區(qū)(Redologbuffer)重做日志文件的緩沖區(qū),對(duì)數(shù)據(jù)庫(kù)的任何修改都按順序被記錄在該緩沖,然后由LGWR進(jìn)程將它寫(xiě)入磁盤(pán)。這些修改信息可能是DML語(yǔ)句,如(Insert,Update,Delete),或DDL語(yǔ)句,如(Create,Alter,Drop等)。重做日志緩沖區(qū)的存在是因?yàn)閮?nèi)存到內(nèi)存的操作比較內(nèi)存到硬盤(pán)的速度快很多,所以重作日志緩沖區(qū)可以加快數(shù)據(jù)庫(kù)的操作速度,但是考慮的數(shù)據(jù)庫(kù)的一致性與可恢
8、復(fù)性,數(shù)據(jù)在重做日志緩沖區(qū)中的滯留時(shí)間不會(huì)很長(zhǎng)。所以重作日志緩沖區(qū)一般都很小,大于3M之后的重作日志緩沖區(qū)已經(jīng)沒(méi)有太大的實(shí)際意義。d、Java程序緩沖區(qū)(JavaPool)Java的程序區(qū),Oracle8I以后,Oracle在內(nèi)核中加入了對(duì)Java的支持。該程序緩沖區(qū)就是為Java程序保留的。如果不用Java程序沒(méi)有必要改變?cè)摼彌_區(qū)的默認(rèn)大小。e、大池(LargePool)大池的得名不是因?yàn)榇?,而是因?yàn)樗脕?lái)分配大塊的內(nèi)存,處理比共享池更大的內(nèi)存,在8.0開(kāi)始引入。下面對(duì)象使用大池:MTS在SGA的LargePool中分配UGA語(yǔ)句的并行查詢(xún)(ParallelExecuteionofState
9、ments)允許進(jìn)程間消息緩沖區(qū)的分配,用來(lái)協(xié)調(diào)并行查詢(xún)服務(wù)器備份(Backup)用于RMAN磁盤(pán)I/O緩存4 、后臺(tái)進(jìn)程(Backgroundprocess)后臺(tái)進(jìn)程是Oracle的程序,用來(lái)管理數(shù)據(jù)庫(kù)的讀寫(xiě),恢復(fù)和監(jiān)視等工作。ServerProcess主要是通過(guò)他和userprocess進(jìn)行聯(lián)系和溝通,并由他和userprocess進(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)線程,打開(kāi)任務(wù)管理器,我們只能看到一個(gè)ORACLE.EXE的進(jìn)程,但是通
10、過(guò)另外的工具,就可以看到包含在這里進(jìn)程中的線程。在Unix上可以通過(guò)如下方法查看后臺(tái)進(jìn)程:psef|grepora_#ps-ef|grepora_|grepXCLUAToracle2943110Sep02?2:02ora_dbwr_SIDoracle2944410Sep02?0:03ora_ckpt_SIDoracle2944810Sep02?2:42ora_smon_SIDoracle2944210Sep02?3:25ora_lgwr_SIDoracle2942710Sep02?0:01ora_pmon_SIDa、Oracle系統(tǒng)有5個(gè)基本進(jìn)程他們是DBWR(數(shù)據(jù)文件寫(xiě)入進(jìn)程)LGWR(日志
11、文件寫(xiě)入進(jìn)程)SMON(系統(tǒng)監(jiān)護(hù)進(jìn)程)PMON(用戶(hù)進(jìn)程監(jiān)護(hù)進(jìn)程)CKPT(檢查點(diǎn)進(jìn)程,同步數(shù)據(jù)文件,日志文件,控制文件)b、DBWR將修改過(guò)的數(shù)據(jù)緩沖區(qū)的數(shù)據(jù)寫(xiě)入對(duì)應(yīng)數(shù)據(jù)文件維護(hù)系統(tǒng)內(nèi)的空緩沖區(qū)這里指出幾個(gè)容易錯(cuò)誤的概念:當(dāng)一個(gè)更新提交后,DBWR把數(shù)據(jù)寫(xiě)到磁盤(pán)并返回給用戶(hù)提交完成.DBWR會(huì)觸發(fā)CKPT后臺(tái)進(jìn)程DBWR不會(huì)觸發(fā)LGWR進(jìn)程上面的概念都是錯(cuò)誤的.DBWR是一個(gè)很底層的工作進(jìn)程,他批量的把緩沖區(qū)的數(shù)據(jù)寫(xiě)入磁盤(pán)。和任何前臺(tái)用戶(hù)的進(jìn)程幾乎沒(méi)有什么關(guān)系,也不受他們的控制。至于DBWR會(huì)不會(huì)觸發(fā)LGWR和CKPT進(jìn)程,我們將在下面幾節(jié)里討論。DBWR工作的主要條件如下DBWR超時(shí)系統(tǒng)中
12、沒(méi)有多的空緩沖區(qū)用來(lái)存放數(shù)據(jù)CKPT進(jìn)程觸發(fā)DBWR等c、LGWR將重做日志緩沖區(qū)的數(shù)據(jù)寫(xiě)入重做日志文件,LGWR是一個(gè)必須和前臺(tái)用戶(hù)進(jìn)程通信的進(jìn)程。當(dāng)數(shù)據(jù)被修改的時(shí)候,系統(tǒng)會(huì)產(chǎn)生一個(gè)重做日志并記錄在重做日志緩沖區(qū)內(nèi)。這個(gè)重做日志可以類(lèi)似的認(rèn)為是以下的一個(gè)結(jié)構(gòu):SCN=000000001000數(shù)據(jù)塊ID對(duì)象ID=0801數(shù)據(jù)行=02修改后的數(shù)據(jù)=0011提交的時(shí)候,LGWR必須將被修改的數(shù)據(jù)的重做日志緩沖區(qū)內(nèi)數(shù)據(jù)寫(xiě)入日志數(shù)據(jù)文件,然后再通知前臺(tái)進(jìn)程提交成功,并由前臺(tái)進(jìn)程通知用戶(hù)。從這點(diǎn)可以看出LGWR承擔(dān)了維護(hù)系統(tǒng)數(shù)據(jù)完整性的任務(wù)。LGWR工作的主要條件如下用戶(hù)提交有1/3重做日志緩沖區(qū)未被寫(xiě)
13、入磁盤(pán)有大于1M重做日志緩沖區(qū)未被寫(xiě)入磁盤(pán)超時(shí)DBWR需要寫(xiě)入的數(shù)據(jù)的SCN號(hào)大于LGWR記錄的SCN號(hào),DBWR觸發(fā)LGWR寫(xiě)入d、 SMON工作主要包含清除臨時(shí)空間在系統(tǒng)啟動(dòng)時(shí),完成系統(tǒng)實(shí)例恢復(fù)聚結(jié)空閑空間從不可用的文件中恢復(fù)事務(wù)的活動(dòng)OPS中失敗節(jié)點(diǎn)的實(shí)例恢復(fù)清除08J$表縮減回滾段使回滾段脫機(jī)e、 PMON主要用于清除失效的用戶(hù)進(jìn)程,釋放用戶(hù)進(jìn)程所用的資源。如PMON將回滾未提交的工作,釋放鎖,釋放分配給失敗進(jìn)程的SGA資源。f、 CKPT同步數(shù)據(jù)文件,日志文件和控制文件,由于DBWR/LGWR的工作原理,造成了數(shù)據(jù)文件,日志文件,控制文件的不一至,這就需要CKPT進(jìn)程來(lái)同步。CKPT
14、會(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)確定用戶(hù)觸發(fā)以下進(jìn)程的啟動(dòng)需要手工配置g、ARCH當(dāng)數(shù)據(jù)庫(kù)以歸檔方式運(yùn)行的時(shí)候,Oracle會(huì)啟動(dòng)ARCH進(jìn)程,當(dāng)重做日志文件被寫(xiě)滿(mǎn)時(shí),日志文件進(jìn)行切換,舊的重做日志文件就被ARCH進(jìn)程復(fù)制到一個(gè)/多個(gè)特定的目錄/遠(yuǎn)程機(jī)器。這些被復(fù)制的重做日志文件被叫做歸檔日志文件
15、。h、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ì)話。i、服務(wù)進(jìn)程ServerProcess服務(wù)進(jìn)程的分類(lèi)專(zhuān)用服務(wù)進(jìn)程(DedicatedServerProcess)一個(gè)服務(wù)進(jìn)程對(duì)應(yīng)一個(gè)用戶(hù)進(jìn)程共享服務(wù)進(jìn)程(MultiTreadedServerProcess)一個(gè)服務(wù)進(jìn)程對(duì)應(yīng)多個(gè)用戶(hù)進(jìn)程,輪流為用戶(hù)進(jìn)程服務(wù)。PGA&UGAPGA=ProcessGlobalAreaUGA=UserGlobalArea他保存了用戶(hù)的變量、權(quán)限、堆
16、棧、排序空間等用戶(hù)信息,對(duì)于專(zhuān)用服務(wù)器進(jìn)程,UGA在PGA中分配。對(duì)于多線程進(jìn)程,UGA在Largepool中分配。j、用戶(hù)進(jìn)程UserProcess在客戶(hù)端,將用戶(hù)的SQL語(yǔ)句傳遞給服務(wù)進(jìn)程5、一個(gè)貫穿數(shù)據(jù)庫(kù)全局的概念系統(tǒng)改變號(hào)SCN(SystemChangeNumber)系統(tǒng)改變號(hào),一個(gè)由系統(tǒng)內(nèi)部維護(hù)的序列號(hào)。當(dāng)系統(tǒng)需要更新的時(shí)候自動(dòng)增加,他是系統(tǒng)中維持?jǐn)?shù)據(jù)的一致性和順序恢復(fù)的重要標(biāo)志。a. 查詢(xún)語(yǔ)句不會(huì)使SCN增加,就算是同時(shí)發(fā)生的更新,數(shù)據(jù)庫(kù)內(nèi)部對(duì)應(yīng)的SCN也是不同的。這樣一來(lái)就保證了數(shù)據(jù)恢復(fù)時(shí)候的順序。b. 維持?jǐn)?shù)據(jù)的一致性,當(dāng)一二、ORACLE數(shù)據(jù)庫(kù)ORACLE數(shù)據(jù)庫(kù)的組成物理操作
17、系統(tǒng)文件的集合。主要包括以下幾種。1 、控制文件(參數(shù)文件init.ora記錄了控制文件的位置)控制文件包括如下主要信息數(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)的??刂莆募欠浅V匾?,一般采用多個(gè)鏡相復(fù)制來(lái)保護(hù)控制文件,或采用RAID來(lái)保護(hù)控制文件??刂莆募膩G失,將使數(shù)據(jù)庫(kù)的恢復(fù)變的很復(fù)雜。控制文件信息可以從V$Controlfile中查詢(xún)獲得2、數(shù)據(jù)文件(
18、數(shù)據(jù)文件的詳細(xì)信息記載在控制文件中)可以通過(guò)如下方式查看數(shù)據(jù)文件SQL>selectnamefromv$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ù)文件大致可以分為以下幾類(lèi):i. 系統(tǒng)數(shù)據(jù)文件(system_01.dbf)存放系統(tǒng)表和數(shù)據(jù)字典,一般不放用戶(hù)
19、的數(shù)據(jù),但是用戶(hù)腳本,如過(guò)程,函數(shù),包等卻是保存在數(shù)據(jù)字典中的。名詞解釋?zhuān)簲?shù)據(jù)字典數(shù)據(jù)字典是一些系統(tǒng)表或視圖,他存放系統(tǒng)的信息,他包括數(shù)據(jù)庫(kù)版本,數(shù)據(jù)文件信息,表與索引等段信息,系統(tǒng)的運(yùn)行狀態(tài)等各種和系統(tǒng)有關(guān)的信息和用戶(hù)腳本信息。數(shù)據(jù)庫(kù)管理員可以通過(guò)對(duì)數(shù)據(jù)字典的查詢(xún),就可以了解到Oracle的運(yùn)行狀態(tài)。ii. 回滾段文件(rbs_01.dbf)如果數(shù)據(jù)庫(kù)進(jìn)行對(duì)數(shù)據(jù)的修改,那么就必須使用回滾段,回滾段是用來(lái)臨時(shí)存放修改前的數(shù)據(jù)(BeforeImage)。回滾段通常都放在一個(gè)單獨(dú)的表空間上(回滾表空間),避免表空間碎片化,這個(gè)表空間包含的數(shù)據(jù)文件就是回滾數(shù)據(jù)文件。iii. 臨時(shí)數(shù)據(jù)文件(temp_
20、01.dbf)主要存放用戶(hù)的排序等臨時(shí)數(shù)據(jù),與回滾段相似,臨時(shí)段也容易引起表空間碎片化,而且沒(méi)有辦法在一個(gè)永久表空間上開(kāi)辟臨時(shí)段,所以就必須有一個(gè)臨時(shí)表空間,它所包含的數(shù)據(jù)文件就是臨時(shí)數(shù)據(jù)文件,主要用于不能在內(nèi)存上進(jìn)行的排序操作。我們必須為用戶(hù)指定一個(gè)臨時(shí)表空間。iv. 用戶(hù)數(shù)據(jù)文件(/applsys_data_01.dbf,applsys_indx_01.dbf)存放用戶(hù)數(shù)據(jù),這里列舉了兩類(lèi)常見(jiàn)的用戶(hù)型數(shù)據(jù),一般數(shù)據(jù)和索引數(shù)據(jù),一般來(lái)說(shuō),如果條件許可的話,可以考慮放在不同的磁盤(pán)上。3、重做日志文件(聯(lián)機(jī)重做日志)用戶(hù)對(duì)數(shù)據(jù)庫(kù)進(jìn)行的任何操作都會(huì)記錄在重做日志文件。在了解重做日志之前必須了解重做
21、日志的兩個(gè)概念,重做日志組和重做日志組成員(Member),一個(gè)數(shù)據(jù)庫(kù)中至少要有兩個(gè)日志組文件,一組寫(xiě)完后再寫(xiě)另一組,即輪流寫(xiě)。每個(gè)日志組中至少有一個(gè)日志成員,一個(gè)日志組中的多個(gè)日志成員是鏡相關(guān)系,有利于日志文件的保護(hù),因?yàn)槿罩疚募膿p壞,特別是當(dāng)前聯(lián)機(jī)日志的損壞,對(duì)數(shù)據(jù)庫(kù)的影響是巨大的。聯(lián)機(jī)日志組的交換過(guò)程叫做切換,需要特別注意的是,日志切換在一個(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.增大
22、日志文件成員大小通過(guò)v$log可以查看日志組,v$logfile可以查看具體的成員文件。4、歸檔日志文件Oracle可以運(yùn)行在兩種模式之中,歸檔模式和不歸檔模式。如果不用歸檔模式,當(dāng)然,你就不會(huì)有歸檔日志,但是,你的系統(tǒng)將不會(huì)是一個(gè)實(shí)用系統(tǒng),特別是不能用于生產(chǎn)系統(tǒng),因?yàn)槟憧赡軙?huì)丟失數(shù)據(jù)。但是在歸檔模式中,為了保存用戶(hù)的所有修改,在重做日志文件切換后和被覆蓋之間系統(tǒng)將他們另外保存成一組連續(xù)的文件系列,該文件系列就是歸檔日志文件。有人或許會(huì)說(shuō),歸檔日志文件占領(lǐng)我大量的硬盤(pán)空間,其實(shí),具體想一想,你是愿意浪費(fèi)一點(diǎn)磁盤(pán)空間來(lái)保護(hù)你的數(shù)據(jù),還是愿意丟失你的數(shù)據(jù)呢?顯而義見(jiàn),我們需要保證我們的數(shù)據(jù)的安全性
23、。其實(shí),歸檔并不是一直占領(lǐng)你的磁盤(pán)空間,你可以把她備份到磁帶上,或則刪除上一次完整備份前的所有日志文件。5、初始化參數(shù)文件initSID.ora或init.ora文件,因?yàn)榘姹镜牟灰粯?,其位置也可能?huì)不一樣。在8i中,通常位于$ORACLE_HOME/admin/Pfile下初始化文件記載了許多數(shù)據(jù)庫(kù)的啟動(dòng)參數(shù),如內(nèi)存,控制文件,進(jìn)程數(shù)等,在數(shù)據(jù)庫(kù)啟動(dòng)的時(shí)候加載(Nomount時(shí)加載),初始化文件記錄了很多重要參數(shù),對(duì)數(shù)據(jù)庫(kù)的性能影響很大,如果不是很了解,不要輕易亂改寫(xiě),否則會(huì)引起數(shù)據(jù)庫(kù)性能下降。6、其他文件i.密碼文件用于Oracle的具有sysdba權(quán)限用戶(hù)的認(rèn)證.ii.日志文件報(bào)警日志文
24、件(alert.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找到他的路徑selectvaluefromv$PARAMETERwherename="background_dump_dest"后臺(tái)或用戶(hù)跟蹤文件系統(tǒng)進(jìn)程或用戶(hù)進(jìn)程出錯(cuò)前寫(xiě)入的信息,一般不可能讀懂,可以通過(guò)ORACLE的TKPROF工具轉(zhuǎn)化為可以讀懂的格式。對(duì)于系統(tǒng)進(jìn)程產(chǎn)生的跟蹤文件與報(bào)警日志文件的路徑一樣,用戶(hù)跟蹤文件的路徑,你可以通過(guò)以下SQL找到他白路徑selectvaluefromv$PARAMETE
25、Rwherename="user_dump_dest"三、ORACLE邏輯結(jié)構(gòu)1、表空間(tablespace)表空間是數(shù)據(jù)庫(kù)中的基本邏輯結(jié)構(gòu),一系列數(shù)據(jù)文件的集合。一個(gè)表空間可以包含多個(gè)數(shù)據(jù)文件,但是一個(gè)數(shù)據(jù)文件只能屬于一個(gè)表空間。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)系,表空間和段是邏輯存儲(chǔ)上的一對(duì)多的關(guān)系,段不直接和數(shù)據(jù)文件發(fā)生關(guān)系。一個(gè)段可以屬于多個(gè)數(shù)據(jù)文件,關(guān)于段可以指定擴(kuò)展到哪個(gè)數(shù)據(jù)文件上面
26、。段基本可以分為以下四種數(shù)據(jù)段(DataSegment)索引段(IndexSegment)回滾段(RollbackSegment)臨時(shí)段(TemporarySegment)3 、區(qū)間(Extent)關(guān)于Extent的翻譯有多種解釋?zhuān)械淖g作擴(kuò)展,有的譯作盤(pán)區(qū),我這里通常譯為區(qū)間。在一個(gè)段中可以存在多個(gè)區(qū)間,區(qū)間是為數(shù)據(jù)一次性預(yù)留的一個(gè)較大的存儲(chǔ)空間,直到那個(gè)區(qū)間被用滿(mǎn),數(shù)據(jù)庫(kù)會(huì)繼續(xù)申請(qǐng)一個(gè)新的預(yù)留存儲(chǔ)空間,即新的區(qū)間,一直到段的最大區(qū)間數(shù)(MaxExtent)或沒(méi)有可用的磁盤(pán)空間可以申請(qǐng)。在ORACLE8i以上版本,理論上一個(gè)段可以無(wú)窮個(gè)區(qū)間,但是多個(gè)區(qū)間對(duì)ORACLE卻是有性能影響的,ORA
27、CLE建議把數(shù)據(jù)分布在盡量少的區(qū)間上,以減少ORACLE的管理與磁頭的移動(dòng)。4 、Oracle數(shù)據(jù)塊(Block)ORACLE最基本的存儲(chǔ)單位,他是OS數(shù)據(jù)塊的整數(shù)倍。ORACLE的操作都是以塊為基本單位,一個(gè)區(qū)間可以包含多個(gè)塊(如果區(qū)間大小不是塊大小的整數(shù)倍,ORACLE實(shí)際也擴(kuò)展到塊的整數(shù)倍)。5、基本表空間介紹a. 系統(tǒng)表空間主要存放數(shù)據(jù)字典和內(nèi)部系統(tǒng)表基表查看數(shù)據(jù)數(shù)據(jù)字典的SQLselect*fromdict查看內(nèi)部系統(tǒng)表的SQLselect*fromv$fixed_view_definitionDBA對(duì)系統(tǒng)的系統(tǒng)表中的數(shù)據(jù)字典必須有一個(gè)很深刻的了解,他們必須準(zhǔn)備一些基礎(chǔ)的SQL語(yǔ)句,
28、通過(guò)這些SQL可以立即了解系統(tǒng)的狀況和數(shù)據(jù)庫(kù)的狀態(tài),這些基本的SQL包括系統(tǒng)的剩余空間系統(tǒng)的SGA狀態(tài)系統(tǒng)的等待用戶(hù)的權(quán)限當(dāng)前的用戶(hù)鎖緩沖區(qū)的使用狀況等在成為DBA的道路上我們不建議你過(guò)分的依賴(lài)于OEM/Quest等優(yōu)秀的數(shù)據(jù)庫(kù)管理工具,因?yàn)樗麄儾焕谀銓?duì)數(shù)據(jù)數(shù)據(jù)字典的理解,SQL語(yǔ)句可以完成幾乎全部的數(shù)據(jù)庫(kù)管理工作。大量的讀少量的寫(xiě)是該表空間的一個(gè)顯著的特點(diǎn)。b. 臨時(shí)表空間.臨時(shí)表空間顧名思義是用來(lái)存放臨時(shí)數(shù)據(jù)的,例如排序操作的臨時(shí)空間,他的空間會(huì)在下次系統(tǒng)啟動(dòng)的時(shí)候全部被釋放。c. 回滾段表空間i. 回滾段在系統(tǒng)中的作用當(dāng)數(shù)據(jù)庫(kù)進(jìn)行更新插入刪除等操作的時(shí)候,新的數(shù)據(jù)被更新到原來(lái)的數(shù)據(jù)文件
29、,而舊的數(shù)據(jù)(BeforeImage)就被放到回滾段中,如果數(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段在什么情況下都是大量的寫(xiě),一般是少量讀,因此建議把回滾段單獨(dú)出來(lái)放在一個(gè)單獨(dú)的設(shè)備(如單獨(dú)的磁盤(pán)或RAID),以減少磁盤(pán)的IO爭(zhēng)用。ii. 回滾段的工作方式一個(gè)回滾表空間可以被劃分成多個(gè)回滾段.一個(gè)回滾段可以保存多個(gè)會(huì)話的數(shù)據(jù).回滾段是一個(gè)圓形的數(shù)據(jù)模型假設(shè)回滾段由4個(gè)區(qū)間組成,他們的使用順序就是區(qū)間1d區(qū)間2d區(qū)間3d區(qū)間4d區(qū)間1。也就是說(shuō),區(qū)間是可以循環(huán)使用的,當(dāng)區(qū)間4到
30、區(qū)間1的時(shí)候,區(qū)間1里面的會(huì)話還沒(méi)有結(jié)束,區(qū)間4用完后就不能再用區(qū)間1,這時(shí)系統(tǒng)必須分配區(qū)間5,來(lái)繼續(xù)為其他會(huì)話服務(wù)服務(wù)。我們分析一個(gè)Update語(yǔ)句的完成.用戶(hù)提交一個(gè)Update語(yǔ)句.ServerProcess檢查內(nèi)存緩沖.如果沒(méi)有該數(shù)據(jù)塊的緩沖,則從磁盤(pán)讀入i.如果沒(méi)有內(nèi)存的有效空間,DBWR被啟動(dòng)將未寫(xiě)入磁盤(pán)的臟緩沖寫(xiě)入磁盤(pán)ii.如果有有效空間,則讀入.在緩沖內(nèi)更新數(shù)據(jù)i. 申請(qǐng)一個(gè)回滾段入口,將舊數(shù)據(jù)寫(xiě)如回滾段ii. 加鎖并更新數(shù)據(jù)iii. 并在同時(shí)將修改記錄在Redologbuffer中.用戶(hù)提交一個(gè)Commit語(yǔ)句i. SCN增加ii. 將Redologbuffer寫(xiě)入Redol
31、ogfileiii. 返回用戶(hù)Commit完成四、ORACLE核心初探1、LRU算法和數(shù)據(jù)緩沖區(qū)我們知道Oracle數(shù)據(jù)庫(kù)的文件大小遠(yuǎn)遠(yuǎn)大于Oracle的所擁有的內(nèi)存區(qū)域SGA,LRU就是一種盡可能將常用的數(shù)據(jù)保留在內(nèi)存的算法。當(dāng)數(shù)據(jù)庫(kù)需要一個(gè)數(shù)據(jù)緩沖區(qū),他會(huì)從數(shù)據(jù)庫(kù)緩沖區(qū)的LRU隊(duì)列的尾部找一個(gè)空閑的緩沖,將一個(gè)數(shù)據(jù)塊讀入,然后數(shù)據(jù)庫(kù)會(huì)把這個(gè)緩沖區(qū)放到LRU隊(duì)列的中部,如果該緩沖被其他程序用到的話,那么他會(huì)往隊(duì)列的頭上移動(dòng),如果這個(gè)緩沖沒(méi)有被其他程序用到,并且沒(méi)有被修改過(guò),那么他會(huì)慢慢的移動(dòng)到LRU隊(duì)列的尾部,最終被認(rèn)為是空緩沖區(qū)被其他數(shù)據(jù)塊所覆蓋。一旦這個(gè)緩沖區(qū)被修改過(guò)DBWR把他從LRU
32、隊(duì)列中移出,放到LRUW隊(duì)列(也叫贓緩沖區(qū))中,等待DBWR把他們批量寫(xiě)入數(shù)據(jù)文件,然后再把他們的緩沖區(qū)連接到LRU隊(duì)列的尾部,周而復(fù)始的工作。理解HASH算法,為了提高速度Oracle在設(shè)計(jì)中采用了大量的HASH算法,這里我們講一下HASH算法的理論知識(shí),在以后的閱讀中會(huì)對(duì)Oracle有更好的理解。HASH是一種以空間換取時(shí)間的做法。假如我有100萬(wàn)條數(shù)據(jù),以隊(duì)列的方式存儲(chǔ),如果我要從里面找一條數(shù)據(jù),那么我要從頭開(kāi)始找,我所需要的空間是100萬(wàn)個(gè)存儲(chǔ)單元,如果我用HASH的方法來(lái)存儲(chǔ),我把存儲(chǔ)空間劃分為1000*2000的數(shù)組,把100萬(wàn)個(gè)數(shù)據(jù)分別按照如下規(guī)則添入該數(shù)組:1. 定義一個(gè)函數(shù),
33、使得每條數(shù)據(jù)對(duì)應(yīng)一個(gè)0-999的值2. 把該行記錄存儲(chǔ)在以函數(shù)返回值為下標(biāo)的數(shù)組里3. 我們稱(chēng)該函數(shù)為hash函數(shù)f(row).hash函數(shù)的返回值為hash值.數(shù)組為hash數(shù)組HashArraynm.即有下列公式findaunusedbufferinHashArrayf(row)?HashArrayf(row)?=row;這樣,當(dāng)我們需要一個(gè)行時(shí)候我們只需簡(jiǎn)單的計(jì)算該行的hash值,然后到下標(biāo)為hash值的hash數(shù)組里找就可以了。即使用最簡(jiǎn)單的方法也可以很快的找到For(I=1;I<=2000;I+)If(HashArrayf(row)I.=row)return;Next當(dāng)
34、然HASH算法還是很復(fù)雜的,這里只是一個(gè)最最簡(jiǎn)單的例子。如果大家有興趣可以看看有關(guān)數(shù)據(jù)結(jié)構(gòu)的資料,這里就不具體展開(kāi)了。2、LATCH(Oracle內(nèi)部鎖)有許多人問(wèn)我Latch和Lock的區(qū)別,其實(shí)很簡(jiǎn)單,Latch是Oracle內(nèi)部的Lock,他負(fù)責(zé)更為細(xì)小的內(nèi)部讀寫(xiě),比如Oracle要把用戶(hù)更新的數(shù)據(jù)寫(xiě)入緩沖區(qū),這時(shí)候Oracle就會(huì)在該緩沖區(qū)上加上latch,用來(lái)防止DBWR把他寫(xiě)出到磁盤(pán),因?yàn)槿绻麤](méi)有這個(gè)Latch,DBWR會(huì)把一半新一半老沒(méi)有用的數(shù)據(jù)寫(xiě)到磁盤(pán)上。五、常見(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)境變
35、量ORACLE_SID,初始化文件initSID.ora,那究竟什么是SID呢?其實(shí)SID就是Oracle實(shí)例的標(biāo)識(shí),不同的SID對(duì)應(yīng)不同的內(nèi)存緩沖(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ù)被稱(chēng)做單節(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中被稱(chēng)為OPS(OracleParal
36、lelServer),在Oracle9i中被稱(chēng)為RAC(realapplicationcluster)。在這種數(shù)據(jù)庫(kù)中。兩個(gè)/多個(gè)實(shí)例分別在不同服務(wù)器上,所有Oracle數(shù)據(jù)文件在共享的磁盤(pán)陣列上,多個(gè)服務(wù)器上的實(shí)例可以同時(shí)工作,他們通過(guò)一個(gè)內(nèi)部的網(wǎng)絡(luò)進(jìn)行通信。如果一臺(tái)服務(wù)器不能提供服務(wù)的話,另一臺(tái)會(huì)接管它的工作,特別是在關(guān)鍵的業(yè)務(wù)有很大的潛力。3、在運(yùn)行的數(shù)據(jù)庫(kù)中數(shù)據(jù)文件中是不是可能存在沒(méi)有被提交的數(shù)據(jù)?這是可能存在的,因?yàn)橛脩?hù)數(shù)據(jù)文件的數(shù)據(jù)是由DBWR寫(xiě)入的,DBWR是一個(gè)很底層的后臺(tái)進(jìn)程,不負(fù)責(zé)與用戶(hù)交互。用戶(hù)的交互是由LGWR完成的。4、在問(wèn)題3中,如果存在沒(méi)有寫(xiě)入的數(shù)據(jù),那么機(jī)器突然斷電,數(shù)據(jù)完整性會(huì)不會(huì)損壞?不會(huì)的,因?yàn)閿?shù)據(jù)庫(kù)的完整性是LGWR來(lái)保證的,而且ORACLE保證了DBWR寫(xiě)入數(shù)據(jù)文件的任何修改已經(jīng)被記錄在重做日志文件中。當(dāng)系統(tǒng)再次啟動(dòng)的時(shí)候,通過(guò)讀取重做日志文件就可以知道
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 8 沏茶問(wèn)題(說(shuō)課稿)-2024-2025學(xué)年四年級(jí)上冊(cè)數(shù)學(xué)人教版001
- Unit 8 I can do this for you?(說(shuō)課稿)-2024-2025學(xué)年譯林版(三起)(2024)英語(yǔ)三年級(jí)上冊(cè)
- Review Module Unit 1(說(shuō)課稿)-2023-2024學(xué)年外研版(三起)英語(yǔ)五年級(jí)下冊(cè)
- 2024-2025學(xué)年新教材高中生物 第5章 基因突變及其他變異 微專(zhuān)題六 遺傳變異相關(guān)的解題方法說(shuō)課稿 新人教版必修第二冊(cè)
- 2025合同樣例舞臺(tái)燈光音響租賃合同范本
- 2024春八年級(jí)語(yǔ)文下冊(cè) 第1單元 2回延安說(shuō)課稿 新人教版
- 5草船借箭說(shuō)課稿-2023-2024學(xué)年五年級(jí)下冊(cè)語(yǔ)文統(tǒng)編版
- Unit1 Making friends(說(shuō)課稿)-2024-2025學(xué)年人教PEP版(2024)英語(yǔ)三年級(jí)上冊(cè)
- 2024-2025學(xué)年高中化學(xué) 第一章 物質(zhì)結(jié)構(gòu)元素周期律 第一節(jié) 元素周期表第3課時(shí)說(shuō)課稿3 新人教版必修2
- 陽(yáng)光板雨棚施工方案
- 云南省曲靖市羅平縣2024-2025學(xué)年高二上學(xué)期期末地理試題( 含答案)
- 中國(guó)糖尿病防治指南(2024版)要點(diǎn)解讀
- Unit 1 Nice boys and girls【知識(shí)精研】-一年級(jí)英語(yǔ)下學(xué)期(人教PEP版一起)
- 《口腔科學(xué)緒論》課件
- 2024年高考數(shù)學(xué)(理)試卷(全國(guó)甲卷)(空白卷)
- 2024版CSCO胰腺癌診療指南解讀課件
- 《應(yīng)急管理行政執(zhí)法人員依法履職管理規(guī)定》知識(shí)培訓(xùn)
- 《醫(yī)療機(jī)構(gòu)環(huán)境表面清潔與消毒管理規(guī)范》-華西醫(yī)院案例
- 2024年黑龍江農(nóng)業(yè)工程職業(yè)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)
- 合同簽訂執(zhí)行風(fēng)險(xiǎn)管控培訓(xùn)
- DB43-T 3022-2024黃柏栽培技術(shù)規(guī)程
評(píng)論
0/150
提交評(píng)論