oracle中的一些基本概念
Oracle數(shù)據(jù)庫的物理文件是存儲在磁盤上的數(shù)據(jù)文件、控制文件和日志文件的總稱。數(shù)據(jù)文件和日志文件是數(shù)據(jù)庫中最重要的文件。數(shù)據(jù)庫由若干個表空間組成,表空間由表組成,表由段組成,段由區(qū)間組成,區(qū)間由數(shù)據(jù)塊組成。那么,數(shù)據(jù)在數(shù)據(jù)文件中是如何組織的呢?要了解這些內(nèi)容我們首先必須理解什么是表空間(tablespace)、段(segment)、區(qū)(extent)、塊(block),這些都是oracle數(shù)據(jù)庫在數(shù)據(jù)文件中組織數(shù)據(jù)的基本單元。
塊(block)是數(shù)據(jù)存儲的物理單位,也是數(shù)據(jù)文件中最基礎(chǔ)的單位。數(shù)據(jù)直接存儲在塊上,塊是oracle空間分配的最小單位。oracle中的塊大小常見的有三種:2KB、4KB、8KB。塊的大小在數(shù)據(jù)庫創(chuàng)建時就已經(jīng)固定下來,數(shù)據(jù)庫中每個塊的大小都是相同的,而且所有的塊都有相同的格式,由“塊頭+表目錄+行目錄+空閑空間+數(shù)據(jù)空間”組成。塊頭包含著塊類型(比如是表塊、還是索引塊)的信息、磁盤上塊的位置等信息。表目錄(table directory),如果有的話,包含著此塊中存儲各行的表的信息(如果一個塊中存有多個表中的數(shù)據(jù))。行目錄(row directory)包含著數(shù)據(jù)行的描述信息,它是一個指針數(shù)組,指示了每一行在數(shù)據(jù)塊中的物理位置。塊頭、表目錄、行目錄統(tǒng)稱為塊開銷(block overhead),是oracle用來統(tǒng)計、管理塊本身的。剩下的兩部分很簡單,已經(jīng)存有數(shù)據(jù)的就是數(shù)據(jù)空間,暫時沒存的就是空閑空間。
區(qū)(extent)又叫盤區(qū),是數(shù)據(jù)文件中一個連續(xù)的分配空間,它比塊要大,由塊組成。有些對象分配空間時可能至少需要兩個盤區(qū),比如回滾段,而這兩個盤區(qū)不一定要求相連。區(qū)的大小從一個塊到2GB不等。
段(segment)是oracle數(shù)據(jù)庫中的分配單位,對象如表、索引等都是以段為單位進行分配。當(dāng)創(chuàng)建一個表時將創(chuàng)建一個表段,創(chuàng)建一個索引時就創(chuàng)建一個索引段。每一個消耗存儲空間的對象最終被存儲到一個單一的段中。如回滾段、臨時段、聚簇段、索引段等。
1)數(shù)據(jù)段:每個不在簇中的表都有一個數(shù)據(jù)段。表中的所有數(shù)據(jù)都存儲在數(shù)據(jù)段的區(qū)間中。每一個簇都有一個數(shù)據(jù)段,簇中每個表的數(shù)據(jù)都存儲在簇的數(shù)據(jù)段中。
2)索引段:每個索引都有一個索引段,存儲所有的索引數(shù)據(jù)。
3)臨時段:當(dāng)執(zhí)行SQL語句需要臨時工作區(qū)時,Oracle將創(chuàng)建臨時區(qū)。
4)回滾段:如果當(dāng)前系統(tǒng)處于自動重做管理模式,則數(shù)據(jù)庫服務(wù)器使用表空間來管理重做的空間。如果使用手動重做管理模式,則數(shù)據(jù)庫管理員需要創(chuàng)建一個或多個回滾段,用于臨時存儲重做信息。回滾段中的信息將在數(shù)據(jù)庫恢復(fù)過程中使用到。
但是oracle11g中加入了新的特性:為了節(jié)省存儲空間,對空表不建立段,這可能會導(dǎo)致我們導(dǎo)出數(shù)據(jù)庫的時候空表無法導(dǎo)出,關(guān)于解決方法請參考文章Oracle 11g導(dǎo)出空表、少表的解決辦法。
表空間(tablespace)是一個邏輯容器,是為了統(tǒng)一Oracle物理和邏輯的結(jié)構(gòu)而專門建立的。從物理上來說,一個表空間是由具體的一個或多個物理文件構(gòu)成的;從邏輯上來說一個表空間是由具體的一個或多個用戶模式下的表、索引等數(shù)據(jù)構(gòu)成。在Oracle中表不可能單獨存在,一定隸屬于某一個用戶,而某用戶的數(shù)據(jù)必定存在于某個表空間中。
方案(schema)又叫模式,是比表空間小一級的邏輯概念,它也是一個邏輯容器。多個用戶可能共用一個表空間,那如何區(qū)分開每一個用戶?那么在表空間中對每個用戶都有一個對應(yīng)的方案,用于保存單個用戶的信息。
oracle中存儲的層次結(jié)構(gòu)總結(jié)如下:
1)數(shù)據(jù)庫由一個或多個表空間組成;
2)表空間由一個或多個數(shù)據(jù)文件組成,一個表空間包含多個段;
3)段由一個或多個區(qū)組成;
4)區(qū)是數(shù)據(jù)文件中一個連續(xù)的分配空間,由一個或多個塊組成;
5)塊是數(shù)據(jù)庫中最小、最基本的單位,是數(shù)據(jù)庫使用的最小的I/O單元;
6)每個用戶都有一個對應(yīng)的方案。
?
參考資料:
http://www.cnblogs.com/gsk99/archive/2011/04/14/2016216.html
http://m.oschina.net/blog/76768
轉(zhuǎn)載于:https://www.cnblogs.com/ningvsban/p/3604545.html
總結(jié)
以上是生活随笔為你收集整理的oracle中的一些基本概念的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Matlab标识指令中字符的精细控制
- 下一篇: IOS - UITableViewCel