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;