网站首页 > 技术文章 正文
应用系统的很多性能问题,都是SQL执行效率低下引起的。作为一名合格的DBA,需要能在系统出问题前发现系统中存在的性能问题和隐患,提醒开发人员及早分析解决问题。
为了实现这个目标,一个简单有效的办法,就是针对所有的数据库进行TOP SQL的监控:每隔半小时检查下数据库,查询数据库中是否存在执行时间超过30秒的SQL,如果有,发邮件通知相关的系统负责人。以上过程可以通过简单的程序来实现,在这里我主要介绍下TOP SQL的查询语句的写法:
select to_char(a.start_time, 'yyyy-mm-dd hh24:mi:ss') as 开始执行时间,
a.username as 用户名,
a.sql_id,
a.elapsed_seconds as "用时(秒)",
b.module as 调用客户端, --为空或者JDBC Thin Client,PL/SQL Developer,TOAD 12.1.0.22等,表示调用的客户端
b.sql_text as SQL内容
from v$session_longops a, v$sqlarea b
where a.start_time > sysdate - 0.5 / 24 --半小时之内的数据
and a.username not in ('SYS') --排除系统用户
and a.elapsed_seconds >= 30 --执行时间超过指定值
and a.sql_id = b.sql_id
order by 1 desc;
由于系统没有执行时间超过30秒的数据,我把上面SQL条件中的时间由30秒改成6秒,检查下来结果如下图:
结果中之所以查出“调用客户端”,主要是用来确认SQL是应用程序执行的,还是有人通过客户端执行的。
对于查出的TOP SQL的内容,如果系统负责人熟悉系统,应该能直接知道代码在哪里,如果不太熟悉,就需要在代码里进行搜索了。另外如果是在存储过程里出现的SQL,可以通过下面的SQL进行查询:
select * from user_source
where type IN ('PACKAGE BODY','PROCEDURE')
--AND text like'%&SQL_PART%'
AND lower(text) like'%'||lower('&SQL_PART')||'%';
从结果里能看出TOP SQL在哪个存储过程的第几行。
看完文章的介绍,请大家到各自负责的系统里去手工执行下上面的TOP SQL查询语句,当回DBA发现下系统中潜在的问题吧。
猜你喜欢
- 2024-10-24 DBA日记之Oracle等待事件cursor: mutex x
- 2024-10-24 oracle数据库学习,发展方向有哪些?
- 2024-10-24 选择XTREMIO提高ORACLE DBA工作效率
- 2024-10-24 DBA日记之Oracle位图索引引发的灾难
- 2024-10-24 DBA日记之Oracle数据库索引一 oracle数据库索引怎么看?
- 2024-10-24 2018年 oracle自治数据库云 DBA工作三大重点!
- 2024-10-24 互动送书-《Oracle DBA工作笔记》签名版
- 2024-10-24 Oracle DBA做SQL优化的最佳思路 基于oracle的sql优化如何
- 2024-10-24 DBA常用sql之Oracle 《oracle dba入门》
- 2024-10-24 DBA必备知识|Oracle 托管文件 (OMF)详解
你 发表评论:
欢迎- 620℃几个Oracle空值处理函数 oracle处理null值的函数
- 612℃Oracle分析函数之Lag和Lead()使用
- 601℃0497-如何将Kerberos的CDH6.1从Oracle JDK 1.8迁移至OpenJDK 1.8
- 597℃Oracle数据库的单、多行函数 oracle执行多个sql语句
- 593℃Oracle 12c PDB迁移(一) oracle迁移到oceanbase
- 584℃【数据统计分析】详解Oracle分组函数之CUBE
- 574℃最佳实践 | 提效 47 倍,制造业生产 Oracle 迁移替换
- 563℃Oracle有哪些常见的函数? oracle中常用的函数
- 最近发表
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- 前端获取当前时间 (50)
- Oracle RAC (76)
- oracle恢复 (77)
- oracle 删除表 (52)
- oracle 用户名 (80)
- oracle 工具 (55)
- oracle 内存 (55)
- oracle 导出表 (62)
- oracle约束 (54)
- oracle 中文 (51)
- oracle链接 (54)
- oracle的函数 (58)
- 前端调试 (52)
本文暂时没有评论,来添加一个吧(●'◡'●)