Oracle資料塊的組成

Samcle_趙捷軒發表於2013-12-13

Oracle資料塊的組成

 

1. 資料塊的基本結構

塊中存放表的資料和索引的資料,無論存放哪種型別的資料,塊的格式都是相同的,塊由塊頭(header/Common and Variable),表目錄(Table Directory,行目錄(Row Directory,空餘空間(Free Space)和行資料(Row Data)五部分組成,如下圖所示

 Oracle資料塊的組成

2.各組成部分的含義

塊頭(header/Common and Variable)存放塊的基本資訊,如:塊的實體地址,塊所屬的段的型別(是資料段還是索引段)。

表目錄(Table Directory):存放表的資訊,即:如果一些表的資料被存放在這個塊中,那麼,這些表的相關資訊將被存放在“表目錄”中。

行目錄(Row Directory):如果塊中有行資料存在,那麼這些行的資訊將被記錄在行目錄中。這些資訊包括行的地址等。

行資料(Row Data):是真正存放表資料和索引資料的地方。這部分空間是已被資料行佔用的空間。

空餘空間(Free Space):空餘空間是一個塊中未使用的區域,這片區域用於新行的插入和已經存在的行的更新。


3.行連線和行遷移

行連結(Row Chaining):如果我們往資料庫中插入一行資料,這行資料很大,以至於一個資料塊存不下一整行,Oracle就會把一行資料分作幾段存在幾個資料塊中,這個過程叫行連結。 
如果一行資料是普通行,這行資料能夠存放在一個資料塊中;如果一行資料是連結行,這行資料存放在多個資料塊中。


行遷移(Row Migrating)
資料塊中存在一條記錄,使用者執行UPDATE更新這條記錄,這個UPDATE操作使這條記錄變長,這時候,Oracle在這個資料塊中進行查詢,但是找不到能夠容納下這條記錄的空間,無奈之下,Oracle只能把整行資料移到一個新的資料塊。原來的資料塊中保留一個“指標”,這個“指標”指向新的資料塊。被移動的這條記錄的ROWID保持不變。 

 

無論是行連結還是行遷移,都會影響資料庫的效能。Oracle在讀取這樣的記錄的時候,Oracle會掃描多個資料塊,執行更多的I/O

 

4. dump資料塊

建立表空間:

Oracle資料塊的組成Oracle資料塊的組成 


建立表:

Oracle資料塊的組成 

新增資料:

Oracle資料塊的組成

提交資料:

Oracle資料塊的組成

  

獲得表資料塊所在位置:

Oracle資料塊的組成

 

 查詢表中的行所在資料塊:

Oracle資料塊的組成

 Oracle資料塊的組成


dump資料塊:

Oracle資料塊的組成

 
dump檔案路徑:

Oracle資料塊的組成

 

dump檔案內容:

Oracle資料塊的組成

 

Oracle資料塊的組成

 Oracle資料塊的組成

 Oracle資料塊的組成

Oracle資料塊的組成

 

 

 


 


 

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

相關文章