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