2015-02-12 80 views
0

我想寫一個sql來獲得前5個表空間存儲指標。在查詢下方給出關於所有tbspace的度量。感激,如果有人微調這隻有前NOracle SQL組通過條目

SELECT 
ts.tablespace_name AS TBNAME, 
round((ts.tablespace_size/1024/1024),2) AS SIZE_MB, 
round((ts.tablespace_used_size/1024/1024),2) AS USED_MB, 
round(((ts.tablespace_size - ts.tablespace_used_size)/1024/1024),2) AS  FREE_MB 
FROM 
mgmt$db_tablespaces ts, 
(SELECT d.target_guid, d.tablespace_name, count(d.file_name) df_count, 
sum(decode(d.autoextensible, 'YES', 1, 0)) auto_extend 
FROM mgmt$db_datafiles d, mgmt$target t 
WHERE t.target_guid = '<id>' AND 
(t.target_type='rac_database' OR 
(t.target_type='oracle_database' AND t.TYPE_QUALIFIER3 != 'RACINST')) AND 
t.target_guid = d.target_guid 
GROUP BY d.target_guid, d.tablespace_name) df 
WHERE 
ts.target_guid = df.target_guid AND 
df.tablespace_name = ts.tablespace_name 
ORDER BY ts.tablespace_size;` 

感謝

回答

1

可以使用ROWNUM。 Oracle在返回結果後對結果應用rownum。 您需要篩選返回的結果,因此需要子查詢。您也可以使用RANK()函數獲取Top-N結果。

SELECT 
     * 
    FROM 
     (
     SELECT 
      ts.tablespace_name AS TBNAME, 
      round((ts.tablespace_size/1024/1024),2) AS SIZE_MB, 
      round((ts.tablespace_used_size/1024/1024),2) AS USED_MB, 
      round(((ts.tablespace_size - ts.tablespace_used_size)/1024/1024),2) AS  FREE_MB 
     FROM 
      mgmt$db_tablespaces ts, 
      (SELECT d.target_guid, d.tablespace_name, count(d.file_name) df_count, 
       sum(decode(d.autoextensible, 'YES', 1, 0)) auto_extend 
      FROM mgmt$db_datafiles d, mgmt$target t 
      WHERE t.target_guid = '<id>' AND 
      (t.target_type='rac_database' OR 
      (t.target_type='oracle_database' AND t.TYPE_QUALIFIER3 != 'RACINST')) AND 
      t.target_guid = d.target_guid 
      GROUP BY d.target_guid, d.tablespace_name) df 
     WHERE 
     ts.target_guid = df.target_guid AND 
     df.tablespace_name = ts.tablespace_name 
     ORDER BY ts.tablespace_size 
    ) 
    WHERE ROWNUM <= 5; 
+0

這是行不通的 – Prakash 2015-02-12 07:39:13

+2

這是什麼意思你不明白你會得到什麼錯誤? – 2015-02-12 07:40:22

+0

這不是一個有效的SQL。我添加了RANK()並獲得了我想要的輸出。 – Prakash 2015-02-12 09:41:32