




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第二章 oracle數(shù)據(jù)庫體系結(jié)構(gòu)續(xù),2.4 數(shù)據(jù)庫物理結(jié)構(gòu),數(shù)據(jù)庫是數(shù)據(jù)存儲的容器,作用是用來收集、存儲數(shù)據(jù)和返回信息。 數(shù)據(jù)庫的存儲結(jié)構(gòu)就是數(shù)據(jù)庫存儲數(shù)據(jù)的方式。前面已經(jīng)談到數(shù)據(jù)庫的存儲結(jié)構(gòu)可以分為邏輯結(jié)構(gòu)和物理結(jié)構(gòu)兩個方面,兩者相互獨立又密切相關(guān),從邏輯結(jié)構(gòu)方面講,oracle 數(shù)據(jù)庫以邏輯結(jié)構(gòu)進行內(nèi)部的管理和維護的,這些結(jié)構(gòu)包括表空間、段、區(qū)和塊。 從物理結(jié)構(gòu)方面講,oracle 數(shù)據(jù)庫有外部的存儲方法,oracle 數(shù)據(jù)庫由一系列的物理文件組成,主要有數(shù)據(jù)文件、控制文件和重做日志文件,物理結(jié)構(gòu)以及和表空間的關(guān)系如圖,數(shù)據(jù)文件:用于存放所有的系統(tǒng)和用戶數(shù)據(jù),默認以dbf 為擴展名。 日
2、志文件:記錄了對數(shù)據(jù)庫進行的所有操作,默認以log 為擴展名。 控制文件:記錄了數(shù)據(jù)庫所有文件的控制信息,默認以ctl 為擴展名。 oracle 將這些文件默認安裝在oracle 安裝目錄下的oradata 子目錄下,以實例命名的子 目錄下。在創(chuàng)建新的數(shù)據(jù)庫時,可以選擇數(shù)據(jù)庫的安裝目錄,2.4.1 數(shù)據(jù)文件(data files,數(shù)據(jù)文件是用于存儲數(shù)據(jù)庫數(shù)據(jù)的物理文件,它由若干個操作系統(tǒng)文件組成,在數(shù)據(jù)文件中存儲著用戶數(shù)據(jù)(表、索引等)、數(shù)據(jù)字典以及回滾段數(shù)據(jù)等。 數(shù)據(jù)文件和表空間有著密切的關(guān)系,oracle 數(shù)據(jù)庫至少要包含一個數(shù)據(jù)文件,并且數(shù)據(jù)文件是表空間的物理組成元素,一個表空間可以包含
3、多個數(shù)據(jù)文件,并且每個數(shù)據(jù)文件只能惟一地屬于某個表空間。 關(guān)于“表空間”在后面會給大家詳細介紹,實例2-3】查看數(shù)據(jù)文件的位置和名稱,1)以管理員身份登錄 sql connect / as sysdba 已連接,2.4.2 日志文件(redo log files,重做日志文件是用于記錄數(shù)據(jù)庫變化的物理文件,其作用是在發(fā)生意外時恢復(fù)oracle數(shù)據(jù)庫。 默認為每個數(shù)據(jù)庫創(chuàng)建3 個重做日志文件,每個日志文件作為一個組(數(shù)據(jù)庫至少要包含兩個重做日志組)。日志組的文件是循環(huán)使用的,當一個日志寫滿后,自動切換到另一個日志文件。 重做日志有兩種工作模式,歸檔模式和非歸檔模式。在歸檔模式下,將對重做日志文件
4、進行歸檔,保留所有的重做日志記錄,這樣數(shù)據(jù)庫可以從所有類型的失敗中恢復(fù)。非歸檔模式不保留以前的重做日志記錄,這樣數(shù)據(jù)庫只能從掉電等事件中恢復(fù),實例2-4】查看日志文件的位置和名稱,2.4.3 控制文件(control files,控制文件是一個很小的二進制文件,用于記錄和維護數(shù)據(jù)庫結(jié)構(gòu),oracle 數(shù)據(jù)庫至少要包含一個控制文件。一般情況下,實例和數(shù)據(jù)庫是一一對應(yīng)的關(guān)系,oracle 數(shù)據(jù)庫通過控制文件在實例和數(shù)據(jù)庫之間建立關(guān)聯(lián)。 在啟動數(shù)據(jù)庫時,系統(tǒng)會根據(jù)初始化參數(shù)control_files來定位控制文件,oracle 從控制文件中讀取組成數(shù)據(jù)庫所有物理文件的信息,這樣就可以打開必要的文件。
5、如果控制文件丟失或出現(xiàn)錯誤,數(shù)據(jù)庫的啟動就會失敗。為了保護數(shù)據(jù)庫的安全,oracle 采用復(fù)合控制文件,即控制文件同時可以有多個鏡像,查看控制文件內(nèi)容:alter database backup controlfrile to trace as /home/oracle/ctl.trc,實例2-5】查看日志文件的位置和名稱,2.4.4 歸檔日志文件(archivelog,重做日志可用于進行“實例恢復(fù)”(例如電源斷電時的恢復(fù)), 但如果執(zhí)行介質(zhì)恢復(fù)(例如數(shù)據(jù)文件意外丟失),則必須要用到歸檔日志。歸檔日志是非活動重做日志的備份,數(shù)據(jù)庫只有處于archivelog 模式時才會生成歸檔日志,并且每次日
6、志切換都會生成歸檔日志,如圖所示,假定數(shù)據(jù)庫只包含兩個日志組,并且處于archivelog 模式。初始階段lgwr 會將事務(wù)變化寫入到日志組一,當日志組一寫滿之后,lgwr 會將事務(wù)變化寫入到日志組二中, 并且會促使arcn 進程將日志組一的內(nèi)容保存到歸檔日志中,依此類推,實例2-6】查看歸檔模式,2.4.5 初始化參數(shù)文件,除了以上文件,oracle 數(shù)據(jù)庫中還用到初始化參數(shù)文件(parameter file)、口令文件(password file)、跟蹤文件(trace file)和警告文件(alert file)。 實例是由一組內(nèi)存結(jié)構(gòu)和后臺進程組成的,那么這些內(nèi)存結(jié)構(gòu)到底要占用多大內(nèi)存
7、,且當啟動實例時會運行哪些后臺進程呢?這是通過定義參數(shù)文件中的初始化參數(shù)來完成的, 初始化參數(shù)文件有兩種: 靜態(tài)初始化參數(shù)文件,該文件是一個可以編輯的文本文件; 服務(wù)器端初始化參數(shù)文件,一個二進制格式的文件,駐留在服 務(wù)器端。 初始化參數(shù)會在以后的章節(jié)介紹,2.4.6 其他文件,其他文件主要包括口令文件(password file)、跟蹤文件(trace file)和警告文件(alertfile)。它們屬于操作系統(tǒng)文件,不是數(shù)據(jù)庫文件的一部分。 口令文件用于存放特權(quán)用戶及其口令的文件,“特權(quán)用戶”是指具有啟動、關(guān)閉oracle服務(wù)器并建立數(shù)據(jù)庫等特殊權(quán)利的用戶。sys 賬戶是一個具有系統(tǒng)管理員
8、特權(quán)的賬戶。 跟蹤文件用于存放后臺進程和服務(wù)器進程的跟蹤信息。后臺進程跟蹤文件存放著后臺進,2.4.6 其他文件,跟蹤文件用于存放后臺進程和服務(wù)器進程的跟蹤信息。后臺進程跟蹤文件存放著后臺進程的警告和錯誤信息,并且每個后臺進程都有相應(yīng)的跟蹤文件。服務(wù)器進程跟蹤文件用于存放sql 語句的跟蹤信息,并且只有在激活sql 跟蹤后才會生成服務(wù)器進程跟蹤文件,該類文件會記載sql 語句的執(zhí)行時間、執(zhí)行計劃等信息,并且主要用于sql 語句調(diào)整。 警告文件由連續(xù)的消息和錯誤組成。通過查看警告文件,可以查看到oracle 內(nèi)部錯誤、塊損壞錯誤以及非默認的初始化參數(shù)值,并且可以監(jiān)視特權(quán)用戶的所有操作,例如啟動、
9、關(guān)閉數(shù)據(jù)庫等,2.5 數(shù)據(jù)庫邏輯結(jié)構(gòu),在oracle 數(shù)據(jù)庫中,數(shù)據(jù)被組織成邏輯對象,如我們常用的表、視圖、索引等數(shù)據(jù)對象。 為了很好的組織和管理這些對象,需要合理的分配空間。邏輯對象存儲是通過表空間 (table space)、段(segment)、數(shù)據(jù)區(qū)間(extent,簡稱區(qū))和數(shù)據(jù)塊(block)來完成的。 它們并不是相互獨立的,表空間包含一些段,段由數(shù)據(jù)區(qū)間組成,數(shù)據(jù)區(qū)間由連續(xù)的數(shù)據(jù)塊 組成。它們的作用和相互的關(guān)系如圖,2.5 數(shù)據(jù)庫邏輯結(jié)構(gòu),2.5.1 表空間,表空間用于組織數(shù)據(jù)庫的數(shù)據(jù),數(shù)據(jù)庫邏輯上由一個或多個表空間組成,而表空間物理 上是由一個或多個數(shù)據(jù)文件組成的。 通過使用多
10、個表空間,數(shù)據(jù)庫的數(shù)據(jù)對象被分門別類存放在不同的表空間中。這樣數(shù)據(jù)庫的管理員可以有效的控制數(shù)據(jù)庫的磁盤空間,并控制用戶的空間使用配額。 通過使用不同類型的表空間,還可以提高數(shù)據(jù)訪問的性能,system 表空間是系統(tǒng)表空間,用來存放表空間、數(shù)據(jù)文件等管理信息;users 表空間,用來存放用戶的私有信息。管理員可以為其他數(shù)據(jù)庫應(yīng)用創(chuàng)建新的表空間,實例2-7】查看表空間,2.2 oracle 內(nèi)存結(jié)構(gòu),oracle 的內(nèi)存由系統(tǒng)全局區(qū)(system global area,簡稱sga)和程序全局區(qū)(program global area,簡稱pga)組成。 sga 是一組由oracle 分配的共享內(nèi)
11、存區(qū)域,用戶和進程可以共享其中的信息,在實例 啟動時分配。當實例啟動時,sga 存儲區(qū)被自動分配,當實例關(guān)閉時,存儲區(qū)被回收,在啟動數(shù)據(jù)庫實例時,可以看到sga 分配的信息 在實例啟動后也可用show sga(或select * from v$sga)顯示sga 信息。 pga 是數(shù)據(jù)庫服務(wù)器內(nèi)存中為進程分配的專用的內(nèi)存區(qū)域,是進程私有的內(nèi)存區(qū),在 進程啟動時分配,1.5.2 段,段是一個動態(tài)存儲分配概念。它用來存儲能夠自動增長的數(shù)據(jù)庫對象,如表會隨著數(shù)據(jù)的插入不斷擴大所占有的存儲空間, 一般情況下一個數(shù)據(jù)庫對象擁有一個段。 段由多個區(qū)組成,這些區(qū)可以連續(xù),也可以不連續(xù)。表空間可以包含一個或多
12、個段,但一個段只能屬于一個表空間。 段有多種類型,不同的數(shù)據(jù)庫對象需要分配不同類型的段。存放表的段稱為數(shù)據(jù)段; 存放索引的段稱為索引段; 用來存放排序操作所產(chǎn)生的臨時數(shù)據(jù)的段稱為臨時段,臨時段在必要時創(chuàng)建,使用完畢后即撤銷; 存放事務(wù)對數(shù)據(jù)的修改的舊值的段稱為回滾段,回滾段的作 用是用來撤銷對數(shù)據(jù)的修改,2.5.3 區(qū)(extents,數(shù)據(jù)區(qū)間簡稱為區(qū),區(qū)是為段分配空間的邏輯單位,oracle 在分配空間時,并不是以塊為單位進行的,而是將多個連續(xù)的塊一次性的分配給數(shù)據(jù)庫對象。這些連續(xù)的塊在回收存儲 空間時,也一起回收。這些連續(xù)的數(shù)據(jù)塊就是數(shù)據(jù)區(qū)間。 當創(chuàng)建一個數(shù)據(jù)庫對象時,oracle為這些對
13、象創(chuàng)建一個段,并分配初始區(qū)。當段中的初始區(qū)的存儲空間使用完畢后,oracle會為段自動分配新的區(qū),每個區(qū)的大小不要求相同,2.5.4 數(shù)據(jù)塊,數(shù)據(jù)塊是oracle 數(shù)據(jù)庫i/o 最基本的單位,也是最小的邏輯存儲單位。oracle 數(shù)據(jù)庫以塊為單位進行邏輯讀/寫操作。常見塊的大小為2kb 或4kb,通常為操作系統(tǒng)數(shù)據(jù)塊大小的整數(shù)倍。 在oracle9i 之前,數(shù)據(jù)塊的尺寸是由初始化參數(shù)db_block_size 確定的。在建立了數(shù)據(jù)庫之后數(shù)據(jù)塊的尺寸是不能改變的,并且所有表空間的數(shù)據(jù)塊尺寸都是完全相同的。 從oracle9i 開始,允許不同類型的表空間采用不同的數(shù)據(jù)塊尺寸,oracle9i 仍然
14、保留了初始化參數(shù)db_block_size,此時該參數(shù)用于定義默認(也稱標準)數(shù)據(jù)塊的尺寸,并且system表空間的數(shù)據(jù)塊會使用該尺寸,而其他表空間則可以根據(jù)情況來確定數(shù)據(jù)塊尺寸,實例2-8】查看標準塊的大小,2.6 sql 語句的處理,在本章的最后,我們通過sql 語句的提交和處理過程來進一步了解oracle 服務(wù)器的工 作原理。用戶的sql 語句根據(jù)其特點可劃分為, 返回查詢結(jié)果的查詢語句; 生成日志記錄dml 操作; 確保數(shù)據(jù)寫入數(shù)據(jù)庫,并在實例故障時可以恢復(fù)的commit 操作,2.6.1 連接和建立會話,當客戶應(yīng)用需要執(zhí)行sql 語句時,首先要建立用戶進程,同時在服務(wù)器端會自動為該用
15、戶進程派生一個新的服務(wù)進程。默認情況下,用戶進程與服務(wù)器進程是一一對應(yīng)的關(guān)系。 當客戶端運行sql 語句時,用戶進程會通過網(wǎng)絡(luò)將該sql 語句發(fā)送到對應(yīng)的服務(wù)進程,并且由服務(wù)進程執(zhí)行該sql 語句,服務(wù)器進程在執(zhí)行了sql 語句之后,會將sql 語句的結(jié)果通過網(wǎng)絡(luò)返回到用戶進程,2.6 sql 語句的處理,連接”(connection)是用戶進程到服務(wù)器進程的網(wǎng)絡(luò)通信通道,連接和用戶進程是一 一對應(yīng)的; 而“會話”(session)則是特定用戶的連接,連接和會話是一對多的關(guān)系,但同一時刻一個連接對應(yīng)于一個會話。 例如,當以sql*plus 連接到oracle 服務(wù)器時,需要建立了一個物理“連接
16、”。而以scott用戶登錄后,會建立scott 會話,2.6.2 處理查詢語句,查詢操作分為4 個步驟: 語句解析(parse) 綁定變量(bind) 執(zhí)行(execute) 提取數(shù)據(jù)(fetch,1)語句解析,當一個查詢語句(select)發(fā)送到服務(wù)器端后,服務(wù)進程首先使用oracle 內(nèi)部的“散列”(hash)函數(shù)取得該語句的解析代碼值,如果在共享池中存在相同的解析代碼值,表明 該語句已經(jīng)存在,那么服務(wù)器進程會跳過“解析”階段,直接轉(zhuǎn)入下一階段。 如果該解析代碼值在共享池中不存在,服務(wù)器進程會檢查該語句是否符合sql 語法規(guī)則,并檢查表名、列名是否正確,以及是否有相應(yīng)的查詢權(quán)限,然后生成該
17、語句的“執(zhí)行計 劃”,最終將select 語句和執(zhí)行計劃裝載到庫高速緩存。 執(zhí)行計劃實際是oracle 內(nèi)部執(zhí)行sql 語句的具體步驟,執(zhí)行計劃的優(yōu)劣會對應(yīng)用系統(tǒng)性能產(chǎn)生很大的影響,所以在開發(fā)應(yīng)用系統(tǒng)時一定要采用“執(zhí)行計劃最佳”的sql 語句。 例如,一個表上建立有索引和沒有索引,生成的執(zhí)行計劃可能是不同的,2)綁定變量,在此階段,如果查詢語句中有綁定變量,語句就要獲得綁定的變量值。 3)執(zhí)行 經(jīng)過語句解析,oracle 最終生成了執(zhí)行計劃,并將該執(zhí)行計劃裝載到了庫高速緩存。在執(zhí)行階段,服務(wù)器進程將按照執(zhí)行計劃中所安排的步驟來執(zhí)行select 語句。 首先,服務(wù)器進程要確定被選擇行所在數(shù)據(jù)塊是
18、否已經(jīng)被讀取到數(shù)據(jù)高速緩存,如果該數(shù)據(jù)塊內(nèi)容已經(jīng)被讀取到數(shù)據(jù)高速緩存,則轉(zhuǎn)入“提取數(shù)據(jù)”階段; 如果該數(shù)據(jù)塊沒有被讀取到數(shù)據(jù)高速緩存,那么服務(wù)進程會將數(shù)據(jù)塊內(nèi)容復(fù)制到數(shù)據(jù)高速緩存的緩沖區(qū)中,4)提取數(shù)據(jù)(fetch,經(jīng)過語句執(zhí)行之后,被選擇行所在數(shù)據(jù)塊內(nèi)容已經(jīng)被復(fù)制到了數(shù)據(jù)高速緩存的緩沖區(qū) 中。在提取數(shù)據(jù)階段,服務(wù)器進程從數(shù)據(jù)高速緩存中選擇相應(yīng)數(shù)據(jù)行,并將結(jié)果返回到用戶 進程,1.6.3 處理dml 語句,處理dml 語句分為3 個步驟: 語句解析(parse) 綁定變量(bind) 執(zhí)行(execute) 1語句解析 類似于處理select 語句的過程,服務(wù)器進程根據(jù)hash 函數(shù)生成該語句
19、的解析代碼 值,然后檢查dml 語句語法、dml 語句所對應(yīng)的表名、列名等,最終生成該語句的執(zhí)行 計劃,然后將dml 語句及執(zhí)行計劃存儲到庫高速緩存,2綁定變量 在此階段,如果dml 語句中有綁定變量,語句就要獲得綁定的變量值。 3執(zhí)行dml 在經(jīng)過語句解析之后,dml 語句的執(zhí)行計劃被存儲到了庫高速緩存。在執(zhí)行階段,服務(wù)器進程將按照解析階段所生成的執(zhí)行計劃來執(zhí)行該dml 語句。 對于update 語句,服務(wù)進程首先要檢查對應(yīng)的數(shù)據(jù)塊和回滾塊在數(shù)據(jù)高速緩存中是否已經(jīng)存在,如果不存在,則會從數(shù)據(jù)文件中將對應(yīng)的數(shù)據(jù)塊和回滾塊內(nèi)容復(fù)制到數(shù)據(jù)高速緩存?;貪L塊用來存儲舊值,這樣在必要時就可以回滾dml 語句。 然后,服務(wù)器進程在要修改的數(shù)據(jù)行上加鎖,防止其他用戶修改該數(shù)據(jù),最后,服務(wù)器進程將舊數(shù)據(jù)寫入到回滾塊所對應(yīng)的緩沖區(qū),將新數(shù)據(jù)寫入到數(shù)據(jù)塊所對應(yīng)的緩沖區(qū)。同時將數(shù)據(jù)塊和回滾塊的變化記載到重做日志緩沖區(qū)。服務(wù)器進程寫入數(shù)據(jù)塊和回滾塊都是在數(shù)據(jù)高速緩存中完成的。
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 源計劃卡特改版后
- 網(wǎng)絡(luò)設(shè)備維護計劃
- 游戲計劃的意思是
- 2025至2030年中國奧硝唑氯化鈉注射液數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國多槽式超聲波汽相清洗機數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國卷管車數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國十八速后撥導(dǎo)輪數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國刺繡字畫數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國二元包裝成套氣霧劑灌裝機數(shù)據(jù)監(jiān)測研究報告
- 護膚用品企業(yè)數(shù)字化轉(zhuǎn)型與智慧升級戰(zhàn)略研究報告
- 2025年01月2025廣東深圳市何香凝美術(shù)館公開招聘應(yīng)屆高校畢業(yè)生2人筆試歷年典型考題(歷年真題考點)解題思路附帶答案詳解
- 園林聘用勞動合同
- 300畝文冠果樹栽培基地建設(shè)項目可行性研究報告
- 2025年菏澤職業(yè)學(xué)院高職單招職業(yè)技能測試近5年常考版參考題庫含答案解析
- 2025年江西生物科技職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性測試近5年??及鎱⒖碱}庫含答案解析
- 2025年度企業(yè)安全生產(chǎn)與環(huán)保管理服務(wù)協(xié)議范本3篇
- 2025-2030年中國巧克力產(chǎn)品市場需求狀況及發(fā)展趨勢分析報告
- 上海市發(fā)展改革研究院工作人員招考聘用12人高頻重點提升(共500題)附帶答案詳解
- 六年級下冊音樂全冊教案湖南文藝出版社湘教版
- Tracepro-實例學(xué)習(xí)教程
- 進貨單出貨單(Excel表格模板)
評論
0/150
提交評論