Quản trị phân bổ không gian liên tục trong Oracle Database liên quan đến việc sử dụng tính năng “Resumable Space Allocation” để xử lý các tình huống mà các hoạt động DML (Data Manipulation Language) hoặc DDL (Data Definition Language) có thể bị tạm dừng do lỗi không đủ tài nguyên, như hết không gian lưu trữ, hết đĩa, full datafile trong tablespace. Tính năng này giúp các hoạt động không bị hủy bỏ hoàn toàn mà có thể tạm dừng và tiếp tục sau khi vấn đề tài nguyên được giải quyết.
Ví dụ bạn đang có hoạt động insert data vào trong table duong_tab nằm trong tablespace duong_tbs => bạn không kiểm tra nên không gian lưu trữ bị đầy dẫn đến việc data không thể thêm vào table được nữa => do đó hoạt động insert sẽ bị dừng ngay tức thì, nhưng nếu chúng ta phát hiện ra và extend không gian lưu trữ lên thì => hoạt đông insert lại tự động được tiếp tục thay vì tự động huỷ khi ổ đĩa đầy dung lượng => cần đến tham số Resumable Space Allocation.
Các Bước Quản Trị Resumable Space Allocation
Bật Tính Năng Resumable:
Để bật tính năng này, bạn có thể sử dụng câu lệnh SQL để thiết lập tham số RESUMABLE_TIMEOUT. Tham số này xác định thời gian tối đa (tính bằng giây) mà một hoạt động có thể tạm dừng trước khi bị hủy bỏ hoàn toàn.
Kiểm tra nó trước tiên đã:
show parameter RESUMABLE_TIMEOUT
=>> hiện tại nó đang không được thiết lập tham số gì cả..
# Tiến hành thiết lập
ALTER SYSTEM SET RESUMABLE_TIMEOUT = 3600 SCOPE=BOTH;
— 1 tiếng
=>> như vậy là từ giờ trở đi => hệ thống sẽ tạm dừng và tự khôi phục task trong vòng 1h nếu sự cố được xử lý.
Bạn nhớ restart lại DB trước khi các tham số được áp dụng.
Theo Dõi Các Hoạt Động Bị Tạm Dừng:
Các hoạt động bị tạm dừng sẽ được ghi lại trong các view động như DBA_RESUMABLE, USER_RESUMABLE, và V$SESSION_WAIT.
- DBA_RESUMABLE: Cung cấp thông tin về tất cả các hoạt động resumable trong hệ thống.
- USER_RESUMABLE: Cung cấp thông tin về các hoạt động resumable của người dùng hiện tại.
- V$SESSION_WAIT: Cung cấp thông tin về các phiên đang chờ đợi.
select * from DBA_RESUMABLE; select * from USER_RESUMABLE; select * from V$SESSION_WAIT;
Giải Quyết Các Vấn Đề Tài Nguyên:
Khi một hoạt động bị tạm dừng, quản trị viên cần giải quyết vấn đề tài nguyên để hoạt động có thể tiếp tục. Ví dụ, nếu một hoạt động bị tạm dừng do hết không gian trong tablespace, bạn cần tăng kích thước của tablespace.
ALTER TABLESPACE duong_tbs ADD DATAFILE SIZE 100M;
Thông Báo và Xử Lý Tự Động:
Bạn có thể thiết lập các trình kích hoạt (triggers) hoặc job để gửi thông báo hoặc tự động xử lý các vấn đề tài nguyên khi một hoạt động bị tạm dừng.
Ví dụ, tạo một trigger để gửi email thông báo khi một hoạt động bị tạm dừng:
CREATE OR REPLACE TRIGGER resumable_alert AFTER SUSPEND ON DATABASE DECLARE v_msg VARCHAR2(1000); BEGIN v_msg := 'Resumable statement ' || ora_dict_obj_type || ' ' || ora_dict_obj_name || ' suspended due to ' || ora_server_error_msg(ora_server_error(1)); -- Gửi email hoặc ghi vào log DBMS_OUTPUT.PUT_LINE(v_msg); END; /
Như vậy, quản trị viên có thể quản lý hiệu quả việc phân bổ không gian có thể tiếp tục trong Oracle Database, đảm bảo rằng các hoạt động DML và DDL không bị hủy bỏ do lỗi không đủ tài nguyên mà có thể tạm dừng và tiếp tục sau khi vấn đề được giải quyết.