Oracle體系結(jié)構(gòu)-基礎(chǔ)部分_第1頁
Oracle體系結(jié)構(gòu)-基礎(chǔ)部分_第2頁
Oracle體系結(jié)構(gòu)-基礎(chǔ)部分_第3頁
Oracle體系結(jié)構(gòu)-基礎(chǔ)部分_第4頁
Oracle體系結(jié)構(gòu)-基礎(chǔ)部分_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第2章

Oracle體系結(jié)構(gòu)ORACLE如同人體-它有哪些部分組成呀?每個部分負(fù)責(zé)什么呀?本章內(nèi)容一、物理結(jié)構(gòu)二、邏輯結(jié)構(gòu)三、內(nèi)存結(jié)構(gòu)四、數(shù)據(jù)庫實(shí)例與進(jìn)程五、數(shù)據(jù)字典一、物理結(jié)構(gòu)Oracle數(shù)據(jù)庫文件包括數(shù)據(jù)文件、日志文件、控制文件、配置文件。1、數(shù)據(jù)文件用來存儲數(shù)據(jù)庫中的全部數(shù)據(jù),如數(shù)據(jù)庫表中的數(shù)據(jù)和索引數(shù)據(jù)。通常為后綴名為.dbf格式的文件。每個Oracle可以有一個或多個數(shù)據(jù)文件,一個數(shù)據(jù)文件只能屬于一個數(shù)據(jù)庫。每個數(shù)據(jù)文件又由若干物理塊組成;一個或多個數(shù)據(jù)文件組成表空間;2、日志文件(重做日志文件)用于記錄數(shù)據(jù)庫所做的全部變更(如增加、刪除、修改),以便在系統(tǒng)發(fā)生故障時(shí),用它對數(shù)據(jù)庫進(jìn)行恢復(fù)。名字通常為Log*.dbf格式。3、控制文件用于打開和存取數(shù)據(jù)庫。是較小的二進(jìn)制文件,記錄了數(shù)據(jù)庫的物理結(jié)構(gòu),如:數(shù)據(jù)庫名、數(shù)據(jù)庫的數(shù)據(jù)文件和日志文件的名字和位置等信息。名字通常為Ctr*.ctl格式,如CtrlCIMS.ctl??刂莆募械膬?nèi)容只能夠由Oracle本身來修改。每個數(shù)據(jù)庫必須至少擁有一個控制文件。一個數(shù)據(jù)庫也可有多個控制文件,但是一個控制文件只能屬于一個數(shù)據(jù)庫。4、配置文件:是一個ASCII文本文件,記錄Oracle數(shù)據(jù)庫運(yùn)行時(shí)的一些重要參數(shù)。名字通常為initsid*.ora格式,如:initCIMS.ora,SID相當(dāng)于它所控制的數(shù)據(jù)庫的標(biāo)識符。每個Oracle數(shù)據(jù)庫和實(shí)例都有它自己惟一的init.ora文件。二、Oracle的邏輯結(jié)構(gòu)邏輯結(jié)構(gòu)描述了數(shù)據(jù)庫從邏輯上如何來存儲數(shù)據(jù)塊中的數(shù)據(jù)。包括表空間、段、區(qū)、數(shù)據(jù)塊和模式對象。邏輯結(jié)構(gòu)支配一個數(shù)據(jù)庫如何使用系統(tǒng)的物理空間,模式對象及其之間的關(guān)系則描述關(guān)系數(shù)據(jù)庫之間的設(shè)計(jì)。一個數(shù)據(jù)塊從邏輯上是由一個或多個表空間組成,表空間是數(shù)據(jù)塊中物理編組的數(shù)據(jù)倉庫,每個表空間由段構(gòu)成,段由一組區(qū)組成,一個區(qū)由連續(xù)的數(shù)據(jù)塊組成。1、表空間表空間分類:Oracle中除了用戶創(chuàng)建的存放數(shù)據(jù)對象的數(shù)據(jù)表空間外,還有以下類型的表空間:1)System表空間(SystemTableSpace)2)回滾表空間(RollBackTableSpace)3)臨時(shí)表空間(TempTableSpace)系統(tǒng)表空間(SystemTableSpace):是每個Oracle數(shù)據(jù)庫必須具備部分,安裝時(shí)自動建立,存放表空間名稱、表空間所含數(shù)據(jù)文件等管理數(shù)據(jù)庫自身所需信息;如:數(shù)據(jù)字典、存儲過程、包、函數(shù)和觸發(fā)器定義、系統(tǒng)回滾段、數(shù)據(jù)庫對象定義,用戶過程等。每個Oracle數(shù)據(jù)庫必須至少有個默認(rèn)表空間。系統(tǒng)表空間只保存屬于數(shù)據(jù)庫自身的相關(guān)數(shù)據(jù),用戶對象和數(shù)據(jù)保存在非系統(tǒng)表空間中。臨時(shí)表空間(TempTableSpace):是Oracle用于存儲實(shí)例運(yùn)行過程中產(chǎn)生的所有臨時(shí)數(shù)據(jù),如執(zhí)行SQL語句產(chǎn)生的臨時(shí)表;類似于數(shù)據(jù)庫白板或草稿紙,記錄數(shù)據(jù)和進(jìn)行的操作??梢杂卸鄠€臨時(shí)表空間;無臨時(shí)表空間將使用(SystemTableSpace)回滾表空間(RollBackTableSpace)所有Oracle數(shù)據(jù)庫都需要在一個地方保存恢復(fù)信息(Undo),用于存放回滾段(RollbackSegment)的表空間稱為回滾或簡稱RBS。Oracle將不完整或臨時(shí)中止的事務(wù)恢復(fù)的功能放在其核心功能中;2)表空間使用,在數(shù)據(jù)庫中使用多個表空間具有如下優(yōu)勢:能將數(shù)據(jù)字典與用戶數(shù)據(jù)分,避免因字典對象和用戶對象保存在同一個數(shù)據(jù)文件中而產(chǎn)生的I/O沖突。將回退數(shù)據(jù)與用戶數(shù)據(jù)分離,避免因硬盤損壞而導(dǎo)致永久性數(shù)據(jù)丟失。將表空間數(shù)據(jù)文件分散保存到不同硬盤上,平均分布物理I/O操作。將某個表空間設(shè)置為脫機(jī)狀態(tài)或聯(lián)機(jī)狀態(tài),對數(shù)據(jù)庫的一部分進(jìn)行備份和恢復(fù)。將某個表空間設(shè)置為只讀,將數(shù)據(jù)庫的一部分設(shè)置為只讀狀態(tài)。為某種特殊用途專門設(shè)置一個表空間,比如臨時(shí)表空間等,優(yōu)化表空間的使用效率。更加靈活地為用戶設(shè)置表空間限額。3)表空間中對象存儲若表空間只對應(yīng)一個數(shù)據(jù)文件,該表空間中所有對象都存儲在此數(shù)據(jù)文件中。若表空間對應(yīng)于多個數(shù)據(jù)文件,可將一個對象的數(shù)據(jù)存儲在該表空間的任意一個數(shù)據(jù)文件中,也可將同一個對象的數(shù)據(jù)分布在表空間的多個數(shù)據(jù)文件中。2、段1)數(shù)據(jù)段數(shù)據(jù)段中保存表中記錄。用CREATE語句創(chuàng)建表或簇時(shí),Oracle自動創(chuàng)建數(shù)據(jù)段。Oracle中所有未分區(qū)的表都使用一個段來保存數(shù)據(jù),而分區(qū)的表將為每個分區(qū)建立一個獨(dú)立數(shù)據(jù)段。2)索引段在使用CREATEINDEX語句創(chuàng)建索引時(shí),Oracle為一個索引或一個索引分區(qū)創(chuàng)建索引段。在Oracle數(shù)據(jù)庫中每個未分區(qū)索引都有一個索引段保存索引中索引條目。對于一個分區(qū)索引,每個分區(qū)都有一個索引段保存它的數(shù)據(jù)。3)臨時(shí)段當(dāng)處理查詢時(shí),Oracle可能會需要使用到一些臨時(shí)存儲空間,用于臨時(shí)保存解析過的查詢語句以及在排序過程中產(chǎn)生的臨時(shí)數(shù)據(jù)。Oracle會自動在專門用于存儲臨時(shí)數(shù)據(jù)的表空間為操作分配臨時(shí)段。4)回退段:回滾段用于存放數(shù)據(jù)修改之前的值(包括數(shù)據(jù)修改之前的位置和值),作用主要有以下幾方面:事務(wù)回滾事務(wù)恢復(fù)讀一致性3、區(qū)區(qū)是由很多連續(xù)的數(shù)據(jù)塊組成的數(shù)據(jù)庫存儲空間。缺省情況下,數(shù)據(jù)庫會使用表空間中存儲的存儲參數(shù)來管理他們的區(qū)。主要的幾個存儲參數(shù):Initial:段建立時(shí)分配的第一個區(qū)的大小(單位:字節(jié))Next:段內(nèi)分配的下一個增量區(qū)大小(單位:字節(jié))MaxExtents:分配給段的區(qū)總數(shù)。MinExtents:建立段時(shí)分配的區(qū)的總數(shù),也就是段的最小區(qū)數(shù)量。PctEncrease:為段分配的每個增量區(qū)超過上一個區(qū)的百分比。Initrans:為初試數(shù)量的DML事務(wù)條目(并發(fā)訪問數(shù)據(jù)塊中的行)保留的預(yù)分配空間數(shù)量。Ntkxtrans:當(dāng)多個事務(wù)同時(shí)訪問同一數(shù)據(jù)塊的行時(shí),為數(shù)據(jù)塊中每個DML事務(wù)的條目分配的空間。4、數(shù)據(jù)庫塊數(shù)據(jù)庫塊也稱邏輯塊或Oracle塊,對應(yīng)磁盤上一個或多個物理塊,大小由初始化參數(shù)(db_block_size)在文件(init.ora)決定,典型大小是2k。Pckfree和Pctused兩個參數(shù)用來優(yōu)化數(shù)據(jù)塊空間的使用。

PCTFREE:塊中保留用于UPDATE操作的空間百分比,當(dāng)數(shù)據(jù)占用的空間達(dá)到此上限時(shí),新的數(shù)據(jù)將不能再插入到此塊中;

PCTUSED:指定塊中數(shù)據(jù)使用空間的最低百分比;5、模式對象Oracle數(shù)據(jù)庫的模式對象包括表、視圖、序列、同義詞、索引、觸發(fā)器、存儲過程等。三、內(nèi)存結(jié)構(gòu)系統(tǒng)全局區(qū)、軟件代碼區(qū)、程序全局區(qū)和排序區(qū)。1、系統(tǒng)全局區(qū)(SGA):是實(shí)例的主要部分SGA是內(nèi)存結(jié)構(gòu)的主要組成部分,是Oracle為一個實(shí)例分配的一組共享內(nèi)存緩沖區(qū),保存著Oracle系統(tǒng)與所有數(shù)據(jù)庫用戶的共享信息,包括數(shù)據(jù)維護(hù)、SQL語句分析,重做日志管理等。數(shù)據(jù)塊緩沖區(qū)存放Oracle系統(tǒng)最近從數(shù)據(jù)文件中讀取的數(shù)據(jù)塊。又稱用戶數(shù)據(jù)高速緩沖區(qū),為所有與該實(shí)例相鏈接的用戶進(jìn)程所共享。容量受物理容量限制。在Oracle9i中,緩存大小可直接由初始化參數(shù)DB_ACHESIZE指定,該參數(shù)可以直接以KB字節(jié)或MB字節(jié)為單位來設(shè)置數(shù)據(jù)庫緩存大小。字典緩沖區(qū)字典緩沖區(qū)用于保存數(shù)據(jù)字典中的行。數(shù)據(jù)字典緩沖區(qū)也通過最近最少使用(LRU)算法來管理。大小由數(shù)據(jù)庫內(nèi)部管理。字典緩存區(qū)是SQL共享池的一部分,共享池的大小(以字節(jié)為單位)由數(shù)據(jù)庫文件init.ora中的Shared_pool_size參數(shù)來設(shè)置。重做日志緩沖區(qū)對數(shù)據(jù)庫進(jìn)行修改的任何事務(wù)(Transaction)在記錄到重做日志之前都必須首先放到重做日志緩沖區(qū)(RedoLogBuffer.)中。重做日志緩沖區(qū)是專為此開辟的一塊內(nèi)存區(qū)域,重做日志緩存中的內(nèi)容將被LGWR后臺進(jìn)程隨時(shí)寫入重做日志文件。共享SQL池(SharedSQLPool)相當(dāng)于程序高速緩沖區(qū),所有的用戶程序都存放在共享SQL池中。包括庫高速緩存、數(shù)據(jù)字典高速緩存和服務(wù)器控制結(jié)構(gòu)。共享池大小取決于init.ora文件參數(shù)Shared_pool_size,以字節(jié)為單位用戶必須將該值設(shè)得足夠大,以確保有足夠可用空間來裝載和存儲PL/SQL塊和SQL語句。Java池:Java池為Java命令提供語法分析多緩沖池:緩沖池把大數(shù)據(jù)集與其他的應(yīng)用程序分開,以減少它們爭奪數(shù)據(jù)塊緩沖區(qū)內(nèi)相同的資源??稍赟GA中創(chuàng)建多個緩沖池。2、程序全局區(qū)PGA(ProgramGlobalArea,PGA)是單個Oracle進(jìn)程使用的內(nèi)存區(qū)域,不屬于實(shí)例的內(nèi)存結(jié)構(gòu)。含有單個進(jìn)程工作時(shí)需要的數(shù)據(jù)和控制信息,PGA是非共享的,只有服務(wù)進(jìn)程本身才能夠訪問它自己的PGA區(qū)。3、排序區(qū)排序區(qū)存在于請求排序的用戶進(jìn)程的內(nèi)存中,由于排序需要內(nèi)存空間,Oracle利用該內(nèi)存排序數(shù)據(jù),這部分空間稱為排序區(qū)。該空間的大小為適應(yīng)排序數(shù)據(jù)量的大小,可增長,但受初始化參數(shù):Sort_area_sizer所限制。4、軟件代碼區(qū):用于存儲正在執(zhí)行的或可以執(zhí)行的程序代碼。是只讀,可安裝成共享或非共享。Oracle系統(tǒng)程序是共享的,多個Oracle用戶可存取它,無需在內(nèi)存有多個副本。用戶程序可以共享也可以不共享。四、數(shù)據(jù)庫實(shí)例與進(jìn)程1、Oracle數(shù)據(jù)庫實(shí)例數(shù)據(jù)庫是指物理上的數(shù)據(jù)庫文件或邏輯上的數(shù)據(jù)庫結(jié)構(gòu)?;谥瞎芾砗涂刂莆锢頂?shù)據(jù)庫的軟件系統(tǒng),稱為數(shù)據(jù)庫管理系統(tǒng)(DBMS)。數(shù)據(jù)庫實(shí)例是指軟件系統(tǒng)中用來訪問數(shù)據(jù)庫文件集的存儲結(jié)構(gòu)以及后臺進(jìn)程的集合,它是存取和控制數(shù)據(jù)庫的軟件機(jī)制。2、進(jìn)程進(jìn)程又稱任務(wù),一個進(jìn)程執(zhí)行一組操作,完成一個特定的任務(wù)。對Oracle數(shù)據(jù)庫管理系統(tǒng)來說,進(jìn)程由用戶進(jìn)程、服務(wù)器進(jìn)程和后臺進(jìn)程所組成。進(jìn)程與程序的區(qū)別在于前者是一個動態(tài)概念,后者是一個靜態(tài)實(shí)體;程序僅僅是指令的有序集合,而進(jìn)程則強(qiáng)調(diào)執(zhí)行過程。進(jìn)程可以動態(tài)地創(chuàng)建,完成任務(wù)后即會消亡。用戶進(jìn)程當(dāng)用戶運(yùn)行一個應(yīng)用程序時(shí),系統(tǒng)就為它建立一個用戶進(jìn)程。用戶進(jìn)程執(zhí)行的是一個應(yīng)用程序或Oracle工具程序的代碼,以完成用戶所指定的任務(wù)。用戶進(jìn)程不是實(shí)例。服務(wù)器進(jìn)程服務(wù)器進(jìn)程處理與應(yīng)用程序相連的用戶進(jìn)程的請求,它與用戶進(jìn)程相通訊,為相連的用戶進(jìn)程的Oracle請求服務(wù)。3、后臺進(jìn)程Oracle的后臺進(jìn)程主要包括:SMON——系統(tǒng)監(jiān)控進(jìn)程(SystemMonitor)PMON——進(jìn)程監(jiān)控進(jìn)程(Processmonitor)DBWR——數(shù)據(jù)庫寫進(jìn)程LGWR——日志文件寫進(jìn)程ARCH——?dú)w檔進(jìn)程(Archiverprocess)RECO——恢復(fù)進(jìn)程LCKN——封鎖進(jìn)程進(jìn)程名功能數(shù)據(jù)庫書寫進(jìn)程DBWR將修改過的數(shù)據(jù)塊寫回到數(shù)據(jù)文件日志書寫進(jìn)程LGWR將重做日志記錄寫回到聯(lián)機(jī)日志文件系統(tǒng)監(jiān)視進(jìn)程SMON執(zhí)行崩潰恢復(fù)和聯(lián)合自由空間進(jìn)程監(jiān)視進(jìn)程PMON查看進(jìn)程是否過早斷開,釋放任何容納的鎖,并處理任何其它必要的清除任務(wù)檢查點(diǎn)進(jìn)程CKPT定期檢查數(shù)據(jù)庫歸檔進(jìn)程ARCH將已寫滿的聯(lián)機(jī)日志文件復(fù)制到歸檔日志文件隊(duì)列監(jiān)視進(jìn)程QMON管理消息隊(duì)列恢復(fù)進(jìn)程RECO在分布式數(shù)據(jù)庫中恢復(fù)失敗的事務(wù)Oracle典型后臺進(jìn)程功能五、數(shù)據(jù)字典數(shù)據(jù)字典是Oracle數(shù)據(jù)庫的核心組件,對用戶是只讀類型表和視圖組成。保存著關(guān)于數(shù)據(jù)庫系統(tǒng)本身以及其中存儲的所有對象的基本信息數(shù)據(jù)庫對象中所有框架對象的定義,如表、視圖、索引、群集、同義詞、序列、過程、函數(shù)、包、觸發(fā)器等框架對象如何分配和使用空間列默認(rèn)值完整性約束信息安全信息,如用戶、權(quán)限、角色審計(jì)信息數(shù)據(jù)字典表和視圖均保存在系統(tǒng)表空間1、數(shù)據(jù)字典的結(jié)構(gòu)一個數(shù)據(jù)字典包括基礎(chǔ)表,動態(tài)性能視圖及數(shù)據(jù)字典視圖。數(shù)據(jù)字典視圖又包含ALL視圖,USER視圖和DBA視圖。1)基礎(chǔ)表存儲相關(guān)數(shù)據(jù)庫信息的表,這些數(shù)據(jù)庫的信息包括表、索引、約束,以及所有其他數(shù)據(jù)庫對象結(jié)構(gòu)的信息。它們屬于SYS用戶,通過運(yùn)行SQL腳本來創(chuàng)建(在數(shù)據(jù)庫創(chuàng)建時(shí)自動發(fā)生)。是Oracle系統(tǒng)的核心。只有Oracle才能寫和讀取這些表。基礎(chǔ)表中的存儲的信息通常是經(jīng)過加密處理的。大部分?jǐn)?shù)據(jù)字典基礎(chǔ)表的名稱中都包含“$”等特殊字符。2)動態(tài)性能視圖在操作過程中,Oracle維護(hù)了一種“虛擬”表的集合,記錄當(dāng)前數(shù)據(jù)庫的活動。這些表稱為動態(tài)性能表。SYS擁有動態(tài)性能表,其名字都是以V_$開頭的。在這些表上面創(chuàng)建的視圖被稱為動態(tài)性能視圖(dynamicperformanceview)。可為這些視圖創(chuàng)建公共同義詞,同義詞名稱以V$開頭。3)ALL視圖包含了用戶查詢表時(shí)可以訪問的所有對象的信息。4)USER視圖前綴為USER,每個數(shù)據(jù)庫用戶都擁有一套屬于自己的USER視圖。在USER視圖中包含了該用戶模式下所有

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論