ITPub博客

首页 > 数据库 > Oracle > oracle 回收表空间的数据文件大小

oracle 回收表空间的数据文件大小

原创 Oracle 作者:abin1703 时间:2016-07-21 11:29:07 0 删除 编辑
 今天发现系统空间使用率达到100%,zabbix老是报警,没办法在数据库中将历史数据删除了一些,但是表空间仍然没有降低,并未回收,磁盘空间还是100%。
[oracle@node data]$ df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda2             296G   89G  192G  32% /
tmpfs                  59G  228K   59G   1% /dev/shm
/dev/sda1             200M  260K  200M   1% /boot/efi
/dev/sda4             4.0T  3.8T   39G 100% /u01


解决如下:

查看表空间的使用情况:
select a.tablespace_name,a.bytes/1024/1024 "Sum MB",(a.bytes-b.bytes)/1024/1024 "used MB",b.bytes/1024/1024 "free MB", 
round(((a.bytes-b.bytes)/a.bytes)*100,2) "percent_used" 
from 
(select tablespace_name,sum(bytes) bytes from dba_data_files group by tablespace_name) a, 
(select tablespace_name,sum(bytes) bytes,max(bytes) largest from dba_free_space group by tablespace_name) b 
where a.tablespace_name=b.tablespace_name 
order by ((a.bytes-b.bytes)/a.bytes) desc 

回收表空间数据文件

select   'alter database datafile '''||a.file_name||''' resize '    ||round(a.filesize - (a.filesize - c.hwmsize-100) *0.8)||'M;',   a.filesize,   c.hwmsize from  ( select file_id,file_name,round(bytes/1024/1024) filesize from dba_data_files ) a, ( select file_id,round(max(block_id)*8/1024) HWMsize from dba_extents group by file_id) c where a.file_id = c.file_id   and a.filesize - c.hwmsize > 100



执行回收reize数据文件的sql
alter database datafile '/u01/app/oradata/orcl/etl01.dbf' resize 3549042M;


[oracle@node data]$ df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda2             296G   89G  192G  32% /
tmpfs                  59G  228K   59G   1% /dev/shm
/dev/sda1             200M  260K  200M   1% /boot/efi
/dev/sda4             4.0T  3.6T  203G  95% /u01

系统磁盘空间下降。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/30345407/viewspace-2122335/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2015-07-13

  • 博文量
    204
  • 访问量
    426793