ORACLE数据库巡检SQL脚本--22、检查碎片程度最高的业务表

该脚本用于检查Oracle数据库中碎片程度最高的业务表(段对象),通过统计段的扩展次数(EXTENTS)定位存储碎片最严重的表,是存储优化、性能调优中识别存储结构瓶颈的常用工具。

一、sql脚本

sql 复制代码
SELECT SEGMENT_NAME TABLE_NAME, COUNT(*) EXTENTS
  FROM DBA_SEGMENTS
 WHERE OWNER NOT IN ('SYS', 'SYSTEM')
 GROUP BY SEGMENT_NAME
HAVING COUNT(*) = (SELECT MAX(COUNT(*)) FROM DBA_SEGMENTS GROUP BY SEGMENT_NAME);

二、脚本说明

1、使用场景

  • 日常存储巡检:定期检查业务表的存储碎片程度,提前发现存储结构隐患;
  • 性能优化:当表查询性能下降、IO负载异常时,定位碎片导致的性能瓶颈;
  • 存储规划:分析碎片生成模式,为表空间扩容、存储架构优化提供依据;
  • 故障排查 :段扩展失败(ORA-01631)时,检查是否因碎片过多导致扩展次数耗尽。

2、字段说明

字段名 说明
TABLE_NAME 碎片程度最高的业务表名称(原字段SEGMENT_NAME的别名)
EXTENTS 该表的存储扩展次数,扩展次数越多代表存储碎片越严重

三、注意事项

查询结果有记录返回即表示存在问题:返回的表是数据库中扩展次数最多的业务表,说明其存储碎片程度已达到最高级别,若不处理会持续影响性能与存储稳定性。

四、补充说明

1、异常的影响

  • 查询性能下降:碎片导致表数据块分散存储,读取时需要多次IO操作,增加查询耗时;
  • IO负载加剧:分散的数据块读取会持续占用磁盘IO资源,引发其他业务SQL性能恶化;
  • 扩展失败风险 :当扩展次数达到MAX_EXTENTS时,表无法继续扩展,导致插入、更新等操作失败(如ORA-01631错误);
  • 存储资源浪费:碎片产生的空闲空间无法被有效利用,降低存储利用率。

2、处理建议

  1. 重组表结构(核心优化)

    sql 复制代码
    -- 重组表,消除碎片(需在业务低峰期执行)
    ALTER TABLE 表名 MOVE TABLESPACE 目标表空间;
    -- 重建表上的索引(重组表后索引会失效)
    ALTER INDEX 索引名 REBUILD TABLESPACE 目标表空间;
  2. 分区表改造:对大表按时间/业务维度分区,减少单表的扩展次数与碎片生成;

  3. 开启自动段空间管理(ASSM) :将表空间设置为ASSM模式,Oracle会自动优化段的扩展与碎片回收:

    sql 复制代码
    CREATE TABLESPACE 表空间名 DATAFILE '/路径/文件名.dbf' SIZE 10G AUTOEXTEND ON NEXT 1G MAXSIZE UNLIMITED SEGMENT SPACE MANAGEMENT AUTO;
  4. 定期监控与维护:将碎片检查加入日常巡检计划,对扩展次数超过阈值(如1000次)的表提前重组;

  5. 调整存储参数 :将表的MAX_EXTENTS设置为UNLIMITED,避免扩展次数耗尽导致的业务中断。

相关推荐
冉冰学姐6 小时前
基于ssm的技能比赛报名管理系统29817vn0(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
java·数据库·spring·ssm 框架应用
小小码农Come on9 小时前
Qt Creator + MSVC 2022 64bit 配置 Dump 文件生成与分析流程
数据库·qt
qiuyuyiyang9 小时前
【MySQL】环境变量配置
数据库·mysql·adb
jgyzl10 小时前
2026.3.11MyBatis-Plus基本使用与思考
java·数据库·mybatis
RDCJM10 小时前
【MySQL】在MySQL中STR_TO_DATE()以及其他用于日期和时间的转换
android·数据库·mysql
vanvivo10 小时前
redis 使用
数据库·redis·缓存
加成BUFF11 小时前
解决MySQL/MariaDB忘记root密码:完整重置教程(XAMPP/Windows版)
数据库·mysql·xampp
杰克尼11 小时前
苍穹外卖--day10
java·数据库·spring boot·mybatis·notepad++
dreamread11 小时前
完美解决phpstudy安装后mysql无法启动
数据库·mysql
小江的记录本11 小时前
【SQL】多表关系与冷热数据(全维度知识体系)
数据库·sql·mysql·数据库开发·数据库架构