如何在一个查询中获取所有者的名称、他们的对象名称和此对象的大小?

问题描述

我想检查用户的哪些对象最大。所以我做了查询给我每个用户的对象总大小:

select
  owner,tablespace_name,round((sum(bytes)/1024/1024/1024),2) as size_in_gb,(select round((sum(bytes)/1024/1024/1024),2) from v$datafile) as total_space_in_gb
from
   dba_segments
where
   owner like 'OPS$%'
group by
 owner,tablespace_name
order by
  size_in_gb desc
fetch first 55 rows only;

但它只给我有特定用户的所有对象的总大小的信息。如何检查每个用户对象及其大小?

解决方法

segment_name 添加到您的 select 列表和您的 group by

select
  segment_name,owner,tablespace_name,round((sum(bytes)/1024/1024/1024),2) as size_in_gb,(select round((sum(bytes)/1024/1024/1024),2) from v$datafile) as total_space_in_gb
from
   dba_segments
where
   owner like 'OPS$%'
group by
 segment_name,tablespace_name
order by
  size_in_gb desc
fetch first 55 rows only;

不过,您的 v$datafile 查询在做什么并不明显。这是对每个数据文件的大小求和,而不仅仅是与 OPS$ 用户拥有对象的表空间相关联的那些。产生一个有意义的数字并不明显,更不用说您想要在结果的每一行上复制的数字。但是,如果您在结果中获得细分级别的数据,那么您希望该列中的值并不明显。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...