2016-03-07 63 views
1

我试图获取Oracle数据库上所有表空间的大小。 我试过2种获取信息的方法。Oracle查询结果与企业管理器值不匹配

选项1给了我很好的值,但当表空间没有数据库文件时,它不会返回任何值。特别是,它不会返回“TEMP”和“TESTTODELETE”表空间的任何值。

enter image description here

我这两个表空间与其他人之间注意到的唯一区别是,这些2没有的.dbf文件。

enter image description here

选项2让我对一些表空间的正确的价值观,但完全关闭其他时间。选项2确实会为“TEMP”表空间返回一些内容,但它不会为“TESTTODELETE”表空间返回任何内容。

enter image description here

两个选项都不会返回为表 “TESTTODELETE” 的任何信息。

为所有表空间获取表空间总大小(MB)的最佳方式是什么,以便它反映企业管理器中显示的内容?

回答

2

dba_data_files只包含那个具有数据文件的表空间。如果您需要包含不受数据文件支持的表空间(例如临时表空间),则需要在查询中包含dba_temp_files。他们有几乎完全相同的列布局,所以它应该很容易UNION他们在一起。

至于dba_tablespace_usage_metrics,它报告的容量是最大大小的表空间。如果表空间已启用自动扩展功能,则它将包含在计算中。此外,我不建议依靠v$parameters来确定块大小。相反,加入到dba_tablespaces,因为每个表空间可以有自己的块大小。