達夢資料庫表空間等空間大小查詢方法總結

始於腳下發表於2021-02-25

1 、檢視所有表空間大小及其使用情況

SELECT F.TABLESPACE_NAME,
       (T.TOTAL_SPACE - F.FREE_SPACE) / 1024 "USED (GB)",
       F.FREE_SPACE / 1024 "FREE (GB)",
       T.TOTAL_SPACE / 1024  "TOTAL(GB)",
       (ROUND((F.FREE_SPACE / T.TOTAL_SPACE) * 100)) ||  '% ' PER_FREE
  FROM (SELECT TABLESPACE_NAME,
               ROUND(SUM(BLOCKS *
                         (SELECT PARA_VALUE / 1024
                            FROM V$DM_INI
                           WHERE PARA_NAME = 'GLOBAL_PAGE_SIZE') / 1024)) FREE_SPACE
          FROM DBA_FREE_SPACE
         GROUP BY TABLESPACE_NAME) F,
       (SELECT TABLESPACE_NAME, ROUND(SUM(BYTES / 1048576)) TOTAL_SPACE
          FROM DBA_DATA_FILES
         GROUP BY TABLESPACE_NAME) T
 WHERE F.TABLESPACE_NAME = T.TABLESPACE_NAME;


2 、檢視指定表空間大小及其使用情況,如檢視DMHR開頭的表空間大小及其使用情況

SELECT F.TABLESPACE_NAME,
       (T.TOTAL_SPACE - F.FREE_SPACE) / 1024 "USED (GB)",
       F.FREE_SPACE / 1024 "FREE (GB)",
       T.TOTAL_SPACE / 1024  "TOTAL(GB)",
       (ROUND((F.FREE_SPACE / T.TOTAL_SPACE) * 100)) ||  '% ' PER_FREE
  FROM (SELECT TABLESPACE_NAME,
               ROUND(SUM(BLOCKS *
                         (SELECT PARA_VALUE / 1024
                            FROM V$DM_INI
                           WHERE PARA_NAME = 'GLOBAL_PAGE_SIZE') / 1024)) FREE_SPACE
          FROM DBA_FREE_SPACE
         GROUP BY TABLESPACE_NAME) F,
       (SELECT TABLESPACE_NAME, ROUND(SUM(BYTES / 1048576)) TOTAL_SPACE
          FROM DBA_DATA_FILES
         GROUP BY TABLESPACE_NAME) T
 WHERE F.TABLESPACE_NAME = T.TABLESPACE_NAME AND T.TABLESPACE_NAME LIKE 'DMHR%';


3 、檢視指定使用者佔用的空間大小,如檢視SYSDBA使用者佔用的空間大小

SELECT USER_USED_SPACE('SYSDBA') * PARA_VALUE / 1024 / 1024 "USER_USED_SPACE(MB)"
  FROM V$DM_INI
 WHERE PARA_NAME LIKE 'GLOBAL_PAGE_SIZE';


4 、檢視指定表佔用的空間大小,如檢視DMHR使用者下CITY表佔用的空間大小

SELECT TABLE_USED_PAGES('DMHR', 'CITY') * PARA_VALUE / 1024 / 1024 "USER_USED_SPACE(MB)"
  FROM V$DM_INI
 WHERE PARA_NAME LIKE 'GLOBAL_PAGE_SIZE';


5 、檢視指定表已使用的空間大小,如檢視DMHR使用者下CITY表已使用的空間大小

SELECT TABLE_USED_SPACE('DMHR', 'CITY') * PARA_VALUE / 1024 / 1024 "USER_USED_SPACE(MB)"
  FROM V$DM_INI
 WHERE PARA_NAME LIKE 'GLOBAL_PAGE_SIZE';


6 、檢視指定索引佔用的空間大小,如檢視DMHR使用者下EMPLOYEE表已上的索引INDEX33555541佔用的空間大小,達夢資料庫查詢索引空間佔用是以索引的ID為傳入引數,可以通過以下SQL查詢索引的ID

SELECT NAME, ID
  FROM SYSOBJECTS
 WHERE NAME IN (SELECT INDEX_NAME
                  FROM DBA_INDEXES
                 WHERE OWNER = 'DMHR'
                   AND TABLE_NAME = 'EMPLOYEE')
   AND INDEX_NAME = 'INDEX33555541';


然後根據上面查到的ID來查詢對應的索引佔用的空間大小

SELECT INDEX_USED_PAGES(33555524) * PARA_VALUE / 1024 / 1024 "USER_USED_SPACE(MB)"
  FROM V$DM_INI
 WHERE PARA_NAME LIKE 'GLOBAL_PAGE_SIZE';


7 、檢視指定索引已使用的空間大小,如檢視DMHR使用者下EMPLOYEE表已上的索引INDEX33555541使用的空間大小,達夢資料庫查詢索引空間佔用是以索引的ID為傳入引數,可以通過以下SQL查詢索引的ID

SELECT NAME, ID
  FROM SYSOBJECTS
 WHERE NAME IN (SELECT INDEX_NAME
                  FROM DBA_INDEXES
                 WHERE OWNER = 'DMHR'
                   AND TABLE_NAME = 'EMPLOYEE')
   AND INDEX_NAME = 'INDEX33555541';


然後根據上面查到的ID來查詢對應的索引使用的空間大小

SELECT INDEX_USED_SPACE(33555524) * PARA_VALUE / 1024 / 1024 "USER_USED_SPACE(MB)"
  FROM V$DM_INI
 WHERE PARA_NAME LIKE 'GLOBAL_PAGE_SIZE';


 

 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31403259/viewspace-2759188/,如需轉載,請註明出處,否則將追究法律責任。

相關文章