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