定期监控磁盘使用情况是优化基础。通过图形工具(如Disk Usage Analyzer、Gnome Disk Utility)直观查看磁盘占用,定位大目录;使用命令行工具精准分析:
df -h:查看各分区磁盘空间使用率及挂载点;du -sh /path/to/directory:统计指定目录的总大小;du -h --max-depth=1 /oracle:快速识别Oracle目录(如/oracle/base、/oracle/data)的空间占用。ALTER DATABASE DATAFILE '/path/to/datafile.dbf' RESIZE NEW_SIZE;直接调整大小(如从10GB缩至7GB);或通过TRUNCATE、SHRINK操作降低HWM,释放未使用空间。DROP TABLESPACE tablespace_name INCLUDING CONTENTS AND DATAFILES;命令,彻底释放磁盘空间。ALTER DATABASE ARCHIVELOG;)后,定期监控归档日志使用量(SELECT dest_name, status, destination FROM v$archive_dest;),使用DELETE NOPROMPT ARCHIVELOG ALL BACKED UP 1 TIMES TO DISK;清理已备份的过期归档日志,避免归档目录占满磁盘。/oracle/redo01.log、/oracle/redo02.log),避免单点故障并提高I/O效率。TRUNCATE TABLE orders_partition_202401;快速清空历史分区;对非分区表,使用DELETE FROM large_table WHERE create_time < SYSDATE - 365;分批删除(每次提交事务),减少锁表风险。ALTER INDEX idx_name REBUILD;)或定期整理碎片索引(ALTER INDEX idx_name COALESCE;),释放索引占用的空间;删除不再使用的索引(如废弃的查询条件索引),减少维护成本。sudo apt-get clean清理已下载的软件包缓存(默认存放在/var/cache/apt/archives/),释放约几十GB空间(取决于安装软件数量)。sudo apt-get purge linux-image-$(uname -r | sed 's,-generic,,')~删除不再使用的旧内核版本(保留当前运行的内核),避免/boot分区占满。sudo journalctl --vacuum-time=7d删除7天前的系统日志(默认存放在/var/log/journal/),减少日志文件占用。sudo rm -rf /tmp/*删除/tmp目录下的临时文件(系统重启后会自动清理,但可提前释放空间)。/dev/sda1,重做日志放在/dev/sdb1,数据文件放在/dev/sdc1),避免单磁盘I/O瓶颈。lvextend扩展逻辑卷(如lvextend -L +5G /dev/oracle_vg/oracle_lv),再调整Oracle数据文件大小(ALTER DATABASE DATAFILE '/dev/oracle_vg/oracle_lv' RESIZE 20G;),灵活扩展磁盘空间。SELECT * FROM logs WHERE create_date = '2025-10-01'只需扫描对应分区),同时便于分区数据的单独维护(如删除旧分区)。EXPLAIN PLAN分析SQL执行计划,避免全表扫描(如为常用查询列添加BTree索引);使用绑定变量(如:dept_id代替硬编码的10)减少硬解析,降低共享池压力;拆分大事务(如将10万条数据的插入操作分成10个1万条的小事务),减少锁持有时间和日志生成量。SGA_TARGET(如设置为物理内存的70%)提高数据缓存命中率,减少磁盘I/O;启用自动内存管理(MEMORY_TARGET=16G),简化内存配置。DB_FILE_MULTIBLOCK_READ_COUNT参数(如设置为16),优化多块读取效率,减少全表扫描的I/O次数。