oracle表空間的釋放

2021-09-05 12:15:52 字數 1101 閱讀 5801

1.shrink space

優點:降低高水位時索引不會失效

缺點:不能將表移動到其他表空間;高水位降低效果沒有move明顯;同時在執行命令前要先執行(alter table table_name enable row movement允許行移動)也會表會產生行級鎖…,shrink比move更耗費cpu,產生很多current block這樣生成巨大的redo與undo 如果表中索引很少可以建議使用move降低高水位

sql:

alter table cbsd_log_t enable row movement;

alter table cbsd_log_t shrink space

可能會報錯ora-10631: shrink clause should not be specified for this object

因為:shrink 操作需滿足表空間是本地管理和自動段空間管理(10g、11g預設就是這樣),以下情況不能用shrink:

iot索引組織表

用rowid建立的物化檢視的基表

帶有函式索引的表

securefile 大物件

壓縮表2、 move (降低高水位)

優點:可以移動表到其他表空間,在執行命令時不需要執行alter table table_name enable row movement

缺點:表move 會導致表中的索引失效,要rebuild;同時表會產生行級鎖…;在此如果表中有lob欄位 時要用一下命令來實現表空間移動:alter table owner.table_name move tablespace tablespace_name lob (lob_column) store as lob segment tablespace tablespace_name;也可以單獨move lob,index要rebuild

第一步:alter table zzwk_zzw_todo move tablespace ts_sgy_zzkdata lob(info_body) store as (tablespace ts_sgy_zzkdata);

第二步:重建索引

alter index pk_zzwk_zzw_todo rebuild tablespace ts_sgy_zzkdata;

oracle釋放表空間的方法

目前找到的方法始終只有新建乙個表空間,alter表空間指向,再delete原有表空間。這個是比較清晰的一篇文章。我希望找到的是能直接shrink表空間的方法。但是貌似oracle沒有提供這樣的sql或者任何介面函式。看來只能在以後編寫事務時小心了。對待資料庫表空間,個人認為比較好的方法是 建立足夠大...

Oracle 釋放表及表空間大小

1.檢視乙個表所佔的空間大小 select bytes 1024 1024 mb table size u.from user segments u where u.segment name jk test 2.檢視乙個表空間所佔的實際大小 select sum bytes 1024 1024 mb...

刪除Oracle表空間,釋放硬碟空間

1.查詢使用者和表空間 select username,default tablespace from dba users 2.刪除表空間 2.1可以先將其offline alter tablespace xx offline 例 alter tablespace eas d kdqhms stan...