使用awr来分析sesson leak问题(r3笔记第78天)
awr是生产环境中排查问题的利器,但是有一些问题是awr定位不了的。不如session leak的问题,因为v$session中的数据是实时改变的,一来awr生成快照的频率也有限,二来如果session leak的问题发生,但是系统资源消耗不高,awr也不一定能够马上定位出问题所在。 对于session leak的问题,当发生问题的时候,等我们连到系统中的时候,可能问题又消失了。大体来说系统中的session变化基本都是有一定的变化规律的,在业务高峰期中,session会保持在哪个幅度,系统空闲期间,有哪些session,job是在后台运行,占用的session数也是有一定的规律的。 从问题排查的角度来看,awr是很难定位session leak问题的,但是我们可以利用awr得到一些有用的信息。得到了这些问题之后,我们就可以轻松的得到在某个时间段内的session大体变化情况。毕竟v$session中的信息是实时的。 我们想查看过去某个时间点的session情况,如果没有第三方的工具,通过数据库来查询是基本没有办法的。 我们可以从下面的报告中得到一些思路。
Snap Id |
Snap Time |
Sessions |
Cursors/Session |
|
---|---|---|---|---|
Begin Snap: |
21032 |
27-Nov-14 12:40:41 |
3686 |
6.0 |
End Snap: |
21033 |
27-Nov-14 12:50:41 |
3648 |
6.1 |
Elapsed: |
10.01 (mins) |
|||
DB Time: |
368.84 (mins) |
在awr中还是包含一些session的信息的。如果要查看最近两天的session情况,一个一个生成awr基本就是体力活了而且效率很差。我们可以尝试通过awr的基表来直接得到一些想要的数据。
想要直接查看awr里面的数据还是需要下不小的功夫,毕竟从代码级别,oracle是不开放这些内容的。通过@?/rdbms/admin/awrextr.sql可以得到一些基本的信息。
导出的日志如下:
. . exported "SYS"."WRH$_SQL_PLAN" 432.1 KB 1089 rows
. . exported "SYS"."WRH$_LATCH":"WRH$_LATCH_3645037571_0" 198.6 KB 3871 rows
. . exported "SYS"."WRH$_SYSMETRIC_HISTORY" 180.1 KB 3600 rows
. . exported "SYS"."WRH$_SQLSTAT":"WRH$_SQLSTA_3645037571_0" 174.3 KB 547 rows
. . exported "SYS"."WRH$_SQLTEXT" 162.0 KB 202 rows
. . exported "SYS"."WRH$_SYSSTAT":"WRH$_SYSSTA_3645037571_0" 122.7 KB 4466 rows
. . exported "SYS"."WRH$_PARAMETER":"WRH$_PARAME_3645037571_0" 105.4 KB 2504 rows
. . exported "SYS"."WRH$_EVENT_HISTOGRAM":"WRH$_EVENT__3645037571_0" 81.14 KB 2486 rows
. . exported "SYS"."WRH$_SEG_STAT":"WRH$_SEG_ST_3645037571_0" 71.64 KB 421 rows
. . exported "SYS"."WRH$_SYSMETRIC_SUMMARY" 93.66 KB 1106 rows、
.....
我们可以根据awr报告来寻找对应的基表,毕竟这部分内容是不开放的,我们得根据表明来做一些基本判断。剩下的就靠运气了。
最后找到的符合要求的基表是WRH$_RESOURCE_LIMIT,里面会有很多的细节信息。
SNAP_ID DBID INSTANCE_NUMBER RESOURCE_NAME CURRENT_UTILIZATION MAX_UTILIZATION INITIAL_AL LIMIT_VALU
---------- ---------- --------------- ------------------------------ ------------------- --------------- ---------- ----------
21032 3100077577 1 processes 3731 6813 9000 9000
21032 3100077577 1 sessions 3712 6816 13560 13560
21032 3100077577 1 enqueue_locks 3936 7081 154180 154180
21032 3100077577 1 max_rollback_segments 405 408 14916 65535
21032 3100077577 1 parallel_max_servers 62 182 180 3600
21033 3100077577 1 processes 3679 6813 9000 9000
21033 3100077577 1 sessions 3673 6816 13560 13560
21033 3100077577 1 enqueue_locks 3861 7081 154180 154180
21033 3100077577 1 max_rollback_segments 405 408 14916 65535
21033 3100077577 1 parallel_max_servers 46 182 180 3600
session数和报告中还是有略微的差别。但是差别幅度很小。 让人意外的是,我们还可以查看到process,并行资源的情况。 如果需要得到一个session数的统计结果,这个问题就很有帮助。
- 移位寄存器的工作原理
- ROM 单元
- 超前进位加法器
- 算法和数据结构—— 查找和排序
- CVE 2017-0199漏洞利用的新姿势
- Java 正则表达式 StackOverflowError 问题及其优化
- 权限后门系列之一:手动打造WordPress权限后门
- 浅谈用户行为分析之用户身份识别:cookie 知多少?
- 串口通信控制器的Verilog HDL实现(四) 接收模块的Verilog HDL 实现
- 串口通信控制器的Verilog HDL实现(三) 发送模块的Verilog HDL 实现
- 串口通信控制器的Verilog HDL实现(二) 波特率发生器模块
- 串口通信控制器的Verilog HDL实现(一) 顶层模块
- 双口同步RAM
- 单口RAM
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 安全研究 | 通过域名劫持实现Azure DevOps账户劫持
- 一款针对DLL劫持的恶意DLL生成器
- AuthMatrix:一款针对Web应用和服务的认证安全检测BurpSuite工具
- KITT-Lite:基于Python实现的轻量级命令行渗透测试工具集
- 一次KimSuky攻击事件分析
- OpenCV中如何使用滚动条动态调整参数
- 一文读懂「分布式架构」
- 老哥,您看我这篇Java集合,还有机会评优吗?
- 在 IDEA 中使用 Java 热部署插件 JRebel
- 后端必备 Git 分支开发:规范指南
- 大量的 TIME_WAIT 状态连接怎么处理?(文末有福利)
- 线上教育系统开发中,购物车功能是如何实现的?
- IntelliJ IDEA 2020.2重磅发布!全面支持Github PR。真香版本?
- 腾讯云智能语音小程序插件实现实时语音识别
- 我还在生产玩 JDK7,JDK 15 却要来了!|新特性尝鲜