Quản trị việc thu nhỏ các segment (shrinking segments) trong Oracle Database là một phương pháp tối ưu hóa không gian lưu trữ bằng cách giải phóng không gian không sử dụng và trả lại nó cho tablespace. Điều này có thể giúp cải thiện hiệu suất và quản lý không gian lưu trữ hiệu quả hơn.
Các Bước Thu Nhỏ Segment
Kiểm Tra Điều Kiện Để Thu Nhỏ:
Trước khi thu nhỏ segment, bạn cần đảm bảo rằng các bảng hoặc Index mà bạn muốn thu nhỏ có hỗ trợ thu nhỏ segment. Tính năng này thường áp dụng cho các bảng có tính năng ASSM (Automatic Segment Space Management) và ROW MOVEMENT được bật.
— Kiểm tra xem ROW MOVEMENT có được bật hay không
SELECT table_name, row_movement FROM dba_tables WHERE table_name = 'TAB1';
Bật Tính Năng ROW MOVEMENT:
Để thu nhỏ một bảng, bạn cần bật tính năng ROW MOVEMENT cho bảng đó:
ALTER TABLE TAB1 ENABLE ROW MOVEMENT;
Thu Nhỏ Segment:
Sử dụng lệnh ALTER TABLE … SHRINK SPACE để thu nhỏ bảng. Bạn có thể chọn thu nhỏ segment và giữ các dòng hiện tại hoặc thu nhỏ segment và di chuyển các dòng.
##Thu nhỏ segment và giữ các dòng hiện tại:
ALTER TABLE TAB1 SHRINK SPACE;
##Thu nhỏ segment và di chuyển các dòng:
ALTER TABLE TAB1 SHRINK SPACE COMPACT;
Lệnh SHRINK SPACE COMPACT di chuyển các dòng mà không giải phóng không gian ngay lập tức. Sau đó, bạn cần chạy lệnh SHRINK SPACE để thực sự giải phóng không gian.
ALTER TABLE TAB1 SHRINK SPACE;
Thu Nhỏ Index:
Tương tự, bạn cũng có thể thu nhỏ các Index bằng lệnh ALTER INDEX … SHRINK SPACE.
ALTER INDEX your_index_name SHRINK SPACE;
Kiểm Tra Lại Không Gian Đã Được Thu Nhỏ:
Sau khi thu nhỏ, bạn có thể kiểm tra lại không gian đã được giải phóng bằng cách sử dụng các view hệ thống như DBA_SEGMENTS, DBA_FREE_SPACE.
SELECT segment_name, segment_type, bytes FROM dba_segments WHERE segment_name = 'TAB1'; SELECT * FROM dba_free_space WHERE tablespace_name = 'DUONG_TBS';
Lưu Ý Khi Shrinking Segments
- Ảnh Hưởng Hiệu Suất: Việc thu nhỏ segment có thể ảnh hưởng đến hiệu suất hoạt động của hệ thống trong thời gian thu nhỏ, do đó nên thực hiện vào thời điểm ít người dùng hoặc ngoài giờ làm việc chính.
- Khóa Hàng: Thu nhỏ segment có thể yêu cầu khóa bảng hoặc khóa hàng, dẫn đến khả năng chờ đợi cho các giao dịch khác.
- Thử Nghiệm Trước Khi Triển Khai: Nên thử nghiệm việc thu nhỏ trên môi trường thử nghiệm trước khi thực hiện trên môi trường sản xuất để đảm bảo không gây ra các vấn đề không mong muốn.
- Sao Lưu Dữ Liệu: Luôn sao lưu dữ liệu trước khi thực hiện các thao tác thay đổi cấu trúc hoặc dữ liệu lớn.
Bằng cách tuân thủ các bước và lưu ý trên, bạn có thể quản lý và tối ưu hóa không gian lưu trữ hiệu quả trong Oracle Database thông qua việc thu nhỏ segment.