空間管理在多個級別進行。第一,將空間分配給表空間。這通過設定資料檔案的大小來完成。第二,將表空間中的空間分配給段,這通過分配區間來完成。第三,將段中的空間分配給行,這通過維護那些跟蹤每個塊中的空閒空間量的位圖來完成。
5.3.1 區間管理
區間管理方法為每個表空間設定,應用於表空間中的所有段。可以使用兩種技術來管理區間的使用:字典管理或本地管理。它們的區別涇渭分明:始終應該應該使用本地管理,決不要使用字典管理。字典管理只是先前版本的遺物而已。
字典區間管理在資料字典中使用兩個表。sys .uet$具有描述已用的區間的行,而sys.fet$具有描述可用區間的行。第當資料庫需要為段分配區間時,它必須搜尋fet$來查詢適當的可用空間位,然後針對fet$和uet$執行dml操作將其分配給段。這種機制會帶來嚴重的效能問題,因為資料庫中的所有空間管理操作必須在構建事務的**上序列化。。
在建立本地管理的表空間時,乙個重要的選項是uniform size。如果指定了此選項,那麼,在表空間中分配的每個區間將使用此大小。這極大地提高了空間管理效率,因為每個位覆蓋的塊範圍可以更大:每個區間只需一位。考慮下在的語句:
create tablesspace large tabs datafile 'large tabs_01.dbf' size 10g
extent management local uniform size 160m;
分配在表空間的每個區間為160mb,幫將有64個。點陣圖只需要64位區間,而只需更新一位即可分配160mb的空間。如果表空間中的段很大,這將十分有效。如果建立的段只需要寥寥數行的空間,它仍獲得160mb的區間。小對旬需要自己的表空間:
create tablesapce small_tabs datafile 'small_tabs_01.dbf' size 1g
extent management local uniform size 160k;
替代(預設)語法如下:
create tablespace any_tabs datafile 'any_tabs_01.dbf' size 10g
extent management local autoallocate;
在表空間中建立段時,oracle 將分配乙個64k的區間。隨著段的增長,將需要更多區間,oracle 最多可分配16個64kb的區間,此後,將分配漸進式增大的區間。通常在不斷增加的塊中為快速增長的段提供區間。
oracle 公司建議使用autoallocate,但如果您知道段的大小,也可以相應地放置它們,uniform size 理當是最佳選項。
如果資料庫從先前版本公升級而來,則可能包括字典管理的表空間。請使用查詢對此進行檢查:
select tablespace_name,extent_management from dba_tablespaces;
請使用下面的pl\sql程式,將任何字典管理的表空間轉換為本地管理。
execute dbms_space_admin.tablespace_migragte_to_local('tablespacename');
將表空間轉換為本地管理非常便捷,但system表空間除外,system表空間要求執行一些附加步驟,系統管理員的產品文件對此做了詳細說明
5.3.2管理段空間
管理段空間的方法為每個表空間設定,應用於表空間中的所有段。可使用兩種技術來管理段空間的使用:手動和自動。它們的區別涇渭分明:應該使用自動管理,決不要使用手動管理。
要檢視任何表空間是否在使用手動管理,請執行此查詢:
select tablespace_name,segment_space_management form dba_tablespaces;
無法將表空間從手動段空間管理轉換為自動管理空間管理。唯一的解決方案是使用自動段管理方法新建表空間,將段移入其中,並刪除舊的表空間。
oracle表空間的空間管理
表空間 tablespace 為資料庫提供使用空間的邏輯結構,其對應物理結構是資料檔案,乙個表空間可以包含多個資料檔案.本地管理表空間 locally managed tablespace簡稱lmt 8i以後出現的一種新的表空間的管理模式,通過本地位圖來管理表空間的空間使用。字典管理表空間 dict...
表空間管理
第一步 檢視表空間的名字及檔案所在位置 select tablespace name,file id,file name,round bytes 1024 1024 0 total space from dba data files order by tablespace name 第二步 增大所需...
管理表空間 1 刪除表空間
刪除表空間的時候,如果該錶空間非空,則若使用drop tablesapce test1.的命令會報錯 表空間非空,請使用including contents 此時的用法為 drop tablecpace test1 including contents and datafiles 同時刪除表空間以及...