Oracle sql共享池$sqlarea分析SQL资源使用情况
遇到需要排查一个系统使用sql的情况,可以通过查询Oracle的$sql
、$ssssion
、$sqlarea
进行统计排查
排查时可以先看一下$sql
和$session
的基本信息
select *
from v$sql a, v$session b
where b.SQL_ADDRESS = a.ADDRESS
and b.SQL_HASH_VALUE = a.HASH_VALUE
and b.SQL_CHILD_NUMBER = a.CHILD_NUMBER
$sqlarea表列意思:
引用:https://blog.csdn.net/study4034/article/details/51331120
SQL_TEXT //当前正在执行的游标的sql文本的前1000个字符
SQL_FULLTEXT //CLOB类型 整个sql文本,不用借助于V$SQL_TEXT视图来查看整个文本
SQL_ID //库缓存中的SQL父游标的标志
SHARABLE_MEM //子游标使用的共享内存的大小,bytes
PERSISTENT_MEM //子游标生存时间中使用的固定内存的总量,bytes
RUNTIME_MEM //在子游标执行过程中需要的固定内存大小,bytes
SORTS //子游标发生的排序数量
LOADED_VERSIONS // 显示上下文堆是否载入,1是,0否
USERS_OPENING // 执行这个sql的用户数
FETCHES // sql取数据的次数
EXECUTIONS //自从被载入共享池后,sql执行的次数
FIRST_LOAD_TIME // 父游标产生的时间戳
PARSE_CALLS //解析调用的次数
DISK_CALLS //读磁盘的次数
DIRECT_WRITES //直接写的次数
BUFFER_GETS //直接从buffer中得到数据的次数
APPLICATION_WAIT_TIME // 应用等待时间,毫秒
CONCURRENCY_WAIT_TIME //并发等待时间,毫秒
USER_IO_WAIT_TIME //用户IO等待时间
ROWS_PROCESSED SQL //解析sql返回的总行数
OPTIMIZER_MODE //优化器模式
OPTIMIZER_COST //优化器对于sql给出的成本
PARSING_USER_ID //第一个创建这个子游标的用户id
HASH_VALUES //解析产生的哈希值
CHILD_NUMBER //该子游标的数量
SERVICE //服务名
CPU_TIME //该子游标解析,执行和获取数据使用的CPU时间,毫秒
ELAPSED_TIME //sql的执行时间,毫秒
INVALIDATIONS //该子游标的无效次数
MODULE //第一次解析该语句时,通过DBMS_APPLICAITON_INFO.SET_ACTION设置的模块名
ACTION //第一次解析该语句时,通过DBMS_APPLICAITON_INFO.SET_ACTION设置的动作名
IS_OBSOLETE //标记该子游标过期与否,当子游标过大时会发生这种情况
is_bind_sensitive //不仅指出是否使用绑定变量窥测来生成执行计划,而且指出这个执行计划是否依赖于窥测到的值。如果是,这个字段会被设置为Y,否则会被设置为N。
is_bind_aware //表明游标是否使用了扩展的游标共享。如果是,这个字段会被设置为Y,如果不是,这个字段会被设置为N。如果是设置为N,这个游标将被废弃,不再可用。
is_shareable //表明游标能否被共享。如果可以,这个字段会被设置为Y,否则,会被设置为N。如果被设置为N,这个游标将被废弃,不再可用。
去Oracle的sql共享池$sqlarea
查询sql的执行次数,分析SQL执行性能
EXECUTIONS :所有子游标执行SQL的次数
DISK_READS:所有子游标执行SQL需要读的硬盘次数
BUFFER_GETS :所有子游标执行SQL需要读的内存次数
ELAPSED_TIME:所有子游标执行SQL需要的时间
分析SQL执行性能
SELECT SQL_TEXT,
SQL_FULLTEXT,
ELAPSED_TIME,
DISK_READS,
BUFFER_GETS,
EXECUTIONS,
Round(ELAPSED_TIME / EXECUTIONS ,2),
ROUND(DISK_READS / EXECUTIONS, 2),
ROUND(BUFFER_GETS / EXECUTIONS , 2),
ROUND((BUFFER_GETS - DISK_READS) / BUFFER_GETS, 2)
FROM V$SQLAREA
WHERE EXECUTIONS > 0
AND BUFFER_GETS > 0
AND (BUFFER_GETS - DISK_READS) / BUFFER_GETS < 0.8
ORDER BY Round(ELAPSED_TIME / EXECUTIONS ,2) desc;
然后解释一下这些意义:
Round(ELAPSED_TIME / EXECUTIONS ,2):求每个游标执行SQL需要的时间
ROUND(DISK_READS / EXECUTIONS, 2):求每个游标执行SQL需要读磁盘的次数
ROUND(BUFFER_GETS / EXECUTIONS , 2):求每个游标执行SQL需要读内存的次数
ROUND((BUFFER_GETS - DISK_READS) / BUFFER_GETS, 2) :SQL命中率
所有归纳一下,就是去$sqlarea共享池查询统计,然后分析sql,上述数据越低就说明SQL执行速度越高,性能越好
Oracle sql共享池$sqlarea分析SQL资源使用情况的更多相关文章
- Oracle 从共享池删除指定SQL的执行计划
ORACLE从共享池删除指定SQL的执行计划 2016-12-29 11:14 by 潇湘隐者, 2836 阅读, 0 评论, 收藏, 编辑 Oracle 11g在DBMS_SHARED_POOL包中 ...
- oracle v$sqlarea 分析SQL语句使用资源情况 确认是否绑定变量
-如何确定系统中是否存在绑定变量的情况:首先创建一个表,用于存放整理过得数据:create table t1 as select sql_text from v$sqlarea;----V$SQLAR ...
- ORACLE从共享池删除指定SQL的执行计划
Oracle 11g在DBMS_SHARED_POOL包中引入了一个名为PURGE的新存储过程,用于从对象库缓存中刷新特定对象,例如游标,包,序列,触发器等.也就是说可以删除.清理特定SQL的执行计划 ...
- 使用explain来分析SQL语句实现优化SQL语句
用法:explain sql 作用:用于分析sql语句 mysql> explain select * from quser_1 where loginemail = "quctest ...
- 使用Oracle执行计划分析SQL性能
执行计划:一条查询语句在ORACLE中的执行过程或访问路径的描述.即就是对一个查询任务,做出一份怎样去完成任务的详细方案. 如果要分析某条SQL的性能问题,通常我们要先看SQL的执行计划,看看SQL的 ...
- oracle 入门笔记--v$sql和v$sqlarea视图(转载)
转载于作者:dbtan 原文链接:http://www.dbtan.com/2009/12/vsql-and-vsqlarea-view.html v$sql和v$sqlarea视图: 上文提到,v$ ...
- oracle用EXPLAIN PLAN 分析SQL语句
EXPLAIN PLAN 是一个很好的分析SQL语句的工具,它甚至可以在不执行SQL的情况下分析语句. 通过分析,我们就可以知道ORACLE是怎么样连接表,使用什么方式扫描表(索引扫描或全表扫描)以及 ...
- 【转】查询oracle比较慢的session和sql
-查询最慢的sql select * from ( select parsing_user_id,executions,sorts command_type,disk_reads,sql_text f ...
- [转]SQL语句优化技术分析
一.操作符优化 1.IN 操作符 用IN写出来的SQL的优点是比较容易写及清晰易懂,这比较适合现代软件开发的风格.但是用IN的SQL性能总是比较低的,从Oracle执行的步骤来分析用IN的SQL与不用 ...
随机推荐
- 3D 数据
1.3D 图 首先在进行 3D Plot 时除了导入 matplotlib ,还要额外添加一个模块,即 Axes 3D 3D 坐标轴显示: import numpy as np import matp ...
- logstash 默认时间少8小时的修改办法
logstash 的配置文件添加 filter { ruby { code => "event.set('timestamp', event.get('@timestamp').tim ...
- composer require aliyuncs/oss-sdk-php
composer require aliyuncs/oss-sdk-php composer install require_once __DIR__ . '/vendor/autoload.php' ...
- java31
1.包装类 基本数据类型包装成对象,使基本数据类型的功能更加强大, 基本数据类型 包装类 byte Byte short Short int Integer long Long float Float ...
- django.db.utils.OperationalError: (1045, "Access denied for user 'root'@'localhost' (using password: ...
出现此问题的解决方法: 在mysql中创建一个和settings.py里设置的mysql 'name'名字一样的数据库就可以了.
- ili 一例业务系统框架
ili即ilinei的简称,像名字一样,是ILINEI团队的内部项目简化而来.2017年金鸡报晓,我们为同行送来了一个简单.快速.轻量级的PHP开源系统,它的任务当然也是唯一的任务,就是提高WEB开发 ...
- P4149 [IOI2011]Race
对于这道题,明显是点分治,权值等于k,可以用桶统计树上路径(但注意要清空); 对于每颗子树,先与之前的子树拼k,再更新桶,维护t["len"]最小边数; #include < ...
- hbase单机版安装+phoneix SQL on hbase 单节点安装
hbase 单机安装部署及phoneix 单机安装 Hbase 下载 (需先配置jdk) https://www.apache.org/dyn/closer.lua/hbase/2.0.1/hbase ...
- linux 解压 压缩 常见命令
压缩命令: .tar tar -cvf 文件名称.tar 文件或者文件夹 .tar.gz tar -zcvf 文件名称.tar.gz 文件或者文件夹 .tar.xz tar -Jcf 文件名称.tar ...
- Exp3 免杀原理与实践_05齐帅
Exp3 免杀原理与实践 20154305_齐帅 想要弄懂免杀,一定得先把基础问题弄明白啊~~ 一.基础问题回答 (1)杀软是如何检测出恶意代码的? - -检测特征码: 依靠分析总结出计算机病毒中常出 ...