ITPub博客

首页 > 数据库 > 国内数据库 > 达梦数据库表空间等空间大小查询方法总结

达梦数据库表空间等空间大小查询方法总结

原创 国内数据库 作者:始于脚下 时间:2021-02-25 08:33:19 0 删除 编辑

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/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
拥有多年电信行业Oracle数据库管理经验,拥有Oracle OCP、OCM证书,擅长各个场景下的数据库备份与恢复、性能分析管理、上线规划及部署实施、架构设计、自动化运维等。

注册时间:2016-10-18

  • 博文量
    75
  • 访问量
    151969