清理oracle數據庫空間

背景:以前在電腦上安裝了oracle並加載了100+G的數據,最近感受用處不大,並且致使電腦相應很慢。因而乎,以爲整理一下oracle數據庫空間,數據庫實例仍是不刪除,做爲之後慢慢摸索使用,把100+G的數據刪除了吧。詳細步驟以下:數據庫

 

一、登錄PL/SQLoracle

二、以前數據庫使用已久,先查詢下有哪些table、view、index。。。測試

select * from user_segments;/*查看當前數據庫中有哪些table、view、index*/spa

三、刪除掉上述內容table

drop index xxfile

drop view xxselect

drop table xx數據

這裏不肯定是否要先刪除相應的index、view才能刪除table,忘了測試。查詢

刪除掉這些文件以後oracle垃圾站會產生一些垃圾文件,文件名以bin開頭db

四、清楚垃圾站

purge recyclebin; /*清空回收站,刪除表以後會生成不少垃圾文件,文件名以bin開頭*/

五、刪除表空間

alter tablespace user_data online; drop tablespace user_data including contents and datafiles; /*刪除表空間及其關聯的物理文件*/

可是,若是該tablespace是默認空間,則沒法刪除,須要先更改默認空間或者收縮當前默認空間,因爲該默認空間是當初從新設置關聯到非C盤的,所以以爲收縮空間便可。

六、因爲100+G的數據,該空間關聯了4個物理文件,所以逐個刪除

alter tablespace user_data drop datafile 'F:\ORACLE\ORADATA\USER_DATA01.DBF'; /*針對同一表空間關聯多個物理文件的,能夠逐個刪除物理文件*/ 

七、刪除的差很少了以後,發現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*/

相關文章
相關標籤/搜索