Oracle 优化 - CPU 问题
- 作为 OLTP 应用,一般不太有 CPU 问题,比较少 - 毕竟大多数问题都是 IO 引起;但是偶尔也会有。
- 问题判断
- 很简单 - OS 出现 CPU 很高的问题,持续高于 90%
- 应用可能会表现慢
- 问题调查和解决
- 硬件
- 消耗 CPU 的 SQLs
- 限制消耗 CPU 的 SQLs
- 硬件
- 根据经验和具体情况增加新的 CPUs,曾经很难,在目前虚拟化普遍使用的情况下,不再是太大的困扰。
- 消耗 CPU 的 SQLs
- AWR report 里面的 SQL ordered by CPU Time 会明确的告诉原因。比如下面红色的 SQL ID 69vuwhdz0jw51消耗了 Oracle 57% 的 CPU.
- 这个 SQL 每次执行 0.22 秒 CPU, 实际耗时 (Elapsed Time / Executions = 0.5 秒左右);再结合具体的 SQL, 没有优化的余地,那么需要 要么修改代码减少调用次数,要么修改代码简化 SQL
SQL ordered by CPU Time
- Resources reported for PL/SQL code includes the resources used by all SQL statements called by the code.
- % Total is the CPU Time divided into the Total CPU Time times 100
- Total CPU Time (s): 56,812
- Captured SQL account for 79.1% of Total
- Total CPU Time (s): 56,812
- Captured PL/SQL account for 0.9% of Total
| CPU Time (s) | Elapsed Time (s) | Executions | CPU per Exec (s) | % Total | % Total DB Time | SQL Id | SQL Module | SQL Text |
|---|---|---|---|---|---|---|---|---|
| 32,595 | 96,381 | 149,476 | 0.22 | 57.37 | 47.42 | 69vuwhdz0jw51 | JDBC Thin Client | |
| 1,940 | 5,451 | 190 | 10.21 | 3.41 | 2.68 | 47y171y2nuvy9 | JDBC Thin Client | |
| 1,232 | 3,816 | 5,717 | 0.22 | 2.17 | 1.88 | 3x365dut1trbz | JDBC Thin Client | |
| 1,013 | 3,147 | 4,722 | 0.21 | 1.78 | 1.55 | 8vmfr11dt6bb7 | JDBC Thin Client | |
| 908 | 2,792 | 4,225 | 0.21 | 1.60 | 1.37 | 9kxdmwbytzsbs | JDBC Thin Client | |
| 848 | 2,139 | 451 | 1.88 | 1.49 | 1.05 | 9zv8ryyqzjudh | JDBC Thin Client | |
| 564 | 1,651 | 2,530 | 0.22 | 0.99 | 0.81 | bdd9ay1mz8x22 | JDBC Thin Client | |
| 558 | 1,637 | 2,532 | 0.22 | 0.98 | 0.81 | 1pfxcnwp9ydw9 | JDBC Thin Client | |
| 556 | 1,633 | 2,532 | 0.22 | 0.98 | 0.80 | dwysa8fbxz8du | JDBC Thin Client | |
| 500 | 1,496 | 2,288 | 0.22 | 0.88 | 0.74 | 57jgy744z6rq3 | JDBC Thin Client |
- 也可以使用下面的 SQLs 来更细的分析 TOP CPU SQLs.
- 按照 CPU 总耗时排序 (执行次数 X 每次的 CPU 耗时)
select a.SQL_ID,c.username, CPU_TIME*0.000001 cpu_time_secs,
ELAPSED_TIME*0.000001 elapsed_time_secs,round(ELAPSED_TIME*0.000001/nvl(nullif(executions,0),1)) Elap_per_Exec,
executions,ROWS_PROCESSED,b.piece line#,b.sql_text
from v$sql a, v$sqltext b,dba_users c
where
a.address=b.address
and
(
ELAPSED_TIME*0.000001>10
or executions > 1000
)
and executions>0
and c.user_id=a.PARSING_USER_ID
order by CPU_TIME,a.HASH_VALUE, b.piece asc
- 按照 SQL 单次执行的CPU 耗时排序
select c.username,CPU_TIME*0.000001 cpu_time_secs,
ELAPSED_TIME*0.000001 elapsed_time_secs,
round(ELAPSED_TIME*0.000001/nvl(nullif(executions,0),1)) Elap_per_Exec,
executions,LAST_LOAD_TIME,
b.piece line#,
b.sql_text sql_text
from v$sql a, v$sqltext b, dba_users c
where
a.address=b.address
and
(
ELAPSED_TIME*0.000001>10
or executions > 1000
)
and executions>0
and c.user_id=a.PARSING_USER_ID
order by Elap_per_Exec,ELAPSED_TIME,CPU_TIME,a.HASH_VALUE, b.piece asc;
- 资源限制 - 终止 CPU 耗时超过一定阀值的 SQL
Create resource limit to limit SQLs which run more than 5 minutes.
alter system set resource_limit =true scope=both; (Oracle restart required to take effect)
create profile cpu_limit_3_min limit cpu_per_call 30000; (time is in 100ths of a second)
alter user XXXX profile cpu_limit_5_min; (change the user to use the profile)
Oracle 优化 - CPU 问题的更多相关文章
- ORACLE优化器RBO与CBO介绍总结
RBO和CBO的基本概念 Oracle数据库中的优化器又叫查询优化器(Query Optimizer).它是SQL分析和执行的优化工具,它负责生成.制定SQL的执行计划.Oracle的优化器有两种,基 ...
- Oracle优化总结
本文主要从大型数据库ORACLE环境四个不同级别的调整分析入手,分析ORACLE的系统结构和工作机理,从九个不同方面较全面地总结了ORACLE数据库的优化调整方案.关键词 ORACLE数据库 环境调整 ...
- Oracle优化的几个简单步骤
数据库优化的讨论可以说是一个永恒的主题.资深的Oracle优化人员通常会要求提出性能问题的人对数据库做一个statspack,贴出数据库配置等等.还有的人认为要抓出执行最慢的语句来进行优化.但实际情况 ...
- SDE+ORACLE优化配置
原文 SDE+ORACLE优化配置 SDE的性能取决于: 首先操作系统的性能:其次是Oracle的性能,再次是SDE的性能. 第一:操作系统,无非是内存.CPU.带宽等. 可以有待提高的地方:第一.硬 ...
- Oracle优化器介绍
Oracle优化器介绍 本文讲述了Oracle优化器的概念.工作原理和使用方法,兼顾了Oracle8i.9i以及最新的10g三个版本.理解本文将有助于您更好的更有效的进行SQL优化工作. RBO优化器 ...
- ORACLE 优化
本文主要从大型数据库ORACLE环境四个不同级别的调整分析入手,分析ORACLE的系统结构和工作机理,从九个不同方面较全面地总结了 ORACLE数据库的优化调整方案. 关键词 ORACLE数据库 环境 ...
- Oracle优化网上常见的5个错误观点
最近系统的研究了一下ORACLE SQL语句性能调优,在此大言不惭的得出一个观点——网上很多性能调优的结论都是错误的或者不周全的.现在的DBA大牛些都太低调了,不出来斧正一下,小弟来借这个机会吐槽一下 ...
- [z]oracle优化http://jadethao.iteye.com/blog/1613943
[sql] view plaincopy SQL> create table t as select 1 id,object_name from dba_objects; Table creat ...
- Oracle优化-SQL_TRACE
思维导图 Oracle优化10-SQL_TRACE解读 Oracle优化11-10046事件 概述 当我们想了解一条SQL或者是PL/SQL包的运行情况时,特别是当他们的性能非常差时,比如有的时候看起 ...
随机推荐
- reporting service & wpf
WPF做Windows程序界面很好很强大,RDLC做报表免费又好用,如何将两者强强联合呢? 方法1: 可以直接在WPF项目中加入一个WinForm窗体,在这个窗体上进行报表操作,与一般的Wi ...
- openfire及xmpp简单介绍
一.oprenfire 1.openfire是采用Java开发,开源的实时协作(RTC)服务器基于XMPP(Jabber)协议.可以使用它轻易的构建高效率的即时通信服务器. 2.Openfire安装和 ...
- iOS 1-2年经验面试参考题
Model层: 数据持久化存储方案有哪些? 沙盒的目录结构是怎样的?各自一般用于什么场合? SQL语句问题:inner join.left join.right join的区别是什么? SQLite的 ...
- Python开发程序:ATM+购物商城
一.程序要求 模拟实现一个ATM + 购物商城程序 额度 15000或自定义 实现购物商城,买东西加入 购物车,调用信用卡接口结账 可以提现,手续费5% 每月22号出账单,每月10号为还款日,过期未还 ...
- Jmeter进行数据库压测
一.配置并发用户 新建线程组,设置线程数,Ramp-up和循环次数 二.添加JDBC请求 先选中JDBC Users(线程组),右键选中ADD-Config Element--JDBC Connect ...
- CentOS 7 搭建 LNMP
一.安装httpd 1.yum install httpd -y 2.启动服务:systemctl start httpd 3.设置开机启动:systemctl enable 二.安装mariadb ...
- JQuery + JSON作为前后台数据交换格式实践
JQuery + JSON作为前后台数据交换 JQuery提供良好的异步加载接口AJAX,可以局部更新页面数据, http://api.jquery.com/category/ajax/ JSON作为 ...
- 学习OpenCV——Surf简化版
之前写过一遍关于学习surf算法的blog:http://blog.csdn.net/sangni007/article/details/7482960 但是代码比较麻烦,而且其中还涉及到flann算 ...
- Handle源码分析,深入群内了解风骚的Handle机制
Hanlder的使用方式一: private static Handler mHandler = new Handler(){ public void handleMessage(android.os ...
- HTML 5 Canvas 参考手册
HTML 5 Canvas 参考手册 HTML 视频/音频 HTML 文档类型 描述 HTML5 <canvas> 标签用于绘制图像(通过脚本,通常是 JavaScript). 不过,&l ...