清理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:ORACLEORADATAUSER_DATA01.DBF'; /*针对同一表空间关联多个物理文件的,可以逐个删除物理文件*/ 

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

alter database datafile 'C:APPADMINISTRATORORADATAORCLUNDOTBS01.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