Trong quá trình thao tác vận hành csdl sẽ bị phân mảnh vì các thủ tục update, delete….
— kiểm tra phân mảnh
select table_name,avg_row_len,round(((blocks*16/1024)),2)||’MB’ “TOTAL_SIZE”,
round((num_rows*avg_row_len/1024/1024),2)||’Mb’ “ACTUAL_SIZE”,
round(((blocks*16/1024)-(num_rows*avg_row_len/1024/1024)),2) ||’MB’ “FRAGMENTED_SPACE”,
(round(((blocks*16/1024)-(num_rows*avg_row_len/1024/1024)),2)/round(((blocks*16/1024)),2))*100 “percentage”
from all_tables WHERE table_name=’&TABLE_NAME’;
Nếu xuất hiện bản ghi là đã có hiện tượng phân mảnh rồi
— thực hiện chống phân mảnh bằng cách move table đó (move sẽ di chuyển ngay trong TBS hiện tại của table hoặc có thể move sang TBS khác)
alter table <table_name> move;
— có thể move sang tbs khác:
alter table <table_name> enable row movement;
alter table <table_name> move tablespace <new_tablespace>
— hoặc có thể shrink 1 bảng
— Cho phép row movement.
ALTER TABLE <table_name> ENABLE ROW MOVEMENT;
— Khôi phục không gian lưu trữ và sửa đổi high water mark (HWM).
ALTER TABLE <table_name> SHRINK SPACE;
— Khôi phục không gian lưu trữ nhưng không sửa đổi the high water mark (HWM).
ALTER TABLE <table_name> SHRINK SPACE COMPACT;
— Recover không gian lưu trữ cho đối tượng và mọi đối tượng phụ thuộc
ALTER TABLE <table_name> SHRINK SPACE CASCADE;