dba_SEGMENTS 和 dba_data_files 之间的区别

Difference between dba_SEGMENTS and dba_data_files

这两个查询不应该给出相同的结果吗?第一个是所有段的总和,而其他是所有数据文件的总和。他们给我不同的结果。 第一个给了我 149522MB,另一个给了 214973.34MB

select sum(bytes)/1024/1024 MB from dba_segments;

select sum(bytes)/1024/1024 MB from dba_data_files;

Oracle 使用 "logical" 和 "physical" 结构来存储数据。对于这种情况:段的范围可以存储在不同的数据文件中,因此仅求和可以但不能起作用,请参见此处:

http://docs.oracle.com/cd/E11882_01/server.112/e40540/logical.htm#CNCPT301

另外:Oracle 有一个 "High Water Mark",因此即使您的段大小下降,您的扩展和数据文件也不会自动缩小到 HWM 的大小以下,即。 e.看这里:

http://www.dbspecialists.com/resizing-datafiles-and-understanding-the-high-water-mark/