天天看點

❤️Oracle 存儲結構,圖文并茂,超詳細❤️

作者:IT邦德
中國DBA聯盟(ACDU)成員,目前從事DBA及程式程式設計
(Web\java\Python)工作,主要服務于生産制造
現擁有 Oracle 11g  OCP/OCM、
Mysql、Oceanbase(OBCA)認證
分布式TBase\TDSQL資料庫、國産達夢資料庫以及紅帽子認證
從業8年DBA工作,在資料庫領域有豐富的經驗


擅長Oracle資料庫運維開發,備份恢複,安裝遷移,性能優化、故障應急處理等。      
❤️Oracle 存儲結構,圖文并茂,超詳細❤️

1.實體存儲結構

❤️Oracle 存儲結構,圖文并茂,超詳細❤️

2.邏輯存儲結構

❤️Oracle 存儲結構,圖文并茂,超詳細❤️
将邏輯存儲與實體存儲分開是關系資料庫範例的要求之一。
oracle 資料庫的資料的處理發生在 instance(記憶體)中,但資料的存儲發生在磁盤的 database上。
oracle 資料庫邏輯存儲結構可分為資料庫、表空間、段、區、塊幾個層次。      

3.表空間和資料檔案

資料在實體上是存儲在資料檔案(data files)上,從邏輯上看資料存儲在段(通常是表)中,
表空間是二者的抽象, 是一個邏輯的概念
表空間的使用解決了這個問題, 消除了段和資料檔案之間多對多的關系,
一個表空間可能包含多個段(對象),并由多個資料檔案組成,但一個資料檔案隻能對應一個表空間。

檢視表空間資訊
SYS@PROD>select tablespace_name,contents,status from dba_tablespaces;
檢視表空間對應資料檔案
SYS@PROD>select file_id,file_name,tablespace_name,bytes/1024/1024 m from dba_data_files;      

2.段、區、塊

段(segment): 段是表空間中存儲資料的資料庫對象。表是典型的段,
還有其他段類型比如索引段、 undo 段。
任何一個段可以僅存在于一個表空間中,
但表空間可以由多個資料檔案組成。這樣表的大小就不再受單個資料檔案大小限制。
段是模式對象,由具體某一個使用者(模式)限定。

注意: PL/SQL 過程、視圖、序列不是段,它們不存儲資料,存在于資料字典中。
 SYS@PROD>select segment_name,segment_type,tablespace_name,bytes/1024 k,extents,blocks from dba_segments where owner='SCOTT';      
❤️Oracle 存儲結構,圖文并茂,超詳細❤️
oracle 塊是資料庫 I/O 的基本機關。 資料檔案設定為連續編号的 oracle 塊。一個塊中可能有多個行,
但當會話需要某行資料時,是從磁盤将整個塊讀入到資料緩沖區。
同樣,dbwr 寫髒塊時也是把整個塊寫入資料檔案。對表空間來說,塊大小是固定不變的。 
11g 預設标準塊大小是 8KB,在建立資料庫時确定db_block_size 參數,不能修改。
從實體上講,資料檔案由作業系統塊組成,作業系統塊是檔案系統 I/O 的基本機關。
通常 oracle塊和作業系統塊是一對多的關系,比如上圖, oracle 塊是 8KB,作業系統塊大小是 1KB