Oracle 删除表空间回收磁盘空间
转至:https://blog.csdn.net/catoop/article/details/128798132
1.查询表空间和表空间数据库文件路径
SQL> select * from dba_data_files;
2.删除表空间
SQL> drop tablespace 表空间名称;
3.再次查询表空间的数据库文件对应表空间名称是否还存在
SQL> select * from dba_data_files;
4.手工删除表空间物理文件
表空间被删除后,表空间的数据文件并不会被系统回收并释放,所以还需要手工删除它。
[root@localhost orcl] rm -rf 表空间数据文件路径
如果想在删除表空间时和数据文件一同删除,可以按照如下命令操作:
SQL> drop tablespace 表空间名称 including contents and datafiles;
注意事项:
1.删除表空间之前记得断开所有用户连接,否则可能出现无法删除的报错。
2.删除表空间之后查看服务器磁盘占用情况,如果发现和删除前的是一样的没有变化,则使用命令 lsof -n | grep deleted 找到刚才删除的dbf文件(后边会有一个deleted的标识),查看对应的pid,直接kill掉就可以了(这是因为这些被删除的表空间数据文件还被数据库进程所持有,在进程关闭之前磁盘空间是不会释放的,如果想要验证该方法的可用性把数据库重启一次就可以了,数据库重启的效果等同于使用kill命令)。
如下SQL可以更直观的查看表空间统计情况:
select a.tablespace_name "表空间名称", b.FILE_NAME "表空间文件", total / 1024 / 1024 "大小M", FREE / 1024 / 1024 "剩余大小M", (TOTAL - FREE) / 1024 / 1024 "使用大小M", 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, FILE_NAME, sum(bytes) total from dba_data_files group by tablespace_name, FILE_NAME) b where a.tablespace_name = b.tablespace_name;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)