zoukankan      html  css  js  c++  java
  • 找出低效率的SQL

    SELECT EXECUTIONS, DISK_READS, BUFFER_GETS,
    ROUND((BUFFER_GETS-DISK_READS)/BUFFER_GETS, 2) Hit_radio,
    ROUND(DISK_READS/EXECUTIONS,2) Reads_per_mn,
    SQL_TEXT
    FROM V$SQLAREA
    WHERE EXECUTIONS> 0
    AND BUFFER_GETS> 0
    AND (BUFFER_GETS-DISK_READS)/BUFFER_GETS < 0.8
    ORDER BY 4 DESC;

     1:查看哪个session锁定临时表,表格对象.
            这个语句在我其它的日志中已经有.
            相关对象:V$SESSION,V$OPEN_CURSOR,V$SQL;
            SQL:select * from v$session where sid in (select sid from v$open_cursor where sql_id in ( select sql_id from    
                    v$sql  where upper(sql_text) like '%?%') );
                    其中?可以用需要的字串去替代.
            其它方面:暂时不查表格之外对象,其次如果sql语句非常长的应该去搜索v$sql.sql_fulltext对象(CLOB).

            2.查找过去一段时间新添加或者新修改的对象
            相关对象:DBA_OBJECTS
            SQL: SELECT  * FROM DBA_OBJECTS WHERE  (TO_CHAR(LAST_DDL_TIME,'YYYY-
                       MM-DD')>='2008-11-16'  OR TO_CHAR(CREATED,'YYYY-MM-DD')>='2008-11-16')
            其它方面:DBA_OBJECTS有丰富的字段,可以通过添加更多的过滤条件来精确定位需要的内容.

            3.查找目前占用了大量CPU的SQL
            说明:网络上有一些资料,但是并不是很好用,思路都是通过OS来找到消耗最多资源的线程或者进程,因为平台的不同,可能还需要采取不同的方式(WINDOWS是线程,LINUX,UNIX等是进程),然后再通过v$session查找对应的SID,再通过V$OPEN_CURSOR或者v$sqlarea来查找.好像也没有太多的捷径阿.
            此部分暂时略.

            4:最近被频繁执行的SQL
            说明:由于并没有记录sql历史的表格,oracle并不干这样的事儿,所以,这里不讨论由客户自行保存的SQL历史的问题.只说v$sqlarea(位于共享池中的sql语句),然而如果没有监视,也没有太大的意义,所以这也忽略 .

    http://blog.csdn.net/shuiqingtinglin/article/details/5678226

    ORACLE查看表空间使用率

    select *
      from (SELECT a.tablespace_name tableSpaceName,
                   NVL(a.BYTES / 1024 / 1024,0) totalSize,
                   NVL(b.largest / 1024 / 1024,0) freeSize,
                   NVL((a.BYTES - b.BYTES) / 1024 / 1024,0) usedSize,
                   round(NVL((a.BYTES - b.BYTES) / a.BYTES * 100, 0), 2) usedPercent
              from (SELECT tablespace_name, sum(BYTES) bytes
                      FROM dba_data_files
                     GROUP BY tablespace_name) a,
                   (SELECT tablespace_name, sum(BYTES) bytes, max(BYTES) largest
                      FROM dba_free_space
                     GROUP BY tablespace_name) b
             WHERE a.tablespace_name = b.tablespace_name
             ORDER BY a.tablespace_name)

    UNION

    SELECT d.tablespace_name tableSpaceName,
           NVL(a.BYTES / 1024 / 1024, 0) totalSize,
           NVL(a.BYTES / 1024 / 1024, 0) - NVL(t.BYTES, 0) / 1024 / 1024 freeSize,
           NVL(t.BYTES, 0) / 1024 / 1024 usedSize,
           round(NVL(t.BYTES / a.BYTES * 100, 0), 2) usedPercent
      FROM SYS.dba_tablespaces d,
           (SELECT tablespace_name, SUM(BYTES) BYTES
              FROM dba_temp_files
             GROUP BY tablespace_name) a,
           (SELECT tablespace_name, SUM(bytes_cached) BYTES
              FROM v$temp_extent_pool
             GROUP BY tablespace_name) t
     WHERE d.tablespace_name = a.tablespace_name(+)
       AND d.tablespace_name = t.tablespace_name(+)
       AND d.extent_management LIKE 'LOCAL'
       AND d.CONTENTS LIKE 'TEMPORARY'

  • 相关阅读:
    通过Bag一对多映射示例(使用xml文件)
    集合映射中的映射包(使用xml文件)
    Hibernate一对多映射列表实例(使用xml文件)
    Hibernate集合映射
    集合映射中的映射列表(使用xml文件)
    Hibernate每个层次类一张表(使用注释)
    Hibernate每个子类一张表(使用注释)实例
    Hibernate每个具体类一张表映射(使用注释)
    Hibernate每个子类一张表(使用XML文件)实例
    Hibernate每个具体类一张表映射(使用XML)
  • 原文地址:https://www.cnblogs.com/rattersnake/p/2554938.html
Copyright © 2011-2022 走看看