Oracle 查询结果与企业管理器值不匹配

Oracle query results don't match Enterprise Manager values

我正在尝试获取 Oracle 数据库中所有表空间的大小。 我尝试了两种获取信息的方法。

选项 1 给了我很好的值,但是当表空间没有数据库文件时它不会给 return 任何值。具体来说,它不会 returning "TEMP" 和 "TESTTODELETE" 表空间的任何值。

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

选项 2 为我提供了一些表空间的正确值,但其他时候则完全不正确。选项 2 return 对 "TEMP" 表空间做了一些事情,但它对 "TESTTODELETE" 表空间没有 return 任何事情。

这两个选项都不 return 表空间 "TESTTODELETE" 的任何信息。

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

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

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