oracle本地管理的表空間

edwardking888發表於2010-07-01

本地管理的表空間(locally managed tablespace)在每個資料檔案(datafile)中維護一個點陣圖(bitmap),記錄此資料檔案內資料塊(block)的狀態(可用/佔用),並據此管理表空間內的資料擴充套件(extent)。點陣圖中的每一位代表
一個或一組資料塊(block)。當一個資料擴充套件被分配或者被釋放,Oracle負
責改變點陣圖中相應的資料塊的狀態。這些修改不會產生回滾資訊(rollback
information),因為她們不會更新資料字典(data dictionary)中的表(一些
特殊的情況除外,例如改變表空間的配額(quota)資訊)。

本地管理的表空間(locally managed tablespace)與資料字典管理的表空間
(dictionary managed tablespace)相比有如下優勢:
● 在本地管理資料擴充套件(extent)的分配,易於查詢連續的可用空間[此
處指資料塊],避免了資料擴充套件合併(coalesce free extents)。
● 在本地管理資料擴充套件的分配,能夠避免產生遞迴(recursive)的空間管
理操作。在使用資料字典管理的表空間時,分配或回收方案物件
(schema object)的資料擴充套件可能會導致資料字典表(data dictionary
table)或回滾段(rollback segment)中也產生分配或回收空間的操作,
即稱為遞迴的空間管理操作。

在本地管理(locally managed)狀態下,每次分配的資料擴充套件(extent)的容
量可以由系統自動地決定。此外,使用者也可以覆蓋方案物件預設的儲存參
數,每次分配相同容量的資料擴充套件。

在 CREATE TABLESPACE 或 CREATE TEMPORARY TABLESPACE 語句中使
用 LOCAL 子句可以建立本地管理的(locally managed)永久表空間
(permanent tablespace)或臨時表空間(temporary tablespace)。

本地管理的表空間中的段空間管理

使用者使用 CREATE TABLESPACE 語句建立一個本地管理的表空間(locally
managed tablespace)時,可以使用 SEGMENT SPACE MANAGEMENT 子句來
設定段(segment)內的可用/已用空間如何管理。可選的方式有:
● AUTO
在這種設定下,Oracle使用點陣圖(bitmap)管理段內的可用空間。[注
意此處的點陣圖與本地管理的表空間使用的點陣圖不一樣]此處的點陣圖用於
描述段內每個資料塊(data block)是否有足夠的可用空間來插入
(insert)新資料。隨著一個資料塊中可用空間的變化,她的狀態也被
及時地反映到點陣圖中。Oracle使用點陣圖可以更自動化地管理段內的可
用空間。這種空間管理形式被稱為自動段空間管理(automatic
segment-space management)。
一個本地管理的(locally managed),且使用自動段空間管理的表空
間,既可以被建立為小檔案表空間(傳統的)(smallfile tablespace),
也可以被建立為大檔案表空間(bigfile tablespaces)。在建立本地管理
的表空間時,自動段空間管理是預設值。
 
● MANUAL
在這種設定下,Oracle使用可用塊列表(free list)來管理段內的可用空
間。可用塊列表記錄了所有可以被用於插入新資料的資料塊。

 

 

 

 

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

相關文章