清理oracle数据库空间

背景:之前在电脑上安装了oracle并加载了100+G的数据,最近感觉用处不大,而且导致电脑相应很慢。于是乎,觉得整理一下oracle数据库空间,数据库实例还是不删除,作为以后慢慢摸索使用,把100+G的数据删除了吧。详细步骤如下:

 

1、登陆PL/SQL

2、之前数据库使用已久,先查询下有哪些table、view、index。。。

select * from user_segments;/*查看当前数据库中有哪些table、view、index*/

3、删除掉上述内容

drop index xx

drop view xx

drop table xx

这里不确定是否要先删除相应的index、view才能删除table,忘了测试。

删除掉这些文件之后oracle垃圾站会产生一些垃圾文件,文件名以bin开头

4、清楚垃圾站

purge recyclebin; /*清空回收站,删除表之后会生成很多垃圾文件,文件名以bin开头*/

5、删除表空间

alter tablespace user_data online; drop tablespace user_data including contents and datafiles; /*删除表空间及其关联的物理文件*/

但是,如果该tablespace是默认空间,则无法删除,需要先更改默认空间或者收缩当前默认空间,由于该默认空间是当初重新设置关联到非C盘的,因此觉得收缩空间即可。

6、由于100+G的数据,该空间关联了4个物理文件,因此逐个删除

alter tablespace user_data drop datafile 'F:\ORACLE\ORADATA\USER_DATA01.DBF'; /*针对同一表空间关联多个物理文件的,可以逐个删除物理文件*/ 

7、删除的差不多了之后,发现C盘有个空间文件较大,于是再收缩一下吧。

alter database datafile 'C:\APP\ADMINISTRATOR\ORADATA\ORCL\UNDOTBS01.DBF'resize 2000M;/*收缩表空间文件大小*/

 

以下几条命令是辅助查找和验证结果的。

SELECT t.tablespace_name, round(SUM(bytes / (1024 * 1024)), 0) ts_size FROM dba_tablespaces t, dba_data_files d WHERE t.tablespace_name = d.tablespace_name GROUP BY t.tablespace_name;  /*查看表空间及空间大小*/

SELECT tablespace_name, file_id, file_name, round(bytes / (1024 * 1024), 0) total_space FROM dba_data_files ORDER BY tablespace_name; /*查看表空间、关联物理文件、总共空间*/

select name from v$datafile; /*表空间的所有物理文件*/

select * from user_segments;/*查看当前数据库中有哪些tabble、view、index*/

 

转载于:https://www.cnblogs.com/eavn/p/4365170.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值