抓取oracle数据库耗费资源的sql语句.doc_第1页
抓取oracle数据库耗费资源的sql语句.doc_第2页
抓取oracle数据库耗费资源的sql语句.doc_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

抓取oracle数据库耗费资源的sql语句oracle数据库连接业务系统,而有些sql语句的执行严重影响了oracle的性能,就如同mysql的慢查询一样,mysql可以开启慢查询日志定位这些造成数据库性能下降的语句,而oracle同样可以做到,而且有过之而无不及。 下面举例说明 首先用root用户登陆核心应用系统,su - oracle 执行命令 topas 可以查看到如下信息:解释三个地方1.Idle%:是cpu的空闲率2.PID:进程唯一标示符3.CPU%:该进程所占用的cpu的百分比 从上述信息可以定位进程为1454604的进程占用资源比较高,查询该进程的sql语句情况。 登陆核心系统oracle数据库,执行以下语句1. select c.spid,a.p1,a.p1raw,a.p2,a.event,b.sql_text,b.SQL_FULLTEXT,b.SQL_ID2. fromv$sessiona,v$sqlb,v$processc3. wherea.wait_classIdleanda.sql_id=b.sql_idanda.PADDR=c.addr4. orderbyevent;情况如下图所示: 找到对应的SPID,点击SQL_FULLTEXT列下的CLOB后面的按钮,可以查看耗费系统资源的具体sql语句。1. selectX2. fromlctcont3. where1344926626000=13449266260004. andcertifycodelikeTTS%5. andgrpcontno6. in(selectc.grpcontnofromljageta,ljagetendorseb,lcgrpcontc7. wherea.EnterAccDateisnull8. anda.actugetno=b.actugetno9. andb.grpcontno=c.grpcontno10. anda.otherno=8053000000139568 11. ) 找到了根源,接着就是如何解决,可见由于字段grpcontno上没有索引,导致表lctcont的全表扫描,最终造成整个执行计划的错乱(其中有笛卡尔积)。因此,正确的再字段grpcontno上创建索引,即可解决此问题。由于这是开发人员写的sql语句,所以对于sql语句的优化,要由他们来配合操作,作

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论