由于C盘过大,使用SpaceSniffer.exe扫描了一下磁盘空间,发现是因为oracle数据库文件占用过大导致,查询了表空间大小和使用率
SELECT a.tablespace_name "表空间名",
total / (1024 * 1024 * 1024) "表空间大小(G)",
free / (1024 * 1024 * 1024) "表空间剩余大小(G)",
(total - free) / (1024 * 1024 * 1024) "表空间使用大小(G)",
round((total - free) / total, 4) * 100 "使用率 %"
FROM (SELECT tablespace_name, SUM(bytes) free
FROM dba_free_space
GROUP BY tablespace_name) a,
(SELECT tablespace_name, SUM(bytes) total
FROM dba_data_files
GROUP BY tablespace_name) b
WHERE a.tablespace_name = b.tablespace_name;
发现有3个占用空间较大却使用率极低的表空间
表空间名 | 表空间大小(G) | 表空间剩余大小(G) | 表空间使用大小(G) | 使用率 % |
MCITSYS | 7 | 6.99890137 | .001098633 | .02 |
HZSYS | 7 | 6.99902344 | .000976563 | .01 |
HZJL | 7 | 6.97625732 | .023742676 | .34 |
想起新建表空间的语句指定了一个7G的初始大小,因此使用以下命令收缩数据库文件大小
ALTER DATABASE DATAFILE 'C:/app/01/product/11.2.0/dbhome_1/oradata/hzjl/MCITSYS.DBF' RESIZE 256M;
在文件夹内还发现了临时空间也是7G的初始大小,用以下命令收缩临时表空间大小
ALTER DATABASE TEMPFILE 'C:/app/01/product/11.2.0/dbhome_1/oradata/hzjl/MCITSYS_TEM.DBF' RESIZE 256M;