前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >[打造自己的监控系统之执行Oracle命令]检查未绑定变量的语句(硬解析状况)

[打造自己的监控系统之执行Oracle命令]检查未绑定变量的语句(硬解析状况)

作者头像
bsbforever
发布于 2020-08-19 06:45:50
发布于 2020-08-19 06:45:50
2.1K00
代码可运行
举报
运行总次数:0
代码可运行

上节我们介绍了如何通过Django获取Oracle 执行次数等于一的语句,而这些语句很有可能是未使用绑定变量导致,这节讲如何获取其具体的信息


开发环境

操作系统:CentOS 7.3 Python版本 :2.7 Django版本: 1.10.5 操作系统用户:oracle


建立页面的步骤

我们还是通过这张图的步骤来说明如何建立页面


urls.py页面

首先是monitor/urls.py,这节不需要修改这个文件

urlpatterns = [ url(r'^$', views.index, name='index'), url(r'^oracle_command/$',views.oracle_command, name='oracle_command'), url(r'^commandresult/$',views.commandresult, name='commandresult'), ]

oracle_command为执行Oracle命令的页面

commandresult为执行完Oracle命令显示结果的页面


views.py

下面为commandresult对应的函数在views.py里面的写法

1. 首先获取到表单中的数据,如 ipaddress,tnsname以及执行的命令

2. 然后通过ipaddress,tnsname从oraclelist数据库中查找获得用户名密码用于连接

3. 再判断命令内容,如果是check_unboundsql

4. 则首先获取上节中查找到的执行次数等于一的语句,

5. 然后将语句作为参数传递到函数getunboundsql中未使用绑定变量的语句的相信信息,详情看具体代码

6. 最后把页面的标题以及数据放到dic变量中传到 oracle_command_result_5.html模板文件中


getunboundsql函数

这里的getunboundsql函数获取执行次数等于一的语句,详情看具体代码

monitor/command/getoraclecommandresult.py

def getunboundsql(cursor,unboundsql): fp=open('/home/oracle/mysite/monitor/command/oracle_command/getunboundsql.sql','r') fp1=fp.read().strip()+unboundsql+'%\' order by last_load_time desc' s=cursor.execute(fp1) fp.close() row=s.fetchall() return row


getexecutions.sql

这个SQL获取v$sql视图中未使用绑定变量的语句情况

select sql_text, hash_value, module , first_load_time, last_load_time from v$sql where sql_text like '


template文件

这里我们使用oracle_command_result_5.html文件来显示

oracle_command_result_5.html

该模板是一个表格,通过将传过来的变量显示在前端页面


实际效果

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
http://10.65.202.218:8081/monitor/oracle_command/

从上面结果我们可以看到这个select语句的where子句未使用绑定变量,从模块中可以看到其来自的哪里,载入时间也可以判断其执行的非常频繁。


源码地址

源码请查看我的GitHub主页

https://github.com/bsbforever/wechat_monitor


到这里已经讲了日常运维中遇到的情形,大家如有其他需求,基本上都提供了模板供修改

下期将是一个总结

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-08-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 宅必备 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
[打造自己的监控系统之执行Oracle命令]获取Oracle执行次数等于一的语句(硬解析状况)
我们知道硬解析是一个非常耗资源的动作,尤其是在OLTP系统中如果未使用绑定变量导致硬解析很严重(每秒30次以上),数据库性能会严重的下降,这时我们需要找到相应的语句来进行优化
bsbforever
2020/08/19
7240
[打造自己的监控系统之执行Oracle命令]获取Oracle表的分析时间
上节讲到如何建立一个Oracle命令的界面,并显示数据库文件的创建时间,这节讲如何查看指定表的分析时间
bsbforever
2020/08/19
1.1K0
[打造自己的监控系统之执行Oracle命令]获取Oracle数据库段的大小
我们在日常Oracle维护中可能需要知道数据库哪个表占用的空间最大,下面这个功能可实现这个功能
bsbforever
2020/08/19
9410
[打造自己的监控系统之执行Oracle命令]获取Oracle临时表空间的使用率
我们在日常Oracle维护中,可能某个SQL语句很慢,有大量的排序操作,这时需要确认下临时文件的使用情况,今天就讲如何直观的在前端显示该结果
bsbforever
2020/08/19
9830
[打造自己的监控系统之执行Oracle命令]通过会话查看进程号
我们在日常Oracle维护中,可能有的遇到一个会话处于假死状态或者通过常规命令无法杀死,这时需要直接通过操作系统kill命令来杀死进程,这节就讲述如何通过SID来获取操作系统的进程号。
bsbforever
2020/08/19
2.1K0
[打造自己的监控系统之执行Oracle命令]获取Oracle数据文件创建的时间
上节讲到如何建立一个Oracle命令的界面,这节讲述如何利用Django获取Oracle数据文件的建立时间并显示出来
bsbforever
2020/08/19
1.1K0
[打造自己的监控系统之执行Oracle命令]通过进程号获取SQL语句
我们在日常Oracle维护中,可能有的进程占用的CPU或者内存较高,这时我们需要知道它对应的SQL语句,下面这个功能可实现这个功能
bsbforever
2020/08/19
1.1K0
[打造自己的监控系统]将Oracle监控指标在前端展现
前面介绍了如何利用Python搭建一个网站并且介绍了如何在其中执行Oracle命令并在前端显示出来
bsbforever
2020/08/19
7870
[打造自己的监控系统]执行Oracle命令界面的建立
操作系统:CentOS 7.3 Python版本 :2.7 Django版本: 1.10.5 操作系统用户:oracle
bsbforever
2020/08/19
9070
[打造自己的监控系统] 开始我们的第一个网页
操作系统:CentOS 7.3 Python版本 :2.7 Django版本: 1.10.5 操作系统用户:oracle
bsbforever
2020/08/19
3610
利用Django在前端展示TOP SQL信息
企鹅号小编
2017/12/29
1.3K0
利用Django在前端展示TOP SQL信息
[打造自己的监控系统]使用Django获取Oracle TOP SQL数据并存入MySQL数据库
前面介绍了如何利用Python搭建一个网站并且介绍了如何在其中执行Oracle命令并在前端显示出来 然后讲述自定义命令相关的知识
bsbforever
2020/08/19
2.6K0
[打造自己的监控系统]使用Django获取Oracle系统状态数据并存放在redis中
操作系统:CentOS 7.4 Python版本 :3.6 Django版本: 1.10.5 操作系统用户:oms
bsbforever
2020/08/19
8680
[打造自己的监控系统]使用Django获取Oracle系统状态数据并存放在redis中
[打造自己的监控系统]使用自定义命令获取Oracle监控指标
前面介绍了如何利用Python搭建一个网站并且介绍了如何在其中执行Oracle命令并在前端显示出来,这节讲述自定义命令相关的知识
bsbforever
2020/08/19
9820
绑定变量及其优缺点
    绑定变量是Oracle解决硬解析的首要利器,能解决OLTP系统中library cache的过度耗用以提高性能。然刀子磨的太快,使起来锋利,却容 易折断。凡事皆有利弊二性,因地制宜,因时制宜,全在如何权衡而已。本文讲述了绑定变量的使用方法,以及绑定变量的优缺点、使用场合。
Leshami
2018/08/14
1.5K0
【DB笔试面试806】在Oracle中,如何查找未使用绑定变量的SQL语句?
利用V$SQL视图的FORCE_MATCHING_SIGNATURE字段可以识别可能从绑定变量或CURSOR_SHARING获益的SQL语句。如果SQL已使用绑定变量或者CURSOR_SHARING,那么FORCE_MATCHING_SIGNATURE在对其进行标识时将给出同样的签名。换句话说,如果两个SQL语句除了字面量的值之外都是相同的,它们将拥有相同的FORCE_MATCHING_SIGNATURE,这意味着如果为它们提供了绑定变量或者CURSOR_SHARING,它们就成了完全相同的语句。所以,使用FORCE_MATCHING_SIGNATURE字段可以识别没有使用绑定变量的SQL语句。
AiDBA宝典
2020/05/25
6.7K0
利用Django在前端展示Oracle 状态趋势
开发环境 操作系统:CentOS 7.4 Python版本 :3.6 Django版本: 1.10.5 操作系统用户:oms 数据处理:pandas 前端展示:highcharts 通过上面我们已介绍了如何定时获取系统Oracle状态语句以及如何利用pandas处理成highcharts识别的格式 这节讲如何让其在前端显示 建立页面的步骤 我们还是通过这张图的步骤来说明如何建立页面 urls.py页面 oracle_performance分别为系统状态趋势的页面(以天为单位) performance分别为系
企鹅号小编
2018/02/28
1.7K0
利用Django在前端展示Oracle 状态趋势
Oracle监控系统总览
大家有没这种感觉,不论甲方还是乙方,拿到一套数据库我们很难快速的知道他的配置,数据库状态以及性能状态
bsbforever
2020/08/19
2.9K0
Oracle监控系统总览
[打造自己的监控系统]使用Django批量监控Oracle长会话
关于监控系统我们前面介绍了很多,学会了如何使用Django新建网站以及获取数据监控数据至MySQL或redis
bsbforever
2020/08/19
8990
[打造自己的监控系统]使用Django批量监控Oracle长会话
[周末往期回顾]使用Python将Oracle已使用过索引存入MySQL中
运行完脚本后我们查看MySQL数据库,应该可以看到表里应该有数据,而且没有重复数据
bsbforever
2020/08/19
1.1K0
[周末往期回顾]使用Python将Oracle已使用过索引存入MySQL中
推荐阅读
[打造自己的监控系统之执行Oracle命令]获取Oracle执行次数等于一的语句(硬解析状况)
7240
[打造自己的监控系统之执行Oracle命令]获取Oracle表的分析时间
1.1K0
[打造自己的监控系统之执行Oracle命令]获取Oracle数据库段的大小
9410
[打造自己的监控系统之执行Oracle命令]获取Oracle临时表空间的使用率
9830
[打造自己的监控系统之执行Oracle命令]通过会话查看进程号
2.1K0
[打造自己的监控系统之执行Oracle命令]获取Oracle数据文件创建的时间
1.1K0
[打造自己的监控系统之执行Oracle命令]通过进程号获取SQL语句
1.1K0
[打造自己的监控系统]将Oracle监控指标在前端展现
7870
[打造自己的监控系统]执行Oracle命令界面的建立
9070
[打造自己的监控系统] 开始我们的第一个网页
3610
利用Django在前端展示TOP SQL信息
1.3K0
[打造自己的监控系统]使用Django获取Oracle TOP SQL数据并存入MySQL数据库
2.6K0
[打造自己的监控系统]使用Django获取Oracle系统状态数据并存放在redis中
8680
[打造自己的监控系统]使用自定义命令获取Oracle监控指标
9820
绑定变量及其优缺点
1.5K0
【DB笔试面试806】在Oracle中,如何查找未使用绑定变量的SQL语句?
6.7K0
利用Django在前端展示Oracle 状态趋势
1.7K0
Oracle监控系统总览
2.9K0
[打造自己的监控系统]使用Django批量监控Oracle长会话
8990
[周末往期回顾]使用Python将Oracle已使用过索引存入MySQL中
1.1K0
相关推荐
[打造自己的监控系统之执行Oracle命令]获取Oracle执行次数等于一的语句(硬解析状况)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验