本地管理表空間和字典管理表空間

2021-09-10 09:20:20 字數 2356 閱讀 2822

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 第二步 增大所需...