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. 【leetcode&CN&竞赛】1196.How Many Apples Can You Put into the Basket

    题目如下: 楼下水果店正在促销,你打算买些苹果,arr[i] 表示第 i 个苹果的单位重量. 你有一个购物袋,最多可以装 5000 单位重量的东西,算一算,最多可以往购物袋里装入多少苹果. 示例 1: ...

  2. 解析binlog生成MySQL回滚脚本

    如果数据库误操作想恢复数据.可以试试下面这个脚本.前提是执行DML操作. #!/bin/env python #coding:utf-8 #Author: Hogan #Descript : 解析bi ...

  3. 使用bitmap实现对一千万个无重复的正整数(范围1~1亿)快速排序

    1 Bytes(字节) == 8 bit 1 KBytes == 1024 Bytes 思路: 1)申请长度为1亿的保存二进制位的数组 a, 2)通过位运算,将整数做为索引,将数组a对应的索引位置为1 ...

  4. Linux基础教程 linux下查询history操作时间的方法

    要在linux操作系统中查看history记录的操作时间,可以按如下步骤实现: 学习linux 1,修改/etc/profile文件,在末尾添加:exporthisttimeformat=”%f %t ...

  5. ELK+Filebeat+redis整合

    前面的博客,有具体的ELK安装配置步骤,此处在其基础上修改 修改配置文件并启动 [root@topcheer filebeat-6.2.3-linux-x86_64]# vim filebeat.ym ...

  6. Jedis下的ShardedJedis

    jedis客户端操作redis主要三种模式:单台模式.分片模式(ShardedJedis).集群模式(BinaryJedisCluster) ShardedJedis是通过一致性哈希来实现分布式缓存的 ...

  7. Spring Boot教程(十二)整合elk(1)

    elk 简介 Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等. Logstash是 ...

  8. NOIP2018初赛划水记

    尽管初赛好像没什么好写的,但还是以此作为我的第一篇游记吧. 前夜 本来以为初赛水(去年分数线36来着),几周前做了一套普及组的卷子90多分感觉良好就没管了(不明白那些专门花时间看初赛书的人),结果Mr ...

  9. Ambari显示server 返回500 error

    Ambari server 搭建过程中到了revicw环境遇到点击deploy:发现页面没有响应 Console显示server 返回500 error错误,页面中没有提示更多的报错信息. 经过日志查 ...

  10. libusb获取usb设备的idVendor(vid),idProduct(pid),以及Serial Number

    发表于2015/6/23 21:55:11  4594人阅读 最近在做关于usb设备的项目,用到了libusb,发现关于这个的函数库的介绍,讲解很少,下面仅仅是简单展示一些基本的使用方法,以备后用. ...