Table 在大量刪除歷史紀錄後,原先使用的儲存空間並不會自動被釋出,而是要經過一個 Table 的重組程序,可用空間才會有所變更。
要調整 HWM 有以下方式可以做,各有不同優缺點:
必要條件
執行時分兩階段
SQL
alter table <TABLE_NAME> shrink space compact ; 只會執行第一階段 alter table <TABLE_NAME> shrink space ; 兩個階段都會執行 alter table <TABLE_NAME> shrink space cascade ; 同時處理相關index 空間 alter index <INDEX_NAME> shrink space ; 回收index 空間 alter table <TABLE_NAME> modify lob (<lob_clomun>) (shrink space);
NOTE
由於 alter table TABLE_NAME enable row movement 可能會使得引用該 table的 object( ex procedure,package,view...) 變成 invalid。解決方法 參閱 Q & A
Shrink 指令:單一個 Table
SQL> alter table <owner>.<table_name> enable row movement; SQL> alter table <owner>.<table_name> shrink space cascade; SQL> alter table <owner>.<table_name> disable row movement;
Shrink:多個 Tables
set heading off set feedback off set pagesize 0 set linesize 1000 SELECT 'alter table ' || OWNER || '.' || TABLE_NAME || ' enable row movement;' || chr(10) || 'alter table ' || OWNER || '.' || TABLE_NAME || ' shrink space cascade;' || chr(10) || 'alter table ' || OWNER || '.' || TABLE_NAME || ' disable row movement;' || chr(10) FROM ALL_TABLES WHERE OWNER = 'WIN_FDC_STDB' AND ( TABLE_NAME NOT LIKE '%DEF%' AND TABLE_NAME LIKE 'PROC%' ) ORDER BY NUM_ROWS DESC, TABLE_NAME ASC;
Images 0 | ||
---|---|---|
No images to display in the gallery. |