zoukankan      html  css  js  c++  java
  • oralce sql 缓存查询及删除

    --缓存查询语句 V$SQLAREA 视图记录sql 执行情况(加载次数/用时/Id....)

    常用字段

    ADDRESS:SQL语句在SGA中的地址。 

    这两列被用于鉴别SQL语句,有时,两条不同的语句可能hash值相同。这时候,必须连同ADDRESS一同使用来确认SQL语句。 
    PARSING_USER_ID:为语句解析第一条CURSOR的用户 
    VERSION_COUNT:语句cursor的数量 
    KEPT_VERSIONS: 
    SHARABLE_MEMORY:cursor使用的共享内存总数 
    PERSISTENT_MEMORY:cursor使用的常驻内存总数 
    RUNTIME_MEMORY:cursor使用的运行时内存总数。 
    SQL_TEXT:SQL语句的文本(最大只能保存该语句的前1000个字符)。 
    MODULE,ACTION:使用了DBMS_APPLICATION_INFO时session解析第一条cursor时的信息 
    SQL_FULLTEXT :完整的sql语句
    SELECT ADDRESS,HASH_VALUE,SQL_FULLTEXT FROM V$SQLAREA

    查看某条sql 缓存记录 eg:

    SELECT ADDRESS,HASH_VALUE,SQL_FULLTEXT,ELAPSED_TIME FROM V$SQLAREA  WHERE sql_fulltext like '%from template_data_temp t%';

     --清除某条记录 

    参数1:ADDRESS
    参数2:HASH_VALUE
    参数3:c

    第三个参数'C'表示PURGE的对象是CURSOR(游标),不过实际上这里可以使用除了P(PROCEDURE/FUNCTION/PACKAGE)、T(TYPE)、R(TRIGGER)和Q(SEQUENCE)的任何值。
        使用这种方法,就可以精确的将一个SQL从共享池中删除,从而使得Oracle为这个SQL重新生成执行计划。这种方法只针对单个SQL语句,使得解决问题的同时不会造成任何的误伤。

    exec sys.dbms_shared_pool.purge('0000000061B5EAD0,772411230','c');

    --清空所有计划缓存   生产环境服务器负载较大时 慎用 同时删除清空所有缓存可能造成服务器压力过大

    ALTER SYSTEM FLUSH SHARED_POOL
  • 相关阅读:
    linux 网络编程
    linux之有名管道
    linux之无名管道
    linux进程
    Linux中的内核链表
    dell戴尔服务器配置RAID5(3块硬盘做RAID5+1块热备)(转发)
    盘点SQL on Hadoop中用到的主要技术
    垃圾回收算法
    JDK 中的监控与故障处理工具-05 (jstack)
    JDK 中的监控与故障处理工具-04 (jmap)
  • 原文地址:https://www.cnblogs.com/wangfl/p/14710183.html
Copyright © 2011-2022 走看看