sqlplus列出对象名称和模式中每个对象的kb大小

时间:2014-02-09 03:09:10

标签: sql oracle

我想列出一个模式中每个对象的kb中的所有对象名称和大小(例如书),但我不知道该怎么做。我可以看看任何好的参考资料吗?

1 个答案:

答案 0 :(得分:1)

DBA_OBJECTS数据字典视图包含有关数据库中所有对象的信息。 DBA_SEGMENTS包含有关细分的信息(例如表格,索引,物化视图等。请参阅Oracle's documentation中的完整详细信息)。没有段支持的对象只是存储在Oracle内部表中的定义(例如,视图不超过其文本所占用的几个字节的数据),因此可以安全地忽略它们。

一旦我们确定了这一点,外部加入两个表就很简单了:

SELECT          object_name, object_type, bytes/1024 AS KB
FROM            dba_objects do
LEFT OUTER JOIN dba_segments ds on do.object_name = ds.segment_name
WHERE           do.owner = 'BOOK'

请注意,遗憾的是,该表没有ALL_SEGMENTS变体,因此您必须使用具有DBA_*视图权限的用户。或者,您可以使用要为其检索数据的用户登录并使用USER_*变体:

SELECT          object_name, object_type, bytes/1024 AS KB
FROM            user_objects uo
LEFT OUTER JOIN user_segments us on uo.object_name = us.segment_name