2016-03-07 87 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,因爲每個表空間可以有自己的塊大小。