CentOS 上 Oracle 磁盘空间优化实操指南
一 快速定位空间占用
df -hdu -sh /u01 /var/log /tmp 2>/dev/null | sort -hr | headncdu /u01(需安装:yum install -y ncdu)select d.tablespace_name, d.file_name, d.bytes/1024/1024 "MB", s.bytes/1024/1024 "FreeMB" from dba_data_files d, dba_free_space s where d.file_id=s.file_id order by 1,4;select file_name, tablespace_name, bytes/1024/1024 "MB", autoextensible from dba_temp_files;select * from database_properties where property_name='DEFAULT_TEMP_TABLESPACE';select owner, segment_name, segment_type, bytes/1024/1024 "MB" from dba_segments order by bytes desc fetch first 20 rows only;select se.username, se.sid, se.serial#, su.tablespace, su.segtype, su.blocks*to_number(rtrim(p.value))/1024/1024 "MB", sql_text from v$sort_usage su, v$parameter p, v$session se, v$sql s where p.name='db_block_size' and su.session_addr=se.saddr and s.hash_value=su.sqlhash and s.address=su.sqladdr order by 5 desc;二 立即释放空间的要点
alter table <tab> drop partition <pname> UPDATE GLOBAL INDEXES;(减少高水位与碎片)alter table <tab> shrink space compact; alter index <idx> shrink space;alter table <tab> deallocate unused;alter database datafile '<file>' resize <合适大小>M;alter database datafile '<file>' autoextend off;(避免再次暴涨)create temporary tablespace temp02 tempfile '<newpath>/temp02.dbf' size 2G autoextend on next 100M; alter database default temporary tablespace temp02;alter system kill session '<sid>,<serial#>';drop tablespace temp including contents and datafiles;create temporary tablespace temp tempfile '<oldpath>/temp01.dbf' size 2G autoextend on next 100M maxsize 15G; alter database default temporary tablespace temp; drop tablespace temp02 including contents and datafiles;show parameter log_archive_dest_1;RMAN> delete archivelog all completed before 'sysdate-7';(示例:保留近 7 天)RMAN> delete obsolete;(依据配置的保留策略)三 扩容与数据文件迁移
pvcreate /dev/sdb1 → vgextend <vgname> /dev/sdb1 → lvextend -L +<size>G /dev/<vg>/<lv>xfs_growfs <挂载点>;ext4 执行 resize2fs <设备>shutdown immediate;mv <old.dbf> <new.dbf>startup mount;alter database rename file '<old.dbf>' to '<new.dbf>';alter database open;alter tablespace <ts> offline;(拷贝后)alter tablespace <ts> rename datafile '<old>' to '<new>'; alter tablespace <ts> online;alter tablespace <ts> add datafile '<newpath>/file.dbf' size <init>M autoextend on next <step>M maxsize <limit>;四 长期治理与存储优化
disk_asynch_io=true,提升写入吞吐五 安全操作清单