使用df -h命令查看Ubuntu系统整体磁盘使用情况,识别磁盘分区是否接近满额(如/u01/app/oracle等Oracle数据目录所在分区);通过du -sh /path/to/directory命令深入分析特定目录(如Oracle数据文件目录、归档日志目录)的空间占用,快速定位大文件或目录。
执行SQL语句统计表空间使用情况,重点关注已用空间比例和剩余空间:
SELECT
tablespace_name,
ROUND(SUM(bytes)/(1024*1024), 2) AS total_space_mb,
ROUND(SUM(bytes - NVL(used_space, 0))/(1024*1024), 2) AS free_space_mb,
ROUND(NVL(used_space, 0)/SUM(bytes)*100, 2) AS used_percent
FROM (
SELECT
tablespace_name,
bytes,
SUM(bytes) OVER (PARTITION BY tablespace_name) AS total_bytes,
CASE WHEN maxbytes > 0 THEN bytes ELSE maxbytes END AS used_space
FROM dba_data_files
)
GROUP BY tablespace_name;
该语句可清晰展示每个表空间的总空间、剩余空间及使用率,帮助识别需扩容的表空间。
当表空间使用率超过阈值(如80%)时,可通过以下方式扩容:
/u01/app/oracle/oradata/ORCL/newdatafile.dbf):ALTER TABLESPACE users ADD DATAFILE '/u01/app/oracle/oradata/ORCL/newdatafile.dbf' SIZE 1G AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED;
AUTOEXTEND):ALTER DATABASE DATAFILE '/u01/app/oracle/oradata/ORCL/users01.dbf' RESIZE 2G;
若表空间存在大量未使用空间,可通过收缩释放空间:
ALTER DATABASE DATAFILE '/u01/app/oracle/oradata/ORCL/users01.dbf' RESIZE 1.5G;
TRUNCATE(清空表数据)或REBUILD(重建索引)释放碎片空间。开启归档模式后,归档日志会持续占用磁盘空间,需定期清理:
SELECT dest_name, status, destination, ROUND(space_used/1024/1024, 2) AS used_mb
FROM v$recovery_file_dest;
DELETE NOPROMPT ARCHIVELOG ALL BACKED UP 1 TIMES TO DISK;
/u01/app/oracle/oradata/ORCL/control01.ctl、/u02/app/oracle/oradata/ORCL/control02.ctl),避免单点故障。/u01/app/oracle/oradata/ORCL/redo01a.log、/u01/app/oracle/oradata/ORCL/redo01b.log),并均匀分布在不同磁盘,减少I/O争用。ASM是Oracle推荐的存储管理解决方案,可简化文件管理并提升性能:
+ASM)。asmcmd命令管理磁盘组(存储单元):
NORMAL表示双份镜像):CREATE DISKGROUP data EXTERNAL REDUNDANCY DISK '/dev/sdb1', '/dev/sdc1';
SELECT name, state, total_mb, free_mb FROM v$asm_diskgroup;
创建表空间时,将文件存储路径指定为ASM磁盘组(如+DATA),ASM会自动管理文件的分布与冗余:
CREATE TABLESPACE sales DATAFILE '+DATA/sales01.dbf' SIZE 2G AUTOEXTEND ON;
ASM的优势在于无需手动管理文件路径,支持动态扩展磁盘组,并提供镜像、条带化等功能提升可靠性。
DELETE语句删除非分区表中的过期数据(需分批提交以避免锁表):DELETE FROM orders WHERE order_date < SYSDATE - 365; -- 删除一年前的订单
COMMIT;
ALTER TABLE sales TRUNCATE PARTITION sales_q1_2024;
ALTER INDEX idx_order_id REBUILD ONLINE;
ALTER TABLE ... MOVE命令收缩表或索引段,降低高水位线(HWM):ALTER TABLE customers MOVE TABLESPACE users;
注意:收缩段前需确保表上无长时间运行的事务。/var/cache/apt/archives空间):sudo apt-get clean
/boot分区满):sudo apt-get purge $(dpkg -l | grep 'linux-image-.*-generic' | grep -v $(uname -r) | awk '{print $2}')
/tmp目录下的临时文件(重启系统会自动清理,但可手动加速):sudo rm -rf /tmp/*
GParted工具(需从Live CD启动)调整Ubuntu分区大小,扩大Oracle数据目录所在分区。fdisk或parted工具创建分区,挂载至Oracle数据目录(如/u01/app/oracle),并修改/etc/fstab实现开机自动挂载。