oracle的儲存分為四個層次,block、extent、segment和tablespace。oracle分配空間到segment時,是將一組連續的block新增到segment,這組連續的block稱作乙個extent。
對於已經分配和還未分配的extent的元資料可能存放在資料字典中(字典管理表空間),也可能存放在tablespace header中(本地管理表空間)。
可以通過以下語句來檢視當前的表空間是本地管理還是字典管理:
select
tablespace_name
,extent_management
,allocation_type
from
dba_tablespaces
;system local system
undotbs1 local system
sysaux local system
temp local uniform
users local system
test local uniform
字典管理表空間(dmt)
oracle使用sys.fet$表來記錄空閒空間,使用sys.uet$表來記錄已經使用過的空間。當從表空間分配新的extent時,必須先獲得space transaction(st) enqueue latch後才能插入或刪除sys.fet$和sys.uet$表。在特定的時間內,只有乙個程序能獲得st enqueue,這通常會引起競爭和等待。
可以使用下列語句來建立乙個dmt
create tablespace ts1 datafile '/oradata/ts1_01.dbf' size 50m
extent management dictionary
default storage ( initial 50k next 50k minextents 2 maxextents 50 pctincrease 0);
default stroage:該選項只對dmt有效。使用它可以指定在該dmt中建立的所有物件是否壓縮(compress/nocompress)及其預設引數。
minimum extent:指定extent的最小大小。
temporary:建立臨時表空間。建立臨時表空間有兩種語法:create temporary tablespaces tempfile和create tablespace temporary。最好create temporary tablespaces tempfile來建立臨時表空間,使用此方法建立的表空間只能是lmt。
如果你想建立dmt臨時表空間可以使用create tablespace temporary。使用create temporary tablespaces tempfile建立臨時表空間,不能使用autoallocate,預設為uniform。
本地管理表空間(lmt)
使用lmt,每個表空間使用表空間資料檔案中的乙個bitmap結構來管理空閒和已使用的空間的元資料資訊。每一bit對應乙個資料庫block或一組blcok。可以通過下面任一語句建立乙個lmt
create tablespace ts2 datafile '/oradata/ts2_01.dbf' size 50m
extent management local autoallocate;
create tablespace ts3 datafile '/oradata/ts3_01.dbf' size 50m
extent management local uniform size 128k;
autoallocate:使用autoallocate,則extent的大小是系統管理的,oracle在分配下乙個extent時,會選擇乙個最佳的extent大小。extent大小包含從64kb到1mb、8mb一直到64mb,隨著segment的增長oracle會選擇更大的extent。
uniform:使用uniform指定extent大小,則oracle會根據此數字建立下乙個extent。預設值是1m。lmt表空間中建立object時,不能覆蓋該uniform extent size。
本地管理表空間的好處:
----不需要使用recursive sql訪問uet$和fet$
----消除了對於uet$和fet$的競爭(single st enqueue)
----不用定期連線空閒空間,lmt會自動跟蹤相鄰的空閒空間。
----使用lmt時,分配extent只是改變segment header中的bitmap structure,不會產生回滾資訊。
字典管理和本地管理的表空間
expert oracle database architecture 學習筆記 字典管理和本地管理的表空間 在oracle8.1.5之前,表空間中管理區段的分配只有一種方法 字典管理的表空間 dictionary managed tablespace 這種情況下,需要執行遞迴sql來得到更多空間,...
本地管理表空間
本地 管理 表空間的好處 1 快速,併發空間操作,表空間的分配和 都是在本地操作 2 能夠增強效能 3 本地管理的臨時表空間不產生任何undo和redo 4 空間的分配變的簡單,因為當指定 autoallocate 之句時,資料庫在分配空間時,會選擇合適的extent的大小 5 能夠減少使用者對資料...
表空間管理
第一步 檢視表空間的名字及檔案所在位置 select tablespace name,file id,file name,round bytes 1024 1024 0 total space from dba data files order by tablespace name 第二步 增大所需...