当前位置:  数据库>oracle

Oracle 表空间使用率监控

    来源: 互联网  发布时间:2017-05-29

    本文导语: 可以通过以下方式方便地找出监控Oracle表空间使用率的SQL: 找了个测试库,确保只有一个用户连接,利用TOAD查看表空间的使用率,先刷新share pool,再刷新查看表空间的使用率,此时,可以在share pool查看刚执行SQL,如下: SELECT TS...

可以通过以下方式方便地找出监控Oracle表空间使用率的SQL:

找了个测试库,确保只有一个用户连接,利用TOAD查看表空间的使用率,先刷新share pool,再刷新查看表空间的使用率,此时,可以在share pool查看刚执行SQL,如下:

SELECT TS.TABLESPACE_NAME 表空间名,
      TS.STATUS 状态,
      TS.CONTENTS,
      TS.EXTENT_MANAGEMENT,
      SIZE_INFO.MEGS_ALLOC,
      SIZE_INFO.MEGS_FREE,
      SIZE_INFO.MEGS_USED,
      SIZE_INFO.PCT_FREE,
      SIZE_INFO.PCT_USED,
      Round(SIZE_INFO.MEGS_USED*100 / SIZE_INFO.MAX) used_of_max,  ---add by myself
      SIZE_INFO.MAX
  FROM (SELECT A.TABLESPACE_NAME,
              ROUND(A.BYTES_ALLOC / 1024 / 1024) MEGS_ALLOC,
              ROUND(NVL(B.BYTES_FREE, 0) / 1024 / 1024) MEGS_FREE,
              ROUND((A.BYTES_ALLOC - NVL(B.BYTES_FREE, 0)) / 1024 / 1024) MEGS_USED,
              ROUND((NVL(B.BYTES_FREE, 0) / A.BYTES_ALLOC) * 100) PCT_FREE,
              100 - ROUND((NVL(B.BYTES_FREE, 0) / A.BYTES_ALLOC) * 100) PCT_USED,
              ROUND(A.MAXBYTES / 1048576) MAX
          FROM (SELECT F.TABLESPACE_NAME,
                      SUM(F.BYTES) BYTES_ALLOC,
                      SUM(DECODE(F.AUTOEXTENSIBLE, 'YES', F.MAXBYTES, 'NO', F.BYTES)) MAXBYTES
                  FROM DBA_DATA_FILES F
                GROUP BY TABLESPACE_NAME) A,
              (SELECT F.TABLESPACE_NAME, SUM(F.BYTES) BYTES_FREE
                  FROM DBA_FREE_SPACE F
                GROUP BY TABLESPACE_NAME) B
        WHERE A.TABLESPACE_NAME = B.TABLESPACE_NAME(+)
        UNION ALL
        SELECT H.TABLESPACE_NAME,
              ROUND(SUM(H.BYTES_FREE + H.BYTES_USED) / 1048576) MEGS_ALLOC,
              ROUND(SUM((H.BYTES_FREE + H.BYTES_USED) -
                        NVL(P.BYTES_USED, 0)) / 1048576) MEGS_FREE,
              ROUND(SUM(NVL(P.BYTES_USED, 0)) / 1048576) MEGS_USED,
              ROUND((SUM((H.BYTES_FREE + H.BYTES_USED) -
                          NVL(P.BYTES_USED, 0)) /
                    SUM(H.BYTES_USED + H.BYTES_FREE)) * 100) PCT_FREE,
              100 - ROUND((SUM((H.BYTES_FREE + H.BYTES_USED) -
                                NVL(P.BYTES_USED, 0)) /
                          SUM(H.BYTES_USED + H.BYTES_FREE)) * 100) PCT_USED,
              ROUND(SUM(F.MAXBYTES) / 1048576) MAX
          FROM SYS.V_$TEMP_SPACE_HEADER H,
              SYS.V_$TEMP_EXTENT_POOL  P,
              DBA_TEMP_FILES          F
        WHERE P.FILE_ID(+) = H.FILE_ID
          AND P.TABLESPACE_NAME(+) = H.TABLESPACE_NAME
          AND F.FILE_ID = H.FILE_ID
          AND F.TABLESPACE_NAME = H.TABLESPACE_NAME
        GROUP BY H.TABLESPACE_NAME) SIZE_INFO,
      SYS.DBA_TABLESPACES TS

 WHERE TS.TABLESPACE_NAME = SIZE_INFO.TABLESPACE_NAME

以上包括临时表空间的监控,如果只需监控永久表空间,则简单改写为:


set LINESIZE 100


col TABLESPACE_NAME format A20


select *
from
(
SELECT A.TABLESPACE_NAME,
      ROUND(A.BYTES_ALLOC / 1024 / 1024) MEGS_ALLOC,             
      ROUND((A.BYTES_ALLOC - NVL(B.BYTES_FREE, 0)) / 1024 / 1024) MEGS_USED,
      ROUND((A.BYTES_ALLOC - NVL(B.BYTES_FREE, 0))*100/A.MAXBYTES) used_of_max,
      ROUND((A.MAXBYTES - A.BYTES_ALLOC + NVL(B.BYTES_FREE, 0))/1048576) free_of_max,
      ROUND(A.MAXBYTES / 1048576) MAX
FROM (SELECT F.TABLESPACE_NAME,
            SUM(F.BYTES) BYTES_ALLOC,
            SUM(DECODE(F.AUTOEXTENSIBLE, 'YES', F.MAXBYTES, 'NO', F.BYTES)) MAXBYTES
        FROM DBA_DATA_FILES F
      GROUP BY TABLESPACE_NAME) A,
              (SELECT F.TABLESPACE_NAME, SUM(F.BYTES) BYTES_FREE
                  FROM DBA_FREE_SPACE F
                GROUP BY TABLESPACE_NAME) B
        WHERE A.TABLESPACE_NAME = B.TABLESPACE_NAME(+)
        )size_info
        where size_info.used_of_max > 80;

监控内容只需查看used_of_max、free_of_max,其分别是已使用空间占最大表空间百分比、剩余可扩展表空间大小。(以上脚本是监控表空间使用率超过80%的表空间。)

相关阅读:

Oracle Undo 镜像数据探究

Oracle 回滚(ROLLBACK)和撤销(Undo)

Undo 表空间损坏导致无法open

Undo表空间失败的处理方法

Oracle Undo表空间重建与恢复


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • linux下安装oracle后使用命令行启动的方法 linux启动oracle
  • Oracle9i 9.0.1的JDBC Drivers 可以给Oracle 8.0.5使用马?
  • Suse linux使用oracle问题
  • 请问:在使用oracle数据库作开发时,是使用pro*c作开发好些,还是使用库函数如oci等好一些啊?或者它们有什么区别或者优缺点啊?
  • jbuilder中使用oracle的问题
  • 求redhat linux 9.0下可以使用的oracle 10g或9i,还有redhat linux 9.0下可以使用的eclipse下载地址
  • Oracle事务!使用游标提交过程
  • 在Jbuilder7下,使用DbPilot.exe连接oracle,报错!请教高手!
  • AIX 64位系统上如何使用32位OCI oracle driver
  • Oracle中SQL语句连接字符串的符号使用介绍
  • 使用X manager连接oracle数据库的步骤
  • C++使用OCCI连Oracle10g的错误
  • 使用工具 plsqldev将Excel导入Oracle数据库
  • Linux下Oracle的sqlplus使用光标上下左右方法
  • Oracle 数据 使用游标
  • oracle使用sql脚本生成csv文件案例学习
  • ORACLE 修改表结构 之ALTER CONSTAINTS的使用
  • Linux中Oracle使用相关知识集锦
  • Oracle密码文件的使用和维护第1/3页
  • Oracle 触发器的使用小结
  • Oracle 12c发布简单介绍及官方下载地址
  • 在linux下安装oracle,如何设置让oracle自动启动!也就是让oracle那个服务自动启动,不是手动的
  • oracle 11g最新版官方下载地址
  • 请问su oracle 和su - oracle有什么不同?
  • Oracle 数据库(oracle Database)Select 多表关联查询方式
  • 虚拟机装Oracle R12与Oracle10g
  • Oracle数据库(Oracle Database)体系结构及基本组成介绍
  • Oracle 数据库开发工具 Oracle SQL Developer
  • 如何设置让Oracle SQL Developer显示的时间包含时分秒
  • Oracle EBS R12 支持 Oracle Database 11g
  • Oracle 10g和Oracle 11g网格技术介绍


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,