Oracle 邏輯儲存結構
Oracle 邏輯儲存結構
邏輯儲存結構是 Oracle 內部管理資料庫中物件的方式:
database資料庫–>tablespace表空間–> segment段–>extent區–> block塊
一、資料塊(data blocks)
資料塊是 Oracle 資料庫邏輯儲存結構中的最小單位,也是執行資料庫輸入輸出的最小儲存單位。通常Oracle資料塊是作業系統塊的整數倍。資料塊的標準大小被寫入到初始化引數DB_BLOCK_SIZE中,oracle允許在同一個資料庫中存在不同大小的資料塊,與標準塊大小不同的就是非標準塊。
二、資料區(extent)
資料區是由一組連續的Oracle資料塊所構成的Oracle儲存結構,由一個或多個數據塊組成。一個或多個數據區組成一個段,當段中所有空間被使用完後,Oracle系統將自動為該段分配一個新的資料區,可見,資料區是Oracle儲存分配的最小單位。
使用資料區的目的是用來儲存特定資料型別的資料,也是表中資料增長的基本單位。在Oracle資料庫中,分配儲存空間就是以資料區為單位的,一個Oracle物件包含至少一個數據區。設定一個表或索引的儲存引數包含設定它的資料區大小。
三、段(segment)
段是由一個或多個數據區構成的,它不是儲存空間的分配單位,而是一個獨立的邏輯儲存結構,用於儲存表、索引或簇等佔用空間的資料物件。一個段只屬於一個特定的資料物件,每當建立一個具有獨立段的資料物件時,Oracle將為它建立一個段。
1.資料段:資料段中儲存的是表中的資料記錄。建表時Oracle系統將為表建立資料段。當表中資料量增大時,資料段的大小自然也隨著變大,資料段的增大過程是通過向其新增新的資料區來實現的。當建立一個表時,系統自動建立一個以該表的名字命名的資料段。
2.索引段:索引段中包含了用於提高系統性能的索引。一旦建立索引,系統自動建立一個以該索引的名字命名的索引段。
3.回滾段:回滾段中儲存了回滾條目,Oracle將修改前的舊值儲存在回滾條目中。利用這些資訊,可以撤銷未提交的操作,以便為資料庫提供讀入一致性和回滾未提交的事務,即用來回滾事務的資料空間。當一個事務開始處理時,系統為之分配回滾段,回滾段可以動態建立和撤銷。
4.臨時段:當執行建立索引。查詢等操作時,Oracle可能會使用一些臨時儲存空間,用於暫時性地儲存解析過的查詢語句以及在排序過程中產生的臨時資料,Oracle系統將在專門用於儲存臨時資料的表空間中為操作分配臨時段。
四、表空間(tablespace)
表空間是Oracle資料庫的最大邏輯劃分區域,通常用來存放資料表、索引、回滾段等資料物件。一個表空間由一個或多個數據檔案(作業系統物理儲存結構)組成,一個數據檔案只屬於一個表空間。表空間的大小等於所有從屬於它的資料檔案大小的總和。
表空間邏輯儲存物件:
永久段–>如表與索引
臨時段–>如臨時表資料與排序段
回滾段–>用於事物回滾或閃回記憶體的撤銷資料
表空間分類:
系統表空間(system、sysaux),非系統表空間
不可或缺的幾個表空間:
SYSTEM —>字典表空間,不能被損壞
UNDO —>dml,dql把資料快照到此,資料提交即消失(用於恢復)
SYSAUX —>10g 高併發系統繁忙時,會造成system爭用,將工具放到SYSAUX,減輕system的壓力,SYSAUX不影響系統(影響效能)
TEMP —>臨時資料相關的內容
USERS —>10g 使用者資料從system撥離出來
關係及常見問題
表空間和資料檔案的關係:
一個表空間包含一個或多個數據檔案;
一個數據檔案只能屬於一個表空間;
一個表空間可以給多個使用者訪問。