抓取oracle数据库耗费资源的sql语句
oracle数据库连接业务系统,而有些sql语句的执行严重影响了oracle的性能,就如同mysql的慢查询一样,mysql可以开启慢查询日志定位这些造成数据库性能下降的语句,而oracle同样可以做到,而且有过之而无不及。
下面举例说明
首先用root用户登陆核心应用系统,su - oracle
执行命令 topas
可以查看到如下信息:

解释三个地方
1.Idle%:是cpu的空闲率
2.PID:进程唯一标示符
3.CPU%:该进程所占用的cpu的百分比
从上述信息可以定位进程为1454604的进程占用资源比较高,查询该进程的sql语句情况。
登陆核心系统oracle数据库,执行以下语句
- select c.spid,a.p1,a.p1raw,a.p2,a.event,b.sql_text,b.SQL_FULLTEXT,b.SQL_ID
- from v$session a,v$sql b,v$process c
- where a.wait_class<>'Idle' and a.sql_id=b.sql_id and a.PADDR=c.addr
- order by event;
情况如下图所示:

找到对应的SPID,点击SQL_FULLTEXT列下的CLOB后面的按钮,可以查看耗费系统资源的具体sql语句。
- select 'X'
- from lctcont
- where '1344926626000'='1344926626000'
- and certifycode like 'TTS%'
- and grpcontno
- in ( select c.grpcontno from ljaget a ,ljagetendorse b ,lcgrpcont c
- where a.EnterAccDate is null
- and a.actugetno = b.actugetno
- and b.grpcontno = c.grpcontno
- and a.otherno='8053000000139568'
- )
找到了根源,接着就是如何解决,可见由于字段grpcontno上没有索引,导致表lctcont的全表扫描,最终造成整个执行计划的错乱(其中有笛卡尔积)。因此,正确的再字段grpcontno上创建索引,即可解决此问题。由于这是开发人员写的sql语句,所以对于sql语句的优化,要由他们来配合操作,作为dba不但要懂得如何在内存体系结构上优化数据库,更要懂得协同开发人员一起进行oracle数据库的优化。
本文出自 “我就是我非此非彼” 博客,请务必保留此出处http://wukui127.blog.51cto.com/2866802/963370
抓取oracle数据库耗费资源的sql语句的更多相关文章
- Oracle数据库中,在SQL语句中连接字符串的方法是哪个?(选择1项)
Oracle数据库中,在SQL语句中连接字符串的方法是哪个?(选择1项) A.cat B.concat C.join D.+ 解答:B
- Oracle数据库查看表空间sql语句
转: Oracle数据库查看表空间sql语句 2018-09-03 15:49:51 兰海泽 阅读数 6212 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出 ...
- Oracle数据库更新时间的SQL语句
---Oracle数据库更新时间字段数据时的sql语句---格式化时间插入update t_user u set u.name='pipi',u.modifytime=to_date('2015-10 ...
- cmd连接Oracle数据库成功后输入sql语句返回 2
解决办法 : sql语句后一定要跟分号 .
- Oracle 数据库基础学习 (七) SQL语句综合练习
一.多表查询综合练习 1. 列出高于在30部门工作的所有人员的薪金的员工的姓名.部门名称.部门编号.部门人数 分析: 需要的员工信息: |-emp表:姓名.部门编号 |-dept表:部门名称.部门编 ...
- Oracle数据库之开发PL/SQL子程序和包
Oracle数据库之开发PL/SQL子程序和包 PL/SQL块分为匿名块与命名块,命名块又包含子程序.包和触发器. 过程和函数统称为PL/SQL子程序,我们可以将商业逻辑.企业规则写成过程或函数保 ...
- Oracle数据库使用Analyze提升sql性能
Oracle数据库使用Analyze提升sql性能 如果你不使用analyze完成sql优化,将意味着:你拒绝使用数据库的查询优化器,也失去了使用优化连接的机会.假设你创建了一张拥有100万条记录的临 ...
- 抓取oracle建表语句及获取建表ddl语句
抓取oracle建表语句及获取建表ddl语句 1.抓取代码如下: 1.1.产生表的语法资料 DECLARE-- v_notPartTable VARCHAR2(1000):= '&2'; -- ...
- DBA 需要知道N种对数据库性能的监控SQL语句
--DBA 需要知道N种对数据库性能的监控SQL语句 -- IO问题的SQL内部分析 下面的DMV查询可以来检查当前所有的等待累积值. Select wait_type, waiting_tasks_ ...
随机推荐
- emacs配置文件的基础知识 (转载)
转自:http://blog.csdn.net/schumyxp/article/details/2278268 emacs的配置文件,叫作.emacs,是个隐藏文件,存在于当前用户的根目录下面,也就 ...
- J20170426-hm
ジェネリクス Generics 泛型 バルーン balloon 气球 アングルブラケット Angle bracket 尖括号 プレースホルダ Placeholder 占位符
- 3DMAX 9 角色建模3 uv展开
将角色删除一半,展好uv再镜像出来,节省一半工作量(前提是对称) 添加UVW展开编辑器(Unwrap UVW),选择面 打开UV编辑器 这里要注意映射问题,默认打开UV编辑器后所选择的面是映射到与选择 ...
- 自己动手搭建SSM
1.工具 apache-tomcat 7 apache-maven(后面详细讲!这东西我一开始也很懵逼) mysql 5以上的版本 navicat(有了这个就不用cmd了,可以直接显示数据库,如下图, ...
- 如何才能优雅地书写JS代码
第一:关于匿名函数的使用 要避免全局变量泛滥, 可以考虑使用匿名函数, 把不需要在外部访问的变量或者函数限制在一个比较小的范围内. 例如以下代码: <script> function fu ...
- IT兄弟连 JavaWeb教程 请求转发案例
CheckServlet类与OutputServlet类之间为请求转发关系.在web.xml文件中,为CheckServlet映射的URL为"/check",为OutputServ ...
- hdu1856 More is better 基础并查集
#include <cstdio> #include <cstring> #include <algorithm> #include <cstdlib> ...
- android 多线程 AsyncTask 下载图片
AsyncTask 下载图片 package com.test.network; import android.graphics.Bitmap; import android.graphics.Bit ...
- ssh配置详解及公私钥批量分发
第一:ssh配置文件详解 第二:ssh公私密钥的生成 第三:ssh公钥分发之一:ssh自带工具ssh-copy-id工具分发 第四:ssh公钥分发之二:编写sshpass脚本批量分发 第五:ssh公钥 ...
- Android课程设计第三天帧动画区间动画
注意:课程设计只为完成任务,不做细节描述~ 点火是帧动画,发射是区间动画,于是 <?xml version="1.0" encoding="utf-8"? ...