JavaScript is required

Table được tạo như sau: CREATE TABLE MY_TABLE (COL1 NUMBER) STORAGE (INITIAL 2M NEXT 2M MINEXTENTS 6 PCTINCREASE 0); Khi bạn thực hiện phát biểu sau, cái gì sẽ là kích thước của table, nếu sự đánh dấu high-water của table là 200KB?
ALTER TABLE MY_TABLE DEALLOCATE UNUSED KEEP 1000K;

A.
1000KB
B.
200KB
C.
12000KB
D.
2MB
Trả lời:

Đáp án đúng: C


Câu hỏi này kiểm tra kiến thức về việc thu hồi (deallocate) không gian đã sử dụng của một bảng trong Oracle, cụ thể là lệnh `ALTER TABLE ... DEALLOCATE UNUSED KEEP`. Phân tích các lựa chọn: * **A. 1000KB:** Lựa chọn này có vẻ đúng vì lệnh `ALTER TABLE` được sử dụng có tham số `KEEP 1000K`, có nghĩa là giữ lại 1000KB (tức 1MB) không gian. Tuy nhiên, cần xem xét high-water mark. * **B. 200KB:** Đây là high-water mark hiện tại của bảng. Lệnh `DEALLOCATE UNUSED` sẽ thu hồi không gian *vượt* quá mức chỉ định bởi `KEEP`. Vì KEEP là 1000KB (1MB) và high-water mark chỉ là 200KB, bảng sẽ được giữ lại ở kích thước 1MB. * **C. 12000KB:** Giá trị này bằng 6 * 2MB (INITIAL và NEXT), không liên quan đến thao tác DEALLOCATE UNUSED. * **D. 2MB:** Đây là kích thước INITIAL và NEXT, nhưng DEALLOCATE UNUSED sẽ thay đổi kích thước này. Vì high-water mark của bảng hiện tại là 200KB, và lệnh `ALTER TABLE ... DEALLOCATE UNUSED KEEP 1000K` được thực hiện, Oracle sẽ giữ lại 1000KB (1MB) không gian cho bảng và giải phóng phần không gian thừa. Như vậy, kích thước cuối cùng của bảng sẽ là 1000KB.

Câu hỏi liên quan