oracle中的一些基本概念

  Oracle數據庫的物理文件是存儲在磁盤上的數據文件、控制文件和日誌文件的總稱。數據文件和日誌文件是數據庫中最重要的文件。數據庫由若干個表空間組成,表空間由表組成,表由段組成,段由區間組成,區間由數據塊組成。那麼,數據在數據文件中是如何組織的呢?要了解這些內容咱們首先必須理解什麼是表空間(tablespace)、段(segment)、區(extent)、塊(block),這些都是oracle數據庫在數據文件中組織數據的基本單元。html

  塊(block)是數據存儲的物理單位,也是數據文件中最基礎的單位。數據直接存儲在塊上,塊是oracle空間分配的最小單位。oracle中的塊大小常見的有三種:2KB、4KB、8KB。塊的大小在數據庫建立時就已經固定下來,數據庫中每一個塊的大小都是相同的,並且全部的塊都有相同的格式,由「塊頭+表目錄+行目錄+空閒空間+數據空間」組成。塊頭包含着塊類型(好比是表塊、仍是索引塊)的信息、磁盤上塊的位置等信息。表目錄(table directory),若是有的話,包含着此塊中存儲各行的表的信息(若是一個塊中存有多個表中的數據)。行目錄(row directory)包含着數據行的描述信息,它是一個指針數組,指示了每一行在數據塊中的物理位置。塊頭、表目錄、行目錄統稱爲塊開銷(block overhead),是oracle用來統計、管理塊自己的。剩下的兩部分很簡單,已經存有數據的就是數據空間,暫時沒存的就是空閒空間。數據庫

  區(extent)又叫盤區,是數據文件中一個連續的分配空間,它比塊要大,由塊組成。有些對象分配空間時可能至少須要兩個盤區,好比回滾段,而這兩個盤區不必定要求相連。區的大小從一個塊到2GB不等。數組

  段(segment)是oracle數據庫中的分配單位,對象如表、索引等都是以段爲單位進行分配。當建立一個表時將建立一個表段,建立一個索引時就建立一個索引段。每個消耗存儲空間的對象最終被存儲到一個單一的段中。如回滾段、臨時段、聚簇段、索引段等。服務器

  1)數據段:每一個不在簇中的表都有一個數據段。表中的全部數據都存儲在數據段的區間中。每個簇都有一個數據段,簇中每一個表的數據都存儲在簇的數據段中。oracle

  2)索引段:每一個索引都有一個索引段,存儲全部的索引數據。post

  3)臨時段:當執行SQL語句須要臨時工做區時,Oracle將建立臨時區。spa

  4)回滾段:若是當前系統處於自動重作管理模式,則數據庫服務器使用表空間來管理重作的空間。若是使用手動重作管理模式,則數據庫管理員須要建立一個或多個回滾段,用於臨時存儲重作信息。回滾段中的信息將在數據庫恢復過程當中使用到。.net

  可是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

相關文章
相關標籤/搜索