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

问题描述:

我需要在Oracle 10g中查找db的当前表空间大小。环顾四周,我发现了许多使用dba_extents这样的表来确定大小的脚本,但我使用的数据库没有这些dba_ *表。在没有dba_ * metatables的情况下在oracle上查找表空间大小

(我用这个作为认定表的大小,这是复杂的,因为大多数表的大小是斑点的代理。)

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

如果要检查的表位于您的架构中,则可以替换dba_extents与user_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); 

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寻求帮助。