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包的运行情况时,特别是当他们的性能非常差时,比如有的时候看起 ...
随机推荐
- jsp中frameset frame不显示页面
今天玩frameset 的时候,无论我怎么改,页面死活不显示出来,网上找了很多答案,各种复制都不行,后来终于找到答案了,在使用frameset 的时候,不能将frameset 的内容放在body标签里 ...
- LeetCode Factor Combinations
原题链接在这里:https://leetcode.com/problems/factor-combinations/ 题目: Numbers can be regarded as product of ...
- mysql 查表失败
我们数据库迁移,我进数据库的目录都需要拷贝什么到新的数据库才可以用,我直接拷贝的库报错了[]北京- 2016/1/26 16:07:33 mysql> use payment;Database ...
- Xcode命令行生成Bitcode静态库
近两三年一直在做静态库开发 1.在Xcode工程中创建静态库的Target,最初是手动Build出真机的.a文件,模拟器的.a文件,然后再用命令行合并 2.后来一些特殊的开发者,要求加入特殊的功能,或 ...
- react 评论列表插入评论数据 unshift
// unshift 新增数据放到最上面 //插入 回复/发表 评论else if(action.type === INSERT_COMMENT ){ let content = action.tex ...
- FlashFXP5_gr坑爹的故事
数据中心说已把数据存放到ftp上,但我通过flashfxp5工具链接到ftp server查看数据中心存放的数据,一天了都没有看到数据结果,经过我反复多次重新链接否没有发现数据中心所说的最新数据结果, ...
- SecureCRT使用小技巧
SecureCRT使用小技巧 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 欢迎加入:高级运维工程师之路 598432640 以前觉得xshell链接工具挺好的,看起来又好耍,图 ...
- JS中对this的理解
// this: 指的是调用 当前 方法(函数)的那个对象 <script> function fn1(){ this } 情况1:fn1() //这里t ...
- submit
前台<body>中的代码: <body> <div id="top"> </div> <form id="login ...
- JQ 全选、全不选
$(document).ready(function() { $("#isalldebt").click(function() { if ($(this).attr("c ...