2014-02-09 33 views

回答

1

DBA_OBJECTS數據字典視圖保存有關數據庫中所有對象的信息。 DBA_SEGMENTS保存有關細分的信息(例如表格,索引,物化視圖等)。請參閱Oracle's documentation中的完整詳細信息。不支持段的對象只是存儲在Oracle內部表中的定義(例如,視圖不超過其文本所需的幾個字節的數據),因此它們可能安全地被忽略。

一旦我們確定了,它的外側連接兩個表的一個簡單的問題:

SELECT   object_name, object_type, bytes/1024 AS KB 
FROM   dba_objects do 
LEFT OUTER JOIN dba_segments ds on do.object_name = ds.segment_name 
WHERE   do.owner = 'BOOK' 

注意,遺憾的是,該表中沒有ALL_SEGMENTS變種,所以你必須使用一個用戶具有DBA_*視圖的權限。或者,您可以使用要檢索數據的用戶登錄並使用USER_*變體:

SELECT   object_name, object_type, bytes/1024 AS KB 
FROM   user_objects uo 
LEFT OUTER JOIN user_segments us on uo.object_name = us.segment_name 
+0

X/1024/1024給出MiByte,而不是K! –

+0

@ Wernfried好,趕快,謝謝!不知道發生了什麼......修正了。 – Mureinik

相關問題