oracle資料塊理解

winston_DBA發表於2015-04-06
1.資料塊是oracle邏輯儲存結構中最小的儲存單元,也是最小的資料庫I/O單元。
2.oracle資料塊和作業系統塊的關係:
從物理層面,一個資料塊由多個作業系統塊組成,但是oracle資料塊為oracle特有的邏輯單元,當oracle進行資料塊的讀取和寫入時,會將讀取或寫入操作轉化成對作業系統的讀取和寫入操作。
區別:
建立在oracle資料庫上的應用,並不需要知道具體的作業系統塊地址。、
資料塊可以在多個作業系統磁碟上進行冗餘備份。
3.資料塊大小
資料塊大小一般為作業系統塊大小的整數倍,可以為2K/4K/8K/16K/32K。當然塊大小也與作業系統塊大小有關。
在資料庫中可以透過DB_BLOCK_SIZE檢視資料庫塊大小,當一個資料庫建立完成,資料塊的大小就已經確定,並且不能修改。
當然,在建立表空間時,也可以支援表空間中資料塊使用非預設大小的資料塊,但是隻能為預設的資料塊大小的整數倍。
4.非壓縮的資料塊格式
block header :  common and variable header
主要包括作業系統磁碟地址(disk address)、段型別(segment type)和事務資訊(active and historical transaction)
table directory:
主要描述在資料塊中都存放了哪些表的資料
row directory:
如果是堆表的話,描述了記錄在資料塊裡的位置
free space
row data
5.記錄片段(row pieces)的格式
oracle儲存行記錄是以變長的方式來進行的,每條記錄包含了一份或者多份記錄片(row piece)。
row piece主要包括row header和column data.
其中,row header包括:
row overhead
number of columns
cluster key ID(if clustered)
ROWID of chained row pieces(if any):如果發生了行連結,則需要記錄下一條記錄的ROWID。
column length:由於oracle支援可變長度的資料型別,所以oracle將資料的長度和資料的值分開存放。
column value:列的具體值
其次,column data,包括了真實的行記錄資料。每條記錄在row header上都有一個記錄槽,指向了記錄所在位置。
6.ROWID的格式
ROWID值由四部分組成:資料物件編號,表空間裡的相對檔案編號,資料塊編號和行編號

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30167136/viewspace-1513025/,如需轉載,請註明出處,否則將追究法律責任。

相關文章