六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 110|回复: 0

SQL语言: 统计数据库每天的数据增长量

[复制链接]

升级  90%

9

主题

9

主题

9

主题

童生

Rank: 1

积分
45
 楼主| 发表于 2013-1-13 18:23:28 | 显示全部楼层 |阅读模式
SQL语言: 统计数据库每天的数据增长量

 
需求:系统有时要统计数据库总共多少空间、剩余多少空间、使用空间、空间使用率、空间空闲率
 
实现:
select t.*  from (SELECT D.TABLESPACE_NAME,               SPACE "SUM_SPACE(M)",               BLOCKS SUM_BLOCKS,               SPACE - NVL(FREE_SPACE, 0) "USED_SPACE(M)",               ROUND((1 - NVL(FREE_SPACE, 0) / SPACE) * 100, 2) "USED_RATE(%)",               FREE_SPACE "FREE_SPACE(M)"          FROM (SELECT TABLESPACE_NAME,                       ROUND(SUM(BYTES) / (1024 * 1024), 2) SPACE,                       SUM(BLOCKS) BLOCKS                  FROM DBA_DATA_FILES                 GROUP BY TABLESPACE_NAME) D,               (SELECT TABLESPACE_NAME,                       ROUND(SUM(BYTES) / (1024 * 1024), 2) FREE_SPACE                  FROM DBA_FREE_SPACE                 GROUP BY TABLESPACE_NAME) F         WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME(+)        UNION ALL        SELECT D.TABLESPACE_NAME,               SPACE "SUM_SPACE(M)",               BLOCKS SUM_BLOCKS,               USED_SPACE "USED_SPACE(M)",               ROUND(NVL(USED_SPACE, 0) / SPACE * 100, 2) "USED_RATE(%)",               SPACE - USED_SPACE "FREE_SPACE(M)"          FROM (SELECT TABLESPACE_NAME,                       ROUND(SUM(BYTES) / (1024 * 1024), 2) SPACE,                       SUM(BLOCKS) BLOCKS                  FROM DBA_TEMP_FILES                 GROUP BY TABLESPACE_NAME) D,               (SELECT TABLESPACE,                       ROUND(SUM(BLOCKS * 8192) / (1024 * 1024), 2) USED_SPACE                  FROM V$SORT_USAGE                 GROUP BY TABLESPACE) F         WHERE D.TABLESPACE_NAME = F.TABLESPACE(+)) torder by "USED_RATE(%)" desc; 
 
运行效果:
 

 
 
测试实例:Oracle测试成功,MySQL测试不通过,DB2未测
 
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表