Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 计算架构中表的大小_Sql_Oracle - Fatal编程技术网

Sql 计算架构中表的大小

Sql 计算架构中表的大小,sql,oracle,Sql,Oracle,我正在尝试在模式中查找表的大小。我试图通过dba_范围找到如下内容 select segment_name,sum(bytes)/(1024*1024) size from dba_extent where segment_type='TABLE' and segment_name = 'mytablename' and owner ='myschemaname' group by segment_name; 它的大小为2MB,但不可能是2MB,我在导出模式时在日志中看到它的大小约为800M

我正在尝试在模式中查找表的大小。我试图通过dba_范围找到如下内容

select segment_name,sum(bytes)/(1024*1024) size from  dba_extent where segment_type='TABLE'
and segment_name = 'mytablename'
and owner ='myschemaname'
group by segment_name;

它的大小为2MB,但不可能是2MB,我在导出模式时在日志中看到它的大小约为800MB。当我查询dba_段时,它给出了相同的结果。任何人都能帮我解决问题。谢谢你的时间。

试试下面的SQL:希望这会有帮助:)

选择
tbl.NAME作为表名,
idx.name作为indexName,
prts。[行],
合计(总页数)为总页数,
作为已用页面的总和(a.已用页面),
作为数据页的总和(a.数据页),
(总页数)*8)/1024总计为MB,
(总计(使用的页数)*8)/1024作为使用的空间MB,
(总计(a.数据页)*8)/1024作为数据空间MB
从…起
系统表待定
内连接
tbl.OBJECT\u ID=idx.OBJECT\u ID上的sys.index idx
内连接
在idx.object\u id=prts.object\u id和idx.index\u id=prts.index\u id上的sys.partitions prts
内连接
在prts.partition\u id=a.container\u id上的sys.allocation\u units a
哪里
tbl.NAME与“dt%”不同,并且
idx.OBJECT_ID>255和

idx.index\u id尝试以下SQL:希望这将有帮助:)

选择
tbl.NAME作为表名,
idx.name作为indexName,
prts。[行],
合计(总页数)为总页数,
作为已用页面的总和(a.已用页面),
作为数据页的总和(a.数据页),
(总页数)*8)/1024总计为MB,
(总计(使用的页数)*8)/1024作为使用的空间MB,
(总计(a.数据页)*8)/1024作为数据空间MB
从…起
系统表待定
内连接
tbl.OBJECT\u ID=idx.OBJECT\u ID上的sys.index idx
内连接
在idx.object\u id=prts.object\u id和idx.index\u id=prts.index\u id上的sys.partitions prts
内连接
在prts.partition\u id=a.container\u id上的sys.allocation\u units a
哪里
tbl.NAME与“dt%”不同,并且
idx.OBJECT_ID>255和

idx.index\u id什么日志告诉您表更大?有没有可能表中有一个LOB,它可能是另一个段名称?是的,它有blob,我不知道它是否使用其他段,如何才能找到that@JustinCave,它正在使用另一段。非常感谢。从另一个角度来看,但关联度足够大?什么日志告诉你桌子更大?有没有可能表中有一个LOB,它可能是另一个段名称?是的,它有blob,我不知道它是否使用其他段,如何才能找到that@JustinCave,它正在使用另一段。非常感谢。从另一个角度来看,但相关程度足够了?以上SQL在SQL-2008中对我来说运行良好,你在尝试哪个DB?oracle没有分配单位表,我得到的表不存在错误,我使用10gOhh好的。以上SQL仅适用于MS-SQL Server。不适用于Oracle。问题被标记为。请尝试:从dba_段中选择段名称、段类型、字节/1024/1024 MB,其中段类型=“”,段名称=“”;以上SQL在SQL-2008中对我来说运行良好,你在尝试哪个数据库?oracle没有分配单位表,我得到的表不存在错误,我使用10gOhh好的。以上SQL仅适用于MS-SQL Server。不适用于Oracle。问题被标记为。请尝试:从dba_段中选择段名称、段类型、字节/1024/1024 MB,其中段类型=“”,段名称=“”;
SELECT 
tbl.NAME AS TableName,
idx.name as indexName,
prts.[Rows],
sum(a.total_pages) as TotalPages, 
sum(a.used_pages) as UsedPages, 
sum(a.data_pages) as DataPages,
(sum(a.total_pages) * 8) / 1024 as TotalSpaceMB, 
(sum(a.used_pages) * 8) / 1024 as UsedSpaceMB, 
(sum(a.data_pages) * 8) / 1024 as DataSpaceMB
FROM 
sys.tables tbl
INNER JOIN 
sys.indexes idx ON tbl.OBJECT_ID = idx.object_id
INNER JOIN 
sys.partitions prts ON idx.object_id = prts.OBJECT_ID AND idx.index_id = prts.index_id
INNER JOIN 
sys.allocation_units a ON prts.partition_id = a.container_id
WHERE 
tbl.NAME NOT LIKE 'dt%' AND
idx.OBJECT_ID > 255 AND 
idx.index_id <= 1
GROUP BY 
tbl.NAME, idx.object_id, idx.index_id, idx.name, prts.[Rows]
ORDER BY 
object_name(idx.object_id)