close

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

arrow
arrow

    James Wu 發表在 痞客邦 留言(0) 人氣()