我正在尝试获取Oracle数据库上所有表空间的大小。 我尝试了两种获取信息的方法。
选项1给了我很好的值,但是当表空间没有数据库文件时,它不会返回任何值。具体来说,它不返回“TEMP”和“TESTTODELETE”表空间的任何值。
我注意到这两个表空间和其他表空间之间的唯一区别是这两个表空间没有.dbf文件。
选项2为某些表空间提供了正确的值,但在其他时间完全关闭。选项2确实返回“TEMP”表空间的内容,但它不会为“TESTTODELETE”表空间返回任何内容。
两个选项都不返回表空间“TESTTODELETE”的任何信息。
获取所有表空间的表空间总大小(MB)的最佳方法是什么,以便它反映企业管理器中显示的内容?
答案 0 :(得分:2)
dba_data_files
只包含具有数据文件的表空间。如果需要包含不受数据文件支持的表空间(例如临时表空间),则需要在查询中包含dba_temp_files
。它们具有几乎完全相同的列布局,因此它们应该很容易UNION
在一起。
对于dba_tablespace_usage_metrics
,它报告的容量是表空间的最大大小。如果表空间启用了自动扩展,则会在计算中包含该表空间。此外,我不建议依赖v$parameters
来确定块大小。相反,请加入dba_tablespaces
,因为每个表空间都可以有自己的块大小。