1

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

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

在此处输入图像描述

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

在此处输入图像描述

选项 2 为我提供了某些表空间的正确值,但在其他时候完全关闭。选项 2 确实为“TEMP”表空间返回了一些东西,但它没有为“TESTTODELETE”表空间返回任何东西。

在此处输入图像描述

这两个选项都不返回表空间“TESTTODELETE”的任何信息。

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

4

1 回答 1

2

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

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

于 2016-03-07T22:28:21.117 回答