oracle體系結構-邏輯存儲結構
1邏輯結構概述
oracle的邏輯存儲結構是一種層次結構,主要由表空間、段、區間和數據塊等概念組成;
邏輯結構是面向用戶的,當用戶使用Oracle設計數據庫時,使用的就是邏輯存儲結構;
oracle數據庫由多個表空間組成(數據庫自身也屬於邏輯概念);
表空間由多個段組成;
段由多個數據區組成;
數據區由多個數據塊組成。
2數據塊Data Blocks
數據塊是Oracle邏輯存儲結構中最小的邏輯單位,也是數據庫執行輸入輸出操作的最小存儲單位。
Oracle數據放在“Oralce數據塊”中,而不是“操作系統塊”中。
通常Oracle數據塊大小是操作系統塊大小的整數倍。(如OS的塊大小是2KB,Oracle的數據塊大小是8KB)。
Oracle數據塊有定義的標準大小,對應初始化參數DB_BLOCK_SIZE。(Oracle支持在同一個數據庫中有多種大小的塊,分為標準塊與非標準塊)
查看標準塊大小
col name format a30; # 格式化列大小
col value format a20; # 格式化列大小
select name,value from v$parameter where name = ‘db_block_size‘;
數據塊中可以存放表數據、索引數據、簇數據等,無論存放什麽數據,它的結構都是相同的。
3數據區Extent
數據區(也稱數據擴展區)是由一組連續的Oracle數據塊所組成的Oracle存儲結構;
一個或多個數據塊組成一個數據區,一個或多個數據區組成一個段;
當一個段中的所有空間使用完後,Oracle系統自動為該段分配一個新的數據區;
使用數據區是為了保持特定數據類型的數據,所以數據區是Oracle分配存儲空間的最小單位。
4段Segment
段是一個獨立的邏輯存儲結構,用於存儲表、索引或簇等占用空間的數據對象,段是為特定的數據對象分配的一系列數據區;
每當創建一個具有獨立段的數據對象時,Oracle將為它創建一個段;
一個段只屬於一個屬於特定的數據對象;
段內包含的數據區可以不連續,可以跨越多個文件;
使用段的目的是保持特定邏輯對象。
Oracle數據庫通常有下列4種類型的段:
數據段
保存表中的數據記錄;
當創建一個表時,系統自動創建一個以該表的名字命名的數據段;
索引段
保存索引;
當創建一個索引時,系統自動創建一個以該索引的名字命名的索引段;
回滾段
保存回滾條目,即修改前的舊值;
當一個事務開始處理時,系統為之分配回滾段,回滾段可以動態創建和撤銷;
Oracle11g系統有個默認的回滾段,管理方式可自動,可手動;
臨時段
保存暫時性的臨時數據;
Oracle系統將在專門用於存儲臨時數據的表空間中未操作分配臨時段;
如CREATE INDEX、SELECT DISTINCT/GROUP BY/ORDER BY會在臨時表空間分配臨時段用來暫時性地保存解析過的查詢語句或排序過程中產生的臨時數據;
如果數據庫經常會有這類語句,最好調整SORT_AREA_SIZE初始化參數來增大排序區,使排序操作盡量在內存中完成,提高執行效率。
5表空間
Oracle使用表空間將相關的邏輯結構(如段、數據區等)組合在一起;
表空間是數據庫的最大邏輯劃分區域,通常用來存放數據表、索引、回滾段等數據對象;
任何數據對象在創建時都必須被指定存儲在某個表空間中;
表空間(邏輯存儲結構)對應數據文件(物理存儲結構);
一個表空間由一個或多個數據文件組成,一個數據文件只屬於一個表空間;
一個數據庫最少有一個表空間(SYSTEM),表空間的大小等於所有屬於它的數據文件大小的總和;
表空間相當於文件夾,數據文件相當於文件夾裏的文件。
表空間使用規範
用戶可根據應用系統的實際情況及其所要存放的對象類型創建創建多個自定義的表空間,以區分用戶數據和系統數據;
不同應用系統的數據應存放在不同的表空間上;
不同表空間的文件應存放在不同的盤上,以減少IO沖突;
Oracle 11g默認創建的主要表空間
SYSTEM
系統表空間,用於存放Oracle系統內部表和數據字典的數據。
Oracle本身不建議將用戶創建的表、索引等邏輯對象放在SYSTEM表空間中;
查看系統內部標的信息 - v$fixed_view_definition
col view_name format a30;
col view_definition format a30;
select * from v$fixed_view_definition;
查看數據字典信息 - dict
col table_name format a30;
col comments format a30
select * from dict;
SYSAUX
Oracle 11g新增的默認表空間,主要存儲除數據字典以外的其他數據對象;
充當SYSTEM的輔助表空間,降低SYSTEM表空間的負荷;
一般不存儲用戶數據,由Oracle系統內部自動維護
UNDO
撤銷表空間,用於存儲撤銷信息;
當對數據表進行修改操作,Oracle系統自動使用UNDO表空間臨時存放修改前的舊數據,在提交後,根據系統設置的保留時間長度來決定何時釋放UNDO表空間的部分空間;
一般在創建Oracle實例後,Oracle系統自動創建“UNDOTBS1”的撤銷表空間,對應數據文件是“UNDOTBS01.DBF”
USERS
用戶表空間,Oracle建議用戶使用的表空間;
oracle體系結構-邏輯存儲結構