Kiểm tra dung lượng Tablespace đã sử dụng bao nhiêu % được cấp phát và tổng dung lượng cả chưa được cấp phát của data file.
SELECT df.tablespace_name, df.Max_size AS DUNG_LUONG_TONG, df.total_space_mb DUNG_LUONG_DA_CAP, NVL(fs.free_space_mb, 0) AS DUNG_LUONG_CHUA_SU_DUNG, df.total_space_mb - NVL(fs.free_space_mb, 0) AS DUNG_LUONG_DA_SU_DUNG, ROUND(((df.total_space_mb - NVL(fs.free_space_mb, 0)) / df.total_space_mb) * 100, 2) AS pct_used, ROUND(((df.total_space_mb - NVL(fs.free_space_mb, 0)) / df.Max_size) * 100, 2) AS pct_used_Total FROM (SELECT tablespace_name, ROUND(SUM(bytes) / 1024 / 1024,0) AS total_space_mb, ROUND(sum(maxbytes/1024/1024),0) AS Max_size FROM dba_data_files GROUP BY tablespace_name) df LEFT JOIN (SELECT tablespace_name, ROUND(SUM(bytes) / 1024 / 1024,0) AS free_space_mb FROM dba_free_space GROUP BY tablespace_name) fs ON df.tablespace_name = fs.tablespace_name ORDER BY pct_used DESC;
Trong đó:
PCT_USED_TOTAL là chỉ số % đã sử dụng trên tổng dung lượng tối đa, bao gồm cả chưa cấp phát bộ nhớ
PCT_USED là % đã sử dụng của dung lượng đã được cấp phát
Khi mà PCT_USED đạt 100% thì hệ thống tự động cấp phát thêm dung lượng với điều kiện là các tablespace phải đặt ở chế độ autoextend cho datafile
Khi mà PCT_USED_TOTAL >=85% thì chúng ta hãy thêm datafile vào tablespace để tránh lỗi hết dung lượng. Nếu PCT_USED_TOTAL>=100% thì hệ thống sẽ không còn dung lượng =>> treo ngay lập tức nếu tiếp tục ghi dữ liệu vào.
=>> chúng ta có thể tạo kịch bản để khi PCT_USED_TOTAL >=80% thì tự động add thêm datafile vào tablespace được.