- 系统环境:
开发环境
- 背景描述:
由于临时在开发环境创建俩张表,总数据量大概400多万,测试完后把表drop掉,但是发现服务器磁盘被占满了,还剩下几M可用,因为这个盘也存储oracle的数据文件,所以去检查了一下数据文件的大小,果然E:\app\Administrator\oradata\orcl\TEMP01.DBF文件竟然有30多G,咨询度娘后,决定把这个文件清理一下,具体清理步骤如下:
一、创建新的临时表空间temp2
create temporary tablespace temp2
tempfile 'E:\APP\ADMINISTRATOR\ORADATA\ORCL\TEMP02.DBF' size 512M reuse
autoextend on next 640k maxsize unlimited;
二、更改数据库默认表空间为temp2
alter database default temporary tablespace temp2;
三、删除过大的数据文件存在的表空间temp及数据文件TEMP01.DBF
drop tablespace temp including contents and datafiles;
四、再创建空的临时表空间temp
create temporary tablespace temp
tempfile 'E:\APP\ADMINISTRATOR\ORADATA\ORCL\TEMP01.DBF' size 512M reuse
autoextend on next 640K maxsize unlimited;
五、更改数据库默认表空间为新的表空间temp
alter database default temporary tablespace temp;
六、删除第一步创建的临时表空间temp2
drop tablespace temp2 including contents and datafiles;
参考链接:https://www.cnblogs.com/pan11jing/archive/2009/12/04/1617053.html
注意事项 :
我在操作的过程中,发现上述操作的第3步,一直执行了3个多小时,还没有删除掉,也才30多G,不应该删除这么久都不成功,于是又找到了新的答案,https://zhidao.baidu.com/question/362228263559709212.html,看到这个问题的推荐答案后,我尝试了一下重启数据库(windows服务器,重启方式在最下方)然后执行删除表空间操作,秒成功;
然后进行第4、5步;
第6步之前需要再次重启数据库,然后删除temp2表空间,清理完毕。
验证方式:
1、拥有dba权限的话,执行如下SQL
select d.file_name, d.file_id, d.tablespace_name, d.bytes/1024/1024/1024 as GB
from dba_temp_files d;
2、进入服务器查看磁盘空间是否释放
OK,至此清理临时表空间数据文件工作已完成,如有问题欢迎讨论,一起进步
WINDOWS快速重启数据库的方式(确保数据库没有在使用):
1、WINDOWS + R 输入services.msc 回车
2、鼠标随便点击一下服务的列表页
3、键盘按下大写 'O',找到要重启的数据库服务(数据库服务名结尾,如下图选中的记录)
4、点击左上方的重启按钮,等待重启即可