当前位置:  数据库>oracle

Oracle 常用性能监控SQL语句

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

    本文导语: Oracle 常用性能监控SQL语句: 1.  --查看表锁     SELECT * FROM SYS.V_$SQLAREA WHERE DISK_READS > 100;    2.  --监控事例的等待     SELECT EVENT,           SUM(DECODE(WAIT_TIME, 0, 0, 1)) "Prev",           SUM(DECODE(WAIT_TIME, 0, 1, 0))...

Oracle 常用性能监控SQL语句:

1.  --查看表锁    

SELECT * FROM SYS.V_$SQLAREA WHERE DISK_READS > 100;   

2.  --监控事例的等待    

SELECT EVENT,   

       SUM(DECODE(WAIT_TIME, 0, 0, 1)) "Prev",   

       SUM(DECODE(WAIT_TIME, 0, 1, 0)) "Curr",   

       COUNT(*) "Tot"  

  FROM V$SESSION_WAIT   

 GROUP BY EVENT   

 ORDER BY 4;   

3.  --回滚段的争用情况   

SELECT NAME, WAITS, GETS, WAITS / GETS "Ratio"  

  FROM V$ROLLSTAT A, V$ROLLNAME B   

 WHERE A.USN = B.USN;   

4.  --查看前台正在发出的SQL语句   

SELECT USER_NAME, SQL_TEXT      

  FROM V$OPEN_CURSOR      

 WHERE SID IN (SELECT SID   

                 FROM (SELECT SID, SERIAL#, USERNAME, PROGRAM      

                         FROM V$SESSION      

                        WHERE STATUS = 'ACTIVE'));   

5.  --数据表占用空间大小情况   

SELECT SEGMENT_NAME, TABLESPACE_NAME, BYTES, BLOCKS   

  FROM USER_SEGMENTS   

 WHERE SEGMENT_TYPE = 'TABLE'  

 ORDER BY BYTES DESC, BLOCKS DESC;   

6.  --查看表空间碎片大小   

SELECT TABLESPACE_NAME,   

       ROUND(SQRT(MAX(BLOCKS) / SUM(BLOCKS)) *   

             (100 / SQRT(SQRT(COUNT(BLOCKS)))),   

             2) FSFI   

  FROM DBA_FREE_SPACE   

 GROUP BY TABLESPACE_NAME   

 ORDER BY 1;   

7.  --查看表空间占用磁盘情况   

SELECT B.FILE_ID 文件ID号,   

       B.TABLESPACE_NAME 表空间名,   

       B.BYTES 字节数,   

       (B.BYTES - SUM(NVL(A.BYTES, 0))) 已使用,   

       SUM(NVL(A.BYTES, 0)) 剩余空间,   

       SUM(NVL(A.BYTES, 0)) / (B.BYTES) * 100 剩余百分比   

  FROM DBA_FREE_SPACE A, DBA_DATA_FILES B   

 WHERE A.FILE_ID = B.FILE_ID   

 GROUP BY B.TABLESPACE_NAME, B.FILE_ID, B.BYTES   

 ORDER BY B.FILE_ID;   

8.  --查看session使用回滚段   

SELECT R.NAME 回滚段名,   

       S.SID,   

       S.SERIAL#,   

       S.USERNAME 用户名,   

       T.STATUS,   

       T.CR_GET,   

       T.PHY_IO,   

       T.USED_UBLK,   

       T.NOUNDO,   

       SUBSTR(S.PROGRAM, 1, 78) 操作程序   

  FROM SYS.V_$SESSION S, SYS.V_$TRANSACTION T, SYS.V_$ROLLNAME R   

 WHERE T.ADDR = S.TADDR   

   AND T.XIDUSN = R.USN   

 ORDER BY T.CR_GET, T.PHY_IO;   

9.  --查看SGA区剩余可用内存   

SELECT NAME,   

             SGASIZE / 1024 / 1024        "Allocated(M)",   

             BYTES / 1024            "**空间(K)",   

             ROUND(BYTES / SGASIZE * 100, 2)    "**空间百分比(%)"      

  FROM (SELECT SUM(BYTES) SGASIZE FROM SYS.V_$SGASTAT) S,   

       SYS.V_$SGASTAT F      

 WHERE F.NAME = 'free memory';   

10.  --监控表空间I/O比例   

SELECT DF.TABLESPACE_NAME NAME,   

       DF.FILE_NAME       "file",   

       F.PHYRDS           PYR,   

       F.PHYBLKRD         PBR,   

       F.PHYWRTS          PYW,   

       F.PHYBLKWRT        PBW   

  FROM V$FILESTAT F, DBA_DATA_FILES DF   

 WHERE F.FILE# = DF.FILE_ID   

 ORDER BY DF.TABLESPACE_NAME;   

11.  --监控SGA命中率   

SELECT A.VALUE + B.VALUE "logical_reads",   

       C.VALUE "phys_reads",   

       ROUND(100 * ((A.VALUE + B.VALUE) - C.VALUE) / (A.VALUE + B.VALUE)) "BUFFER HIT RATIO"  

  FROM V$SYSSTAT A, V$SYSSTAT B, V$SYSSTAT C   

 WHERE A.STATISTIC# = 38   

   AND B.STATISTIC# = 39   

   AND C.STATISTIC# = 40;   

12.  --监控 SGA 中字典缓冲区的命中率   

SELECT PARAMETER,   

       GETS,   

       GETMISSES,   

       GETMISSES / (GETS + GETMISSES) * 100 "miss ratio",   

       (1 - (SUM(GETMISSES) / (SUM(GETS) + SUM(GETMISSES)))) * 100 "Hit ratio"  

  FROM V$ROWCACHE   

 WHERE GETS + GETMISSES  0   

 GROUP BY PARAMETER, GETS, GETMISSES;   

13.  --监控 SGA **享缓存区的命中率,应该小于1%   

SELECT SUM(PINS) "Total Pins",   

       SUM(RELOADS) "Total Reloads",   

       SUM(RELOADS) / SUM(PINS) * 100 LIBCACHE   

  FROM V$LIBRARYCACHE;   

14.  --监控 SGA 中重做日志缓存区的命中率,应该小于1%   

SELECT NAME,   

       GETS,   

       MISSES,   

       IMMEDIATE_GETS,   

       IMMEDIATE_MISSES,   

       DECODE(GETS, 0, 0, MISSES / GETS * 100) RATIO1,   

       DECODE(IMMEDIATE_GETS + IMMEDIATE_MISSES,   

              0,   

              0,   

              IMMEDIATE_MISSES / (IMMEDIATE_GETS + IMMEDIATE_MISSES) * 100) RATIO2   

  FROM V$LATCH   

 WHERE NAME IN ('redo allocation', 'redo copy');   

15.  --监控内存和硬盘的排序比率,最好使它小于 .10   

SELECT NAME, VALUE   

  FROM V$SYSSTAT   

 WHERE NAME IN ('sorts (memory)', 'sorts (disk)');   

16.  --监控字典缓冲区   

SELECT SUM(GETS) "DICTIONARY GETS",   

       SUM(GETMISSES) "DICTIONARY CACHE GET MISSES"  

  FROM V$ROWCACHE;   

17.  --非系统用户建在SYSTEM表空间中的表   

SELECT OWNER, TABLE_NAME   

  FROM DBA_TABLES   

 WHERE TABLESPACE_NAME IN ('SYSTEM', 'USER_DATA')   

   AND OWNER NOT IN  

       ('SYSTEM', 'SYS', 'OUTLN', 'ORDSYS', 'MDSYS', 'SCOTT', 'HOSTEAC');   

18.  --性能最差的SQL   

SELECT *   

  FROM (SELECT PARSING_USER_ID EXECUTIONS,   

               SORTS,   

               COMMAND_TYPE,   

               DISK_READS,   

               SQL_TEXT   

          FROM V$SQLAREA   

         ORDER BY DISK_READS DESC)   

 WHERE ROWNUM  0   

   AND BUFFER_GETS > 0   

   AND (BUFFER_GETS - DISK_READS) / BUFFER_GETS  100;   

20.  --最频繁执行的sql   

SELECT * FROM SYS.V_$SQLAREA WHERE EXECUTIONS > 100;   

21.  --查询使用CPU多的用户session   

SELECT A.SID,   

       SPID,   

       STATUS,   

       SUBSTR(A.PROGRAM, 1, 40) PROG,   

       A.TERMINAL,   

       OSUSER,   

       VALUE / 60 / 100 VALUE   

  FROM V$SESSION A, V$PROCESS B, V$SESSTAT C   

 WHERE C.STATISTIC# = 12   

   AND C.SID = A.SID   

   AND A.PADDR = B.ADDR   

 ORDER BY VALUE DESC;   

22.  --当前每个会话使用的对象数   

SELECT A.SID, S.TERMINAL, S.PROGRAM, COUNT(A.SID)   

  FROM V$ACCESS A, V$SESSION S   

 WHERE A.OWNER  'SYS'  

   AND S.SID = A.SID   

 GROUP BY A.SID, S.TERMINAL, S.PROGRAM   

 ORDER BY COUNT(A.SID);  


    
 
 

您可能感兴趣的文章:

  • oracle导出sql语句的结果集和保存执行的sql语句(深入分析)
  • oracle用什么SQL语句判断表存不存在
  • 请问怎么用jsp语句删除oracle中的一条记录?
  • Oracle中SQL语句连接字符串的符号使用介绍
  • Oracle用什么语句查询字段?
  • 怎么在java中向一个sql语句传参数,就像oracle的proc一样啊?
  • 请问在 Linux 下如何用代码实现连接oracle数据库 并 执行 SQL 语句?
  • Oracle 9i轻松取得建表和索引的DDL语句
  • Oracle的SQL语句中如何处理‘&’符号
  • 关于Oracle中的sql语句的疑问,向大家请教。
  • Oracle Sql语句长度限制问题及解决
  • Oracle9i取得建表和索引的DDL语句
  • Oracle 中文字段进行排序的sql语句
  • oracle数据库添加或删除一列的sql语句
  • Oracle中查询本月星期5的所有日期列表的语句
  • Oracle中备份表的简单sql命令语句
  • oracle中误删除表后恢复语句(FLASHBACK)
  • Oracle判断指定列是否全部为数字的sql语句
  • jsp中在oracle中查询日期类型时sql语句该怎么写啊?
  • Oracle 常用的SQL语句
  • Zabbix的Oracle监控插件 orabbix
  • Oracle 8x监控sysdba角色用户登陆情况
  • Oracle 10g各个帐号的访问权限、登录路径、监控状态命令查询等等
  • Oracle 创建监控账户 提高工作效率
  • 对Oracle执行计划进行监控
  • oracle监控某表变动触发器例子(监控增,删,改)
  • 在Oracle中监控和跟踪索引使用情况
  • Oracle10g使用sql获得ADDM报告以及利用ADDM监控表的dml情况
  • Linux平台下如何监控Oracle数据库的性能
  • 利用Oracle threshold(度量阀值)监控表空间
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Oracle 数据库(oracle Database)性能调优技术详解
  • Oracle收购TimesTen 提高数据库软件性能
  • 关于提高Oracle数据库性能的四个错误认识
  • 用Oracle动态性能视图采集查询调优数
  • Oracle性能究极优化 上第1/2页
  • 用PHP连mysql比oracle数据库性能好
  • Oracle性能究极优化 下
  • 保持Oracle数据优良性能的技巧分享
  • 100分寻求最优化的连接oracle的java程序,请给我讲出理由,我是初学者,在做项目时不想让连接oracle影响我的程序性能
  • Oracle数据库应用程序性能优化探究
  • oracle 使用递归的性能提示测试对比
  • 善用Oracle表空间设计提升数据库性能
  • Oracle性能究极优化
  • Oracle SQL性能优化系列学习一
  • Oracle SQL性能优化系列学习三
  • Oracle SQL性能优化系列学习二
  • 性能陷阱:Oracle表连接中范围比较
  • 基于Oracle的高性能动态SQL程序开发
  • 浅谈Oracle性能优化可能出现的问题
  • 如何保持Oracle数据库的优良性能
  • Oracle数据库性能优化技术开发者网络Oracle
  • Oracle 12c发布简单介绍及官方下载地址
  • Oracle Sql语句长度限制问题及解决 iis7站长之家
  • 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


  • 站内导航:


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

    ©2012-2021,