這篇將簡單介紹oracle的儲存結構:

oracle 資料庫由多個tablespaces組成,每一個tabspace由多個data blocks組成,
data blocks大小由2KB~32KB不等(預設為8KB)。
當資料表建立的時候,會固定某個區塊包含此資料表的資料,tableSpace中包含了許多區塊。
存資料的時候,雖然會儲存row 在這些區塊中,但也不是整個row存入。
有些情況,row會被切成row piece進行存放。

下面介紹一些名詞:

database block:
1.block header:定義此區塊相關資訊,如型態(如table or index)
2.row data:儲存實際的資料,資料將從底層開始向上疊起
3.free space:位於此block的中間,可以接收header的資訊(必要時)。當資料新增的時候,或者原有資料備更新成更大資料的時候,就會消耗free space。不斷的更新的free space如果必要,需要進行整理與合併,以得到更大的free space。

tablespace:
1.只能屬於一個資料庫
2.由一個或多個data files
3.會被切割成多個儲存的邏輯基礎單位
4.作為資料庫物件的儲存庫

data files:
1.只能屬於一個tablespace與一個database
2.組成tablespace的基本資料結構

Oracle Managed File(OMF)
OMF會依據你的需求,直接管理oracle資料庫的系統的檔案,包含

1.tablespaces
2.Redo log file
3.control file
4.archived log
5.block change tracking files
6.flashback log
7.RMAN backups

DB_CREATE_FILE_DEST
定義預設的系統目錄(data file and temporary file)
DB_CREATE_ONLINE_LOG_DEST_n
定義redo log file 與 control file
DB_RECOVERY_FILE_DEST
定義RMAN backups

表格空間的空間管理:
locally managed tablespaces:
利用bitmaps進行表格空間管理,每個bitmap的bit對用每個區塊或每群區塊。
當新增或刪減內容的時候,資料庫會改變bitmap的值來顯示區塊的狀態。

dictionary-managed tablespace:
藉由資料目錄來管理;當新增或刪除內容的時候,資料目錄裡相關的資料表就會被更新。
目前oracle 建議使用locally managed tablespaces來進行管理。


檢視tablespace 資訊:
下一篇會說明如和在Enterprise Manager中觀看
tablespace information :
1.DBA_TABLESPACES
2.V$DATAFILE

data file information
1.DBA_DATA_FILE
2.V$DATAFILE

temp file information
1.DBA_TEMP_FILES
2.V$TEMPFILE