1 名詞解釋與約定
資料表空間(Tablespace):為資料庫提供使用空間的邏輯結構,其對應物理結構是資料檔案,一個資料表空間可以包含多個資料檔案。
本地管理資料表空間(Locally Managed Tablespace簡稱LMT):8i以後出現的一種新的資料表空間的管理員模式,通過本地位元影像來管理資料表空間的空間使用。
字典管理資料表空間(Dictionary-Managed Tablespace簡稱DMT):8i以前包括以後都還可以使用的一種資料表空間管理員模式,通過資料字典管理資料表空間的空間使用。
段(Segment):資料庫一種邏輯結構,如表段,索引段,復原段等,段存在於資料表空間中,並對應一定的儲存空間。
區間,可以簡稱區(Extent):段的儲存可以分成一個或多個區間,每個區間佔用一定數量的資料區塊(block),在本地管理的資料表空間中,資料表空間的Extent就對應段的Extent。
塊(Block):資料庫最小的儲存單位,在本文中Block的大小約定為8192位元組。
位(Bit):本地管理資料表空間的空間管理單位,一個位可能等於一個區間,也可能多個位組成一個區間。
2 本地管理資料表空間
2.1 文法
在Oracle8I的版本中,Oracle推出了一種全新的資料表空間管理方式:本地化管理的資料表空間。所謂本地化管理,就是指Oracle不再利用資料字典表來記錄Oracle資料表空間裡面的區的使用狀況,而是在每個資料表空間的資料檔案的頭部加入了一個位元影像區,在其中記錄每個區的使用狀況。每當一個區被使用,或者被釋放以供重新使用時,Oracle都會更新資料檔案頭部的這個記錄,反映這個變化。
本地化管理的資料表空間的建立過程:
文法:CREATE TABLESPACE 資料表空間名字 DATAFILE '資料檔案詳細資料' [EXTENT MANAGEMENT { LOCAL {AUTOALLOCATE | UNIFORM [SIZE INTETER [K|M] ] } } ]
關鍵字EXTENT MANAGEMENT LOCAL 指定這是一個本地化管理的資料表空間。對於系統資料表空間,只能在建立資料庫的時候指定EXTENT MANGEMENT LOCAL,因為它是資料庫建立時建立的第一個資料表空間。
在8i中,字典管理還是預設的管理方式,當選擇了LOCAL關鍵字,即表明這是一個本地管理的資料表空間。當然還可以繼續選擇更細的管理方式:是AUTOALLOCATE 還是 UNIFORM.。若為AUTOALLOCATE,則表明讓Oracle來決定區塊的使用辦法;若選擇了UNIFORM,則還可以詳細指定每個區塊的大小,若不加指定,則為每個區使用1M大小。
2.2 本地管理優點
1. 本地化管理的資料表空間避免了遞迴的空間管理操作。而這種情況在資料字典管理的資料表空間是經常出現的,當資料表空間裡的區的使用狀況發生改變時,資料字典的表的資訊發生改變,從而同時也使用了在系統資料表空間裡的復原段。
2. 本地化管理的資料表空間避免了在資料字典相應表裡面寫入空閑空間、已使用空間的資訊,從而減少了資料字典表的競爭,提高了空間管理的並發性
3. 區的本地化管理自動跟蹤資料表空間裡的空閑塊,減少了手工合并自由空間的需要。
4. 資料表空間裡的區的大小可以選擇由Oracle系統來決定,或者由資料庫管理員指定一個統一的大小,避免了字典資料表空間一直頭疼的片段問題。
5. 從由資料字典來管理空閑塊改為由資料檔案的頭部記錄來管理空閑塊,這樣避免產生復原資訊,不再使用系統資料表空間裡的復原段。因為由資料字典來管理的話,它會把相關資訊記在資料字典的表裡,從而產生復原資訊。
由於這種資料表空間的以上特性,所以它支援在一個資料表空間裡邊進行更多的並行作業,並減少了對資料字典的依賴。