Oracle 查询各表空间使用情况--完善篇


标题: Oracle 查询各表空间使用情况--完善篇

作者:lōττéry©版权所有[文章允许转载,但必须以链接方式注明源地址,否则追究法律责任.]

前言 :
  之前简单写过"Oracle 查询各个 “表空间/数据文件” 的空间使用比情况",当时只简单用到dba_data_file"总大小"与dba_free_space"剩余大小"来判断空间使用情况 ;
  但当如下2种情况产生的时候 ,以前的脚本不太适用 ;
   1、 DBF设置AUTOEXTENSIBLE='YES'自增长时, 例如:初步分配10G,使用9.9G,原方法使用率 = 9.9/ 10 *100 = 99%,而实际为=9.9 /总( 'smailfile' ≈32 G )*100 = 31%;
   2、 UNDO表空间循环使用,当大部分空间分配状态为UNEXPIRED,EXPIRED时,按照之前方式所算的使用率完全没有参考价值;
 
     针对如上的2中情况 ,在如下sql已做改进.
 
SQL :

SELECT TBSP.TABLESPACE_NAME ,
       TBSP.TOTAL_GB ,
       TBSP.USE_GB ,
       TBSP.TOTAL_GB - TBSP.USE_GB FREE_GB,
       ROUND (TBSP.USE_GB / TBSP.TOTAL_GB * 100 ,2 ) "USE%"
  FROM ( SELECT TOTAL.TABLESPACE_NAME ,
               TOTAL_GB ,
               /*USE.TABLESPACE_NAME IS NULL 表示表空间使用为0'未分配段'*/
               ( CASE WHEN USE.TABLESPACE_NAME IS NULL THEN 0
               /*各UNDO表空间ACTIVE状态USE_GB
               --ACTIVE表示目前仍活跃的事务相关回滚信息;
               --UNEXPIRED表示虽然事务已经结束但回滚信息保留的时间仍未超过实例参数 UNDO_RETENTION所设定的值;
               --EXPIRED表示回滚信息保留时间已超过UNDO_RETENTION所设定的值*/
               WHEN TOTAL.TABLESPACE_NAME IN ( SELECT DISTINCT TABLESPACE_NAME FROM DBA_UNDO_EXTENTS) THEN
               ( SELECT ROUND(NVL(SUM(BLOCKS) * 8 / 1024 / 1024,0), 2) AS "SIZE G" FROM DBA_UNDO_EXTENTS WHERE STATUS = 'ACTIVE'
               AND TABLESPACE_NAME = TOTAL.TABLESPACE_NAME) ELSE USE_GB END ) USE_GB  
          FROM (/*表空间总大小*/
                SELECT TABLESPACE_NAME ,
                       /*自动增长,OS层空间足够时,取MAXBYTES*/
                       ROUND (SUM (( CASE WHEN AUTOEXTENSIBLE = 'YES' THEN MAXBYTES ELSE BYTES END ) / 1024 / 1024 / 1024 ), 2 ) TOTAL_GB
                  FROM DBA_DATA_FILES  
                 GROUP BY TABLESPACE_NAME) TOTAL
          LEFT JOIN ( /*表空间真实使用情况*/
                    SELECT TABLESPACE_NAME ,
                           ROUND (SUM ( BYTES / 1024 / 1024 / 1024), 2 ) USE_GB
                      FROM DBA_SEGMENTS
                     GROUP BY TABLESPACE_NAME) USE
            ON USE.TABLESPACE_NAME = TOTAL.TABLESPACE_NAME) TBSP
UNION ALL ( /*临时表空间使用情况*/
          SELECT TABLESPACE_NAME ,
                  ROUND (TF.TABLESPACE_SIZE / 1024 / 1024 / 1024 , 2) TABLESPACE_NAME ,
                  ROUND ((TF.TABLESPACE_SIZE - TF.FREE_SPACE) / 1024 / 1024 / 1024 , 2 ) USE_GB ,
                  ROUND (TF.FREE_SPACE / 1024 / 1024 / 1024 , 2) FREE_GB ,
                  ROUND ((TF.TABLESPACE_SIZE - TF.FREE_SPACE) /TF.TABLESPACE_SIZE * 100 , 2) "USE%"
             FROM DBA_TEMP_FREE_SPACE TF);

 
视图官方介绍 :
 
提示:
 若想针对各个DBF使用率进行查询,需要完善例如DBA_SEGMENTS.HEADER_FILE = DBA_DATA_FILES.FILE_ID...等

[转帖]Oracle 查询各表空间使用情况--完善篇的更多相关文章

  1. oracle 查询数据库表空间大小和剩余空间

    dba_data_files:数据库数据文件信息表.可以统计表空间大小(总空间大小). dba_free_space:可以统计剩余表空间大小. 增加表空间即向表空间增加数据文件,表空间大小就是数据文件 ...

  2. 数据库 | Oracle数据库查表空间使用情况

    平时在使用Oracle的时候,如果业务中的数据量激增.数据量变大,很有可能就会有表空间不足的情况,需要重点关注.今天我们分享下如何查看表空间的使用情况. 一.如何查看使用状况 我们废话不说,先直接贴上 ...

  3. 【转】oracle查询用户表,函数,储存过程,

    ◆Oracle查询用户表空间:select * from user_all_tables ◆Oracle查询所有函数和储存过程:select * from user_source ◆Oracle查询所 ...

  4. oracle 全部查询和表空间,以及其关系

    select * from dba_users;   查看数据库里面全部用户,前提是你是有dba权限的帐号.如sys,system select * from all_users;     查看你能管 ...

  5. Oracle系列之表空间

    涉及到表的处理请参看原表结构与数据  Oracle建表插数据等等 创建表空间等等 select tablespace_name from dba_tablespaces;--dba权限用户查询数据库中 ...

  6. 十四、oracle 数据库管理--管理表空间和数据文件

    一.概念表空间是数据库的逻辑组成部分.从物理上讲,数据库数据存放在数据文件中:从逻辑上讲,数据库数据则是存放在表空间中,表空间由一个或多个数据文件组成. 二.数据库的逻辑结构oracle中逻辑结构包括 ...

  7. 如何让Oracle释放undo表空间

    如何让Oracle释放undo表空间   最佳答案   在日常的数据库维护和数据库编程中经常会遇到犹豫对大数据量做DML操作后是得ORACLE的undo表空间扩展到十几个G或者几十个G 但是这些表空间 ...

  8. oracle 数据库管理--管理表空间和数据文件

    一.概念表空间是数据库的逻辑组成部分.从物理上讲,数据库数据存放在数据文件中:从逻辑上讲,数据库数据则是存放在表空间中,表空间由一个或多个数据文件组成. 二.数据库的逻辑结构oracle中逻辑结构包括 ...

  9. [Oracle]理解undo表空间

    一.回退段介绍 在Oracle数据库中,当某个事物对数据进行修改时,Oracle首先将数据的原始值保存到一个回退段中.一个事物只能将它的回退信息保存到一个回退段中,而多个并行事物可以使用同一个回退段. ...

随机推荐

  1. canvas 计算文字宽度(常用于文字换行)

    var c=document.getElementById("myCanvas"); var ctx=c.getContext("2d"); ctx.font= ...

  2. python之路day14--列表生成式、生成器generator、生成器并行

    列表生成式 列表生成式阅读量: 44   现在有个需求,现有列表a=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],要求你把列表里的每个值加1,你怎么实现?你可能会想到2种方式 二逼青年 ...

  3. springboot 在idea中实现热部署

    SpringBoot的web项目,在每一次修改了java文件或者是resource的时候,都必须去重启一下项目,这样的话浪费了很多的时间,实现了热部署,在每一次作了修改之后,都会自动的重启 第一步:引 ...

  4. 对ECMAScript的研究-----------引用

    ECMAScript 新特性与标准提案 一:ES 模块 第一个要介绍的 ES 模块,由于历史上 JavaScript 没有提供模块系统,在远古时期我们常用多个 script 标签将代码进行人工隔离.但 ...

  5. Comet OJ - Contest #14题解

    Contest14的本质:区间覆盖+Tarjan( A 把距离公式两边平方即可 注意要long long code #include <algorithm> #include <io ...

  6. 8.django单独执行文件

    import os import django # 导入django os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'noju.settings')d ...

  7. IDEA中Springboot静态文件加载(热部署)

    Springboot项目静态文件加载 昨天写项目的时候碰到一个问题,就是静态文件css无法读取到项目中,我仔细思考了下,总结了下,可能有两个问题 1.页面未加载更新 这个可能性非常大,Chrome就是 ...

  8. java 上传大文件以及文件夹

    我们平时经常做的是上传文件,上传文件夹与上传文件类似,但也有一些不同之处,这次做了上传文件夹就记录下以备后用. 这次项目的需求: 支持大文件的上传和续传,要求续传支持所有浏览器,包括ie6,ie7,i ...

  9. Python稀疏矩阵运算

    import numpy as np import scipy import time import scipy.sparse as sparse t = [1]+[0]*4999 a = scipy ...

  10. 京东面试题:Java中 ++i 的操作是线程安全的么?为什么?如何使其线程安全呢?

    你真的了解volatile关键字吗?http://blog.csdn.net/FansUnion/article/details/79495080 面试题:为什么最后两行没有运行?http://blo ...