Execute to Parse %: 29.76,数据库硬解析过高,监控告警提示数据库硬解析比例过低
客户反馈,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,数据库硬解析过高,监控告警提示数据库硬解析比例过低的更多相关文章
- Python解析excel文件并存入sqlite数据库
最近由于工作上的需求 需要使用Python解析excel文件并存入sqlite 就此做个总结 功能:1.数据库设计 建立数据库2.Python解析excel文件3.Python读取文件名并解析4.将解 ...
- Mybatis源码解析(四) —— SqlSession是如何实现数据库操作的?
Mybatis源码解析(四) -- SqlSession是如何实现数据库操作的? 如果拿一次数据库请求操作做比喻,那么前面3篇文章就是在做请求准备,真正执行操作的是本篇文章要讲述的内容.正如标题一 ...
- 利用Microsoft.VisualBasic中TextFieldParser解析器把CSV格式倒入数据库
阅读目录 利用ODBC去操作 利用TextFieldParser操作 写了个Demo,利用Microsoft.VisualBasic这个程序集中的TextFieldParser解析器解析CSV格式的文 ...
- 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来 ...
- 数据库SQL优化大总结之 百万级数据库优化方案(转载)
网上关于SQL优化的教程很多,但是比较杂乱.近日有空整理了一下,写出来跟大家分享一下,其中有错误和不足的地方,还请大家纠正补充. 这篇文章我花费了大量的时间查找资料.修改.排版,希望大家阅读之后,感觉 ...
- POI使用:用poi接口不区分xls/xlsx格式解析Excel文档(41种日期格式解析方法,5种公式结果类型解析方法,3种常用数值类型精度控制办法)
一.使用poi解析excel文档 注:全部采用poi接口进行解析,不需要区分xls.xlsx格式,不需要判断文档类型. poi中的日期格式判断仅支持欧美日期习惯,对国内的日期格式并不支持判断,怎么办? ...
- web开发中的两把锁之数据库锁:(高并发--乐观锁、悲观锁)
这篇文章讲了 1.同步异步概念(消去很多疑惑),同步就是一件事一件事的做:sychronized就是保证线程一个一个的执行. 2.我们需要明白,锁机制有两个层面,一种是代码层次上的,如Java中的同步 ...
- MySQL数据库的优化(上)单机MySQL数据库的优化
MySQL数据库的优化(上)单机MySQL数据库的优化 2011-03-08 08:49 抚琴煮酒 51CTO 字号:T | T 公司网站访问量越来越大,导致MySQL的压力越来越大,让我们自然想到的 ...
- 通过 Informix 系统表监控和优化数据库
Informix 数据库系统字典表简介 Informix 数据库服务器运行时的状态信息是数据库管理员 DBA 进行系统监控和优化的必需信息来源.Informix 的状态信息在内部以 2 种方式存在,如 ...
随机推荐
- background-size cover和contain的用法详解
我们还可以通过background-size来控制背景图片的尺寸. background-size有几个属性值,常用的是cover和contain.那么background-size:cover和co ...
- echarts x和y去掉
解决方法 "axisLine": { "show": false },
- element-ui的那些坑与总结
tags: 默认情况下,下划线是文本宽度 如果要加宽,则可以设置文本(label)的padding, 常规情况下,无法改label宽度,因为他是动态计算的 不过,可以通过自定义,把label拿出来,自 ...
- Python爬虫入门之Cookie的使用
本节我们一起来看一下Cookie的使用. 为什么要使用Cookie呢? Cookie,指某些网站为了辨别用户身份.进行session跟踪而储存在用户本地终端上的数据(通常经过加密) 比如说有些网站需要 ...
- flask-bootstrap学习笔记
flask-bootstrap 是flask一个方便扩展使用bootstrap前台的扩展. 使用方法: 安装: pip instal flask-bootstrap4 加载: from flask_b ...
- Collections集合工具类
一.Collection与Collections Collection 是所有单列集合的根接口 Collection 是操作集合的工具类 二.Collections中常见的方法:(大都是static方 ...
- mpeg2文件分析(纯c解析代码)
参考链接: 1. MPEG-2码流结构分析 https://www.cnblogs.com/CoderTian/p/9246225.html(本文语法采用这里的截图,代码原创) 1. mpeg2的码流 ...
- ReactiveCocoa的学习内容
ReactiveCocoa • 知识备用库:iOS10 collectionView以前是复用的,但是iOS10以后就要设置一个属性才可以复用. • C语言面向过程编程,OC面向对象编程 • 链式编程 ...
- 第十节 集合类Collection和Map
接口 Collection<E> (E)代表类型 集合类: 与数组的异同: 数组:数组虽然也可以存储对象,但长度是固定的:集合的长度是可变的,数组中可以存储基本数据类型,集合只能存储对象 ...
- 字典序UVa 1584 Circular Sequence
#include <iostream> #include <algorithm> #include <cmath> #include <cstdio> ...