在没有dba_ * metatables的oracle上查找表空间大小

时间:2017-07-27 20:42:36

标签: oracle oracle10g

我需要在Oracle 10g中找到db的当前表空间大小。环顾四周,我发现很多脚本使用像dba_extents这样的表来确定大小,但是我使用的数据库没有这些dba_ *表。

(我使用它作为查找表大小的代理,这很复杂,因为大多数表大小都在blob中。)

2 个答案:

答案 0 :(得分:3)

DBA_*视图是"Static Data Dictionary Views"的一部分通常每个视图都有三个版本,DBA_显示所有内容,ALL_显示您有权访问的内容,和USER_将显示您拥有的内容,并且不会显示OWNER列。

例如DBA_TABLES包含所有表格,ALL_TABLES是您可以选择的表格,USER_TABLES是您拥有的表格。

视图记录在"Static Data Dictionary Views"中。如果您需要从DBA_翻译为ALL_USER_,这是一个很好的资源。

不幸的是_EXTENTS只出现在DBA和USER版本中。因此,如果您想要访问但不拥有的对象信息,则需要向您的常驻DBA寻求帮助。

答案 1 :(得分:0)

dba_ *视图是数据字典的一部分,它存在于每个Oracle数据库中。它们位于 sys 架构中,如果您无法查询它们,则可能只是意味着您没有SELECT访问权限。

如果要检查的表位于架构中,则可以替换为例如带有user_extents的dba_extents和查询应该可以工作。

这是我建议用脚本来告诉模式中表的大小(包括索引):

select segment_name, segment_type, bytes/1024/1024 as size_in_mb
from user_segments
where segment_name = :YOUR_TABLE
  or segment_name in (select segment_name from user_lobs where table_name = :YOUR_TABLE)
  or segment_name in (select index_name from user_indexes where table_name = :YOUR_TABLE);