ORACLE数据库巡检SQL脚本--1、检查表空间使用情况

查询各表空间的管理属性、空间总量、空闲量及使用率,用于巡检表空间是否存在空间不足风险。

一、SQL脚本

sql 复制代码
--检查表空间使用情况
SELECT B.TABLESPACE_NAME          TABLESPACE,
       A.EXTENT_MANAGEMENT        EXT_MGT, -- 表空间的区管理方式(LOCAL/LOCAL AUTOALLOCATE等)
       A.SEGMENT_SPACE_MANAGEMENT SEG_MGT, -- 表空间的段管理方式(AUTO/MANUAL)
       A.STATUS                   STATUS, -- 表空间状态(ONLINE/READ ONLY等)
       A.LOGGING                  LOGGING, -- 表空间日志模式(LOGGING/NOLOGGING)
       B.TOTAL                    TOTAL, -- 表空间总大小(GB)
       B.FREE                     FREE, -- 表空间空闲大小(GB)
       B.USED_PCT                 USED_PCT -- 表空间使用率(%)
  FROM DBA_TABLESPACES A,
       (SELECT D.TABLESPACE_NAME,
               ROUND(D.SUMBYTES / 1024 / 1024 / 1024, 2) || 'GB' TOTAL, -- 计算总空间(转GB,保留2位小数)
               ROUND(DECODE(F.SUMBYTES, NULL, 0, F.SUMBYTES) / 1024 / 1024 / 1024, 2) || 'GB' FREE, -- 计算空闲空间(空值处理为0)
               ROUND((D.SUMBYTES - DECODE(F.SUMBYTES, NULL, 0, F.SUMBYTES)) * 100 / D.SUMBYTES, 2) || '%' USED_PCT -- 计算使用率
          FROM (SELECT TABLESPACE_NAME, SUM(BYTES) SUMBYTES FROM DBA_FREE_SPACE GROUP BY TABLESPACE_NAME) F,
               (SELECT TABLESPACE_NAME, SUM(BYTES) SUMBYTES FROM DBA_DATA_FILES GROUP BY TABLESPACE_NAME) D
         WHERE F.TABLESPACE_NAME(+) = D.TABLESPACE_NAME -- 外连接,确保包含无空闲空间的表空间
         ORDER BY D.TABLESPACE_NAME) B
 WHERE A.TABLESPACE_NAME = B.TABLESPACE_NAME;

二、脚本说明

该SQL会返回以下关键信息,用于表空间巡检:

  1. TABLESPACE:表空间名称;
  2. EXT_MGT:表空间的区管理方式 (如LOCAL,表示本地管理,是Oracle推荐的方式);
  3. SEG_MGT:表空间的段管理方式 (如AUTO,表示自动段空间管理);
  4. STATUS:表空间状态(正常应为ONLINE);
  5. LOGGING:表空间日志模式(正常应为LOGGING,确保数据可恢复);
  6. TOTAL:表空间总大小(单位:GB);
  7. FREE:表空间空闲大小(单位:GB);
  8. USED_PCT:表空间使用率(单位:%,通常使用率超过90%需预警)。

三、注意事项

  • 若某表空间的USED_PCT接近或超过90%,需及时扩展表空间(添加数据文件或扩展现有数据文件);
  • 若表空间状态为OFFLINE/READ ONLY,需排查是否为异常状态;
  • EXT_MGTDICTIONARY(字典管理),建议迁移为LOCAL管理(Oracle 10g后推荐本地管理)。
相关推荐
AOI小白新手上路1 分钟前
江科协15-2 直流电机实验调试总结
数据库·mongodb
小王C语言3 分钟前
MySQL 用户管理:创建用户、给用户授权
数据库·mysql
程序员夏洛17 分钟前
Redis 的持久化机制有哪些?
java·数据库·redis
l1t18 分钟前
DeepSeek总结的修复pgrust v0.2 #83:generate_series 聚合及其底层的两个成本 - #84
数据库·postgresql
厦门德仔1 小时前
【YiFeiWebApi】易飞ERP与WMS系统接口对接实战:从0到1全流程指南
大数据·数据库
内存漫游1 小时前
Page 到底是什么:数据库如何把一条条记录放进磁盘
数据库
小镇敲码人1 小时前
【深入浅出】之Qt 事件系统实战:鼠标、键盘、滚轮、窗口与定时器事件
数据库·qt·网络协议·mysql·http
Sirens.1 小时前
MySQL数据库:索引
数据库·mysql
treacle田2 小时前
达梦数据库-Linux DM主备集群动态增加节点-记录总结
linux·运维·数据库·达梦主备集群动态扩展
一只专注api接口开发的技术猿2 小时前
Open Claw 实战|快速搭建电商商品监控与数据分析能力
大数据·数据库·数据挖掘·数据分析