SELECT ROUND(MAX(d.BYTES) / 1024 / 1024, 2) "total MB",
DECODE(SUM(f.BYTES), NULL, 0, ROUND(SUM(f.BYTES) / 1024 / 1024, 2)) "Free MB",
d.file_name "Datafile name",
DECODE(SUM(f.BYTES),
NULL,
0,
ROUND((MAX(d.BYTES) / 1024 / 1024) -
(SUM(f.BYTES) / 1024 / 1024),
2)) "Used MB",
ROUND(MAX(d.BYTES) / 1024, 2) "total KB",
DECODE(SUM(f.BYTES), NULL, 0, ROUND(SUM(f.BYTES) / 1024, 2)) "Free KB",
DECODE(SUM(f.BYTES),
NULL,
0,
ROUND((MAX(d.BYTES) / 1024) - (SUM(f.BYTES) / 1024), 2)) "Used KB",
ROUND(SQRT(MAX(f.blocks) / SUM(f.blocks)) *
(100 / SQRT(SQRT(COUNT(f.blocks)))),
2) "Fragmentation Index"
FROM dba_free_space f, dba_data_files d
WHERE f.tablespace_name(+) = d.tablespace_name
AND f.file_id(+) = d.file_id
GROUP BY d.file_name
=====================================================================
變更表空間大小
如果資料表裡頭有許多已刪除的紀錄,但空間並未被釋放掉就可以使用以下指令去重設空間大小
ALTER DATABASE DATAFILE 'C:\APP\ORADATA\MAYADEVELOP\USERS01.DBF' RESIZE 1G;
如果出現 ORA-03297 表示實際空間比設定的大,只能一一測試實際空間大小再重設
=====================================================================
設定表空間會自動長大(建議使用在測試資料庫,資料庫沒人關心是很可怕的事情滴)
alter database datafile 'C:\APP\ORADATA\MAYADEVELOP\USERS01.DBF' autoextend on;
確認是否開啟成功
select tablespace_name,file_name,autoextensible from dba_data_files
留言列表