客户反馈,Oracle重启库操作后,监控告警出现pin比例低于25%

根据Oracle体系结构的理解,重启库后,硬解析及buffer命中率肯定有一段时间低。

生成不同时段的AWR报告:不要生成rac awr,其中没有实例级别的实例缓存命中指标,使用@?/rdbms/admin/awrrpt.sql

Instance Efficiency Percentages (Target 100%)

Execute to Parse %: 29.76

发现客户数据库,存在硬解析很高的情况:

1.最完美的解决方式,修改应用程序,使用绑定变量;

2.修改数据库参数:cursor_sharing= force,bug多,除非特殊情况;

3.本次系统负载不高,仅仅只是监控告警,如果能得到解析的SQL文本就更好了,如下基于此需求,列出SQL文本。

3.1 SQL 公司大牛提供

--解析高的SQL
select substr(a.SQL_TEXT, 1, 50), count(*)
from v$sql a
where last_load_time like '2015-11-12%' and first_load_time like '2015-11-12%'
group by substr(a.SQL_TEXT, 1, 50)
having count(*)>10
order by count(*);

3.2 SQL审核提供

根据v$sql中exact_matching_signature和force_matching_signature,来判断是否采用了绑定变量,

select a.username,

t.sql_text, 
to_char(t.force_matching_signature) as force_matching_signature, 
count(*) as counts 
from v$sql t, all_users a 
where t.force_matching_signature > 0 and

t.parsing_user_id = a.user_id and

t.force_matching_signature <> t.exact_matching_signature

group by t.force_matching_signature, t.sql_text, a.username 
having count(*) > 20 
order by count(*) desc;

3.3 SQL 根据书本,收获不止SQL优化

未使用绑定变量的SQL比较类似,通过@替换相似部分,然后提取相同的分组,从而找出未使用绑定变量的SQL,过程如下,

drop table t_bind_sql purge;
create table t_bind_sql as select sql_text,module from v$sqlarea;
alter table t_bind_sql add sql_text_wo_constants varchar2(1000);
create or replace function 
remove_constants( p_query in varchar2 ) return varchar2
as
    l_query long;
    l_char  varchar2(10);
    l_in_quotes boolean default FALSE;
begin
    for i in 1 .. length( p_query )
    loop
        l_char := substr(p_query,i,1);
        if ( l_char = '''' and l_in_quotes )
        then
            l_in_quotes := FALSE;
        elsif ( l_char = '''' and NOT l_in_quotes )
        then
            l_in_quotes := TRUE;
            l_query := l_query || '''#';
        end if;
        if ( NOT l_in_quotes ) then
            l_query := l_query || l_char;
        end if;
    end loop;
    l_query := translate( l_query, '0123456789', '@@@@@@@@@@' );
    for i in 0 .. 8 loop
        l_query := replace( l_query, lpad('@',10-i,'@'), '@' );
        l_query := replace( l_query, lpad(' ',10-i,' '), ' ' );
    end loop;
    return upper(l_query);
end;
/
update t_bind_sql set sql_text_wo_constants = remove_constants(sql_text);
commit;

接下来用如下方式就可以快速定位了:
set linesize 266
col  sql_text_wo_constants format a30
col  module format  a30
col  CNT format  999999
select sql_text_wo_constants, module,count(*) CNT

from t_bind_sql group by sql_text_wo_constants,module

having count(*) > 100 order by 3 desc;

Execute to Parse %: 29.76,数据库硬解析过高,监控告警提示数据库硬解析比例过低的更多相关文章

  1. Python解析excel文件并存入sqlite数据库

    最近由于工作上的需求 需要使用Python解析excel文件并存入sqlite 就此做个总结 功能:1.数据库设计 建立数据库2.Python解析excel文件3.Python读取文件名并解析4.将解 ...

  2. Mybatis源码解析(四) —— SqlSession是如何实现数据库操作的?

    Mybatis源码解析(四) -- SqlSession是如何实现数据库操作的?   如果拿一次数据库请求操作做比喻,那么前面3篇文章就是在做请求准备,真正执行操作的是本篇文章要讲述的内容.正如标题一 ...

  3. 利用Microsoft.VisualBasic中TextFieldParser解析器把CSV格式倒入数据库

    阅读目录 利用ODBC去操作 利用TextFieldParser操作 写了个Demo,利用Microsoft.VisualBasic这个程序集中的TextFieldParser解析器解析CSV格式的文 ...

  4. XML概念定义以及如何定义xml文件编写约束条件java解析xml DTD XML Schema JAXP java xml解析 dom4j 解析 xpath dom sax

    本文主要涉及:xml概念描述,xml的约束文件,dtd,xsd文件的定义使用,如何在xml中引用xsd文件,如何使用java解析xml,解析xml方式dom sax,dom4j解析xml文件 XML来 ...

  5. 数据库SQL优化大总结之 百万级数据库优化方案(转载)

    网上关于SQL优化的教程很多,但是比较杂乱.近日有空整理了一下,写出来跟大家分享一下,其中有错误和不足的地方,还请大家纠正补充. 这篇文章我花费了大量的时间查找资料.修改.排版,希望大家阅读之后,感觉 ...

  6. POI使用:用poi接口不区分xls/xlsx格式解析Excel文档(41种日期格式解析方法,5种公式结果类型解析方法,3种常用数值类型精度控制办法)

    一.使用poi解析excel文档 注:全部采用poi接口进行解析,不需要区分xls.xlsx格式,不需要判断文档类型. poi中的日期格式判断仅支持欧美日期习惯,对国内的日期格式并不支持判断,怎么办? ...

  7. web开发中的两把锁之数据库锁:(高并发--乐观锁、悲观锁)

    这篇文章讲了 1.同步异步概念(消去很多疑惑),同步就是一件事一件事的做:sychronized就是保证线程一个一个的执行. 2.我们需要明白,锁机制有两个层面,一种是代码层次上的,如Java中的同步 ...

  8. MySQL数据库的优化(上)单机MySQL数据库的优化

    MySQL数据库的优化(上)单机MySQL数据库的优化 2011-03-08 08:49 抚琴煮酒 51CTO 字号:T | T 公司网站访问量越来越大,导致MySQL的压力越来越大,让我们自然想到的 ...

  9. 通过 Informix 系统表监控和优化数据库

    Informix 数据库系统字典表简介 Informix 数据库服务器运行时的状态信息是数据库管理员 DBA 进行系统监控和优化的必需信息来源.Informix 的状态信息在内部以 2 种方式存在,如 ...

随机推荐

  1. vue-cli脚手架build目录中的webpack.prod.conf.js配置文件

    // 下面是引入nodejs的路径模块 var path = require('path') // 下面是utils工具配置文件,主要用来处理css类文件的loader var utils = req ...

  2. samba及其基本应用

    Samba 137/udp,138/udp,139/tcp,445/tcp windowns主机共享: linux主机进行访问查看资源:smbclient -L Server_IP -U 用户名 li ...

  3. 第一次提交 nacos 代码

    新建 issue认领 issuefork修改 nacos 项目 .git/config 中的用户信息pushcreate pull request 到 develop 分支

  4. angular实操

    一.创建angular工程(一定要在管理员权限下运行,Windows可忽略) 1.安装angular CLi 在终端窗口打开想要创建的工程所在文件夹,如:Cd Desktop\Angular-proj ...

  5. STL 小白学习(7) list

    #include <iostream> using namespace std; #include <list> void printList(list<int>& ...

  6. PHP生成小程序二维码合成图片生成文字

    这部分代码是写在项目上的代码,THINKPHP3.1如果迁移到其他的地方应该要稍稍改动一下以适合自己的项目 function get_bbox($text,$fsize,$ffile){ return ...

  7. PDF 补丁丁 0.6.0.3427 版发布(修复提取图片问题)

    新的版本进一步改善了导出图片的问题.

  8. js中的setTimeout和setinterval 用法说明

    setTimeout("countSecond()", 1000)://countSecond()是函数(方法) setTimeout 只执行一次函数,需要传递两个参数1是函数名, ...

  9. python基础第一天 3.27

    # #作业1# 猜年龄,可以让用户猜三次!age = 25user_guess = int(input("input your guess"))   age = 25count = ...

  10. C#Mvc批量删除

    前台页面(JQuery) @*全选&批删*@<script type="text/javascript"> $(document).ready(function ...