抓取oracle数据库耗费资源的sql语句
2015-12-11 18:07
441 查看
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数据库的优化。
本文出自 “我就是我非此非彼” 博客,请务必保留此出处/article/4275989.html
下面举例说明
首先用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数据库的优化。
本文出自 “我就是我非此非彼” 博客,请务必保留此出处/article/4275989.html
相关文章推荐
- Oracle 12c 数据库的本地连接和远程连接
- 【Oracle】SP2-0618: 无法找到会话标识符。启用检查 PLUSTRACE 角色
- Oracle多表查询优化
- Oracle之sql语句优化
- 今天说说Oracle中的字符转义问题吧——escape关键字
- oracle
- oracle迁移到mysql(仅使用脚本)
- oracle JOB常见的执行时间
- Oracle EBS 寄售业务总结
- oracle表,表空间,dbf数据文件三者的关系
- Windows 10、Windows 2012 安装 Oracle 11g 报错:[INS-13001]环境不满足最低要求。
- Zabbix利用orabbix插件监控Oracle数据库(增强版)
- oracle删除表操作,10g之前的不适用
- Oracle PO - 模块一揽子采购协议小结
- Oracle更改redo log的大小
- Entity Framework6 with Oracle(可实现code first)
- ORACLE官方全托管驱动 Oracle.ManagedDataAccess 12.1.0.1.0
- oracle实现自增长列
- oracle数据库对象(一)
- Oracle's OFA(Optimal Flexible Architecture)