oracle 刪除用戶及相關表數據,釋放磁盤空間


來源於:http://www.itpub.net/thread-513609-1-1.html

http://bbs.csdn.net/topics/330251089

http://blog.csdn.net/rznice/article/details/6107650

 

1、首先要得到USERS01.DBF的file_id

SELECT file_name,file_id FROM dba_data_files WHERE file_name like '%USER%';

2、統計這個數據文件有哪些段,各占多少空間,然后再考慮是drop還是truncate等處理操作。

select owner,segment_name,sum(bytes) 
  from dba_extents
where file_id=如上的file_id
group by owner,segment_name
order by 3 desc;

3、找到哪個用的空間多了,處理一下吧。

 

不論使用delete還是truncate刪除數據,ORACLE數據文件都不會自動收縮;
如果要收縮數據文件,delete不能降低HWM,delete后再alter table XXX move;
或者使用truncate后再resize數據文件試試
sql>truncate test1
sql>alter database datafile 'users01.dbf' resize 200m;

 

可以通過resize datafile來減小數據文件的大小。
首先,要查清楚數據文件的真實使用空間。可以通過查詢dba_extents達到這個目的。oatbs表空間使用的數據文件為E:/Oracle/PRODUCT/10.2.0/ORADATA/ORCL/OATBS.DBF

SQL> select file_name,e.file_id, sum(e.bytes)/1024/1024 as MB from dba_extents e join dba_data_files f on e.file_id=f.file_id group by file_name,e.file_id;

FILE_NAME FILE_ID MB
-------------------------------------------------------------------------------- ---------- ----------
E:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/USERS01.DBF 4 3.1875
E:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/OATBS.DBF 8 73.375
E:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/SYSAUX01.DBF 3 253.8125
E:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/EXAMPLE01.DBF 5 77.625
E:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/UNDOTBS01.DBF 2 42.8125
E:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/SYSTEM01.DBF 1 500.625


6 rows selected

 

可以看出OATBS.DBF實際使用空間只有73MB。resize datafile的時候不可以小過這個大小。

 

SQL> alter database datafile 8 resize 80m;

Database altered

SQL>

 

OATBS.DBF 文件由原先的100M減少為現在的80M。

 




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM