ITPUB论坛-专业的IT技术社区

标题: 请教计算表空间所占大小的疑问 [打印本页]

作者: iceagelin    时间: 2007-10-18 15:42
标题: 请教计算表空间所占大小的疑问
计算数据库中表空间所占大小。
用两个不同的SQL语句查出的结果不一样:
SQL> select tablespace_name, sum(bytes)/(1024*1024) total from dba_data_files group by tablespace_name;

TABLESPACE_NAME      TOTAL
------------------------------ ----------
SYSAUX                        240
UNDOTBS1                    30
USERS                              5
SYSTEM                         480
EXAMPLE                      100

SQL>  Select tablespace_name,sum(bytes)/1024/1024 from dba_Segments group by tablespace_name;

TABLESPACE_NAME SUM(BYTES)/1024/1024
------------------------------ --------------------
SYSAUX                               237.75
UNDOTBS1                           9.875
USERS                                        3
SYSTEM                              476.0625
EXAMPLE                            68.1875

自己看这两个SQL语句都是对的,为什么计算出来的结果有的不一致,有的又是一致呢。不过第一个计算进行了四舍五入不明白为什么?

请朋友们帮忙看看,是SQL语句有误,还是其他的原因。
那如果需要计算表空间所占的大小正确的计算方法又是什么呢?

谢谢!
作者: alantany    时间: 2007-10-18 16:01
a>表空间数据文件的大小。
b>表空间上存放的segment的大小。
b<=a forever......
作者: drifter    时间: 2007-10-18 16:02
第一个计算的应该是数据文件的大小,第二个才是表空间数据段所占用的大小
作者: iceagelin    时间: 2007-10-18 16:09

可是这两个不都是包含了整个表空间吗?
那计算出来的不应该是整个表空间的大小吗?
还是不明白?
作者: iceagelin    时间: 2007-10-18 16:17
是不是这样子的。
从dba_segments获得就是相当于目前所用extends的大小,也就是表空间使用了的总大小。
而从data_files中捞得的就是整个表空间分配的总大小。
用这个比例就相当于表空间的使用比例?
这样理解对吗?

小弟先谢过了。
作者: drifter    时间: 2007-10-18 16:27
可以这么理解




欢迎光临 ITPUB论坛-专业的IT技术社区 (http://www.itpub.net/) Powered by Discuz! X3.2