今天发现系统空间使用率达到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/
,如需转载,请注明出处,否则将追究法律责任。