当前位置: 首页 > news >正文

oracle 数据库查询指定用户下每个表占用空间的大小,倒序显示

oracle 查询指定用户下每个表占用空间的大小,倒序显示

使用场景:数据分析;导出医院正式库到开发环境时,查询出占用表空间高的业务表、导出时排除该表

在Oracle数据库中,要查询指定用户下每个表占用空间的大小并以倒序显示,可以使用数据字典视图DBA_SEGMENTS(或ALL_SEGMENTS,如果你有权限访问这些视图),结合DBA_TABLES(或ALL_TABLES)来获取相关信息。下面是如何实现这一查询的步骤:

说明:SUM(s.bytes) / 1024 / 1024 AS space_used_mb 这部分计算了总字节数并转换为MB(兆字节),以便更直观地显示空间使用量。

1. 使用DBA_SEGMENTS和DBA_TABLES

如果你有DBA权限,可以使用DBA_SEGMENTS和DBA_TABLES视图。这将提供该oracle实例下每个表的空间使用情况,但请注意,你需要有相应的权限。

SELECT t.owner,t.table_name,SUM(s.bytes) / 1024 / 1024 AS space_used_mb
FROM dba_segments s
JOIN dba_tables t ON s.owner = t.owner AND s.segment_name = t.table_name
WHERE s.segment_type = 'TABLE'AND t.owner = 'C##BBP402CYTJDEV41'  -- 替换为你的用户名-- and t.owner in('C##BBP402CYTJDEV41','C##AUDIT_USER') --或者使用in查询多个用户、如果不带owner查询条件、则查询实例下所有表占用空间
GROUP BY t.owner, t.table_name
ORDER BY space_used_mb DESC;

在这里插入图片描述

2. 使用USER_SEGMENTS和USER_TABLES(仅限当前用户)

如果你只想查看当前用户(schema)下的表空间使用情况,可以使用USER_SEGMENTS和USER_TABLES视图。

SELECT t.table_name,SUM(s.bytes) / 1024 / 1024 AS space_used_mb
FROM user_segments s
JOIN user_tables t ON s.segment_name = t.table_name
WHERE s.segment_type = 'TABLE'
GROUP BY t.table_name
ORDER BY space_used_mb DESC;

相关文章:

  • MATLAB Coder代码生成(工业部署)——MATLAB技巧
  • 2025系统架构师---基于规则的系统架构风格‌
  • 龙虎榜——20250428
  • 1.9多元函数积分学
  • 报表工具:企业数据决策的“智能翻译官“
  • matlab中的Simscape的调用-入门
  • [特殊字符] SpringCloud项目中使用OpenFeign进行微服务远程调用详解(含连接池与日志配置)
  • Lua 第13部分 位和字节
  • 从微服务到AI服务:Nacos 3.0如何重构下一代动态治理体系?
  • MySQL基础篇 | 1-数据库概述与MySQL安装
  • 第11章 安全网络架构和组件(二)
  • Golang|工厂模式
  • 网络安全实战指南:从安全巡检到权限维持的应急响应与木马查杀全(命令查收表)
  • 后缀数组~
  • 区块链vs实体经济:一场金融、医疗、政务与物流的“效率革命”
  • 优化问题中变量分类与作用分析
  • JavaWeb学习打卡-Day5-Spring事务管理、SpringAOP
  • 系统传输慢,多路复用还不行,加多物理链路buff
  • 同时安装多个版本的golang
  • 账户解封无望?3步高效申诉取回亚马逊冻结资金
  • 王毅:为改革完善全球治理作出金砖贡献
  • 一场与纪录并行的伦敦马拉松,超40项新世界纪录诞生
  • 早睡1小时,变化有多惊人?第一个就没想到
  • 荣盛发展去年亏损约84.43亿元,要“过苦日子、紧日子”
  • 因高颜值走红的女通缉犯出狱后当主播自称“改邪归正”,账号已被封
  • 持续更新丨伊朗内政部长:港口爆炸已致14人死亡