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