我需要在Oracle 10g中查找db的當前表空間大小。環顧四周,我發現了許多使用dba_extents這樣的表來確定大小的腳本,但我使用的數據庫沒有這些dba_ *表。在沒有dba_ * metatables的情況下在oracle上查找表空間大小
(我用這個作爲認定表的大小,這是複雜的,因爲大多數表的大小是斑點的代理。)
我需要在Oracle 10g中查找db的當前表空間大小。環顧四周,我發現了許多使用dba_extents這樣的表來確定大小的腳本,但我使用的數據庫沒有這些dba_ *表。在沒有dba_ * metatables的情況下在oracle上查找表空間大小
(我用這個作爲認定表的大小,這是複雜的,因爲大多數表的大小是斑點的代理。)
的DBA_ *視圖的數據字典的一部分,它存在於每個Oracle數據庫。它們位於sys架構中,如果您無法查詢它們,則可能只是表示您沒有SELECT訪問權限。
如果要檢查的表位於您的架構中,則可以替換dba_extents與user_extents和查詢應該工作。
這裏是我的建議爲一個腳本來告訴表的大小在模式(包括索引):
select segment_name, segment_type, bytes/1024/1024 as size_in_mb
from user_segments
where segment_name = :YOUR_TABLE
or segment_name in (select segment_name from user_lobs where table_name = :YOUR_TABLE)
or segment_name in (select index_name from user_indexes where table_name = :YOUR_TABLE);
的DBA_*
觀點是"Static Data Dictionary Views"的一部分,通常有三個版本每個視圖中,DBA_
顯示所有內容,ALL_
顯示您有權訪問的內容,USER_
顯示您擁有的內容,並且不顯示OWNER
列。
例如DBA_TABLES
包含所有表格,ALL_TABLES
是您可以從中選擇的表格,USER_TABLES
是您擁有的表格。
該意見記錄在"Static Data Dictionary Views"。如果您需要從DBA_
轉換爲ALL_
或USER_
,這是一個很好的資源。
不幸的是_EXTENTS
只能進入DBA和USER版本。因此,如果想要獲取可以訪問但不擁有的對象的信息,則需要向您的常駐DBA尋求幫助。