我需要在Oracle 10g中找到db的当前表空间大小。环顾四周,我发现很多脚本使用像dba_extents这样的表来确定大小,但是我使用的数据库没有这些dba_ *表。
(我使用它作为查找表大小的代理,这很复杂,因为大多数表大小都在blob中。)
答案 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);