• 作为 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 问题的更多相关文章

  1. ORACLE优化器RBO与CBO介绍总结

    RBO和CBO的基本概念 Oracle数据库中的优化器又叫查询优化器(Query Optimizer).它是SQL分析和执行的优化工具,它负责生成.制定SQL的执行计划.Oracle的优化器有两种,基 ...

  2. Oracle优化总结

    本文主要从大型数据库ORACLE环境四个不同级别的调整分析入手,分析ORACLE的系统结构和工作机理,从九个不同方面较全面地总结了ORACLE数据库的优化调整方案.关键词 ORACLE数据库 环境调整 ...

  3. Oracle优化的几个简单步骤

    数据库优化的讨论可以说是一个永恒的主题.资深的Oracle优化人员通常会要求提出性能问题的人对数据库做一个statspack,贴出数据库配置等等.还有的人认为要抓出执行最慢的语句来进行优化.但实际情况 ...

  4. SDE+ORACLE优化配置

    原文 SDE+ORACLE优化配置 SDE的性能取决于: 首先操作系统的性能:其次是Oracle的性能,再次是SDE的性能. 第一:操作系统,无非是内存.CPU.带宽等. 可以有待提高的地方:第一.硬 ...

  5. Oracle优化器介绍

    Oracle优化器介绍 本文讲述了Oracle优化器的概念.工作原理和使用方法,兼顾了Oracle8i.9i以及最新的10g三个版本.理解本文将有助于您更好的更有效的进行SQL优化工作. RBO优化器 ...

  6. ORACLE 优化

    本文主要从大型数据库ORACLE环境四个不同级别的调整分析入手,分析ORACLE的系统结构和工作机理,从九个不同方面较全面地总结了 ORACLE数据库的优化调整方案. 关键词 ORACLE数据库 环境 ...

  7. Oracle优化网上常见的5个错误观点

    最近系统的研究了一下ORACLE SQL语句性能调优,在此大言不惭的得出一个观点——网上很多性能调优的结论都是错误的或者不周全的.现在的DBA大牛些都太低调了,不出来斧正一下,小弟来借这个机会吐槽一下 ...

  8. [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 ...

  9. Oracle优化-SQL_TRACE

    思维导图 Oracle优化10-SQL_TRACE解读 Oracle优化11-10046事件 概述 当我们想了解一条SQL或者是PL/SQL包的运行情况时,特别是当他们的性能非常差时,比如有的时候看起 ...

随机推荐

  1. 转: KindEditor 图片空间文件增加删除文件、文件夹功能(ASP语言环境)

    KindEditor 图片上传功能中集成的图片空间文件管理插件可以对已上传图片进行管理,十分便捷,只是没有图片删除功能,仔细研读xieliang分享的经验后,自己动手改造了一下,顺便分享给有同样需求的 ...

  2. elasticsearch使用操作部分

    本片文章记录了elasticsearch概念.特点.集群.插件.API使用方法. 1.elasticsearch的概念及特点.概念:elasticsearch是一个基于lucene的搜索服务器.luc ...

  3. 部署移动BI必须要考虑的五大因素

    随着大屏智能手机和平板电脑的普及,商业智能分析应用程序也需要移动化.由于用户并不会长时间在办公桌前工作.在新的设备以及新的用户的共同促进下,移动BI即将成为主流. 但是,所有人都应该清楚这样一个事实: ...

  4. CPlus播放多媒体之播放声音

    1.头文件需要<mmsystem.h>,但是之前需要包含<windows.h> 2.预处理#pragma comment<lib,"winmm.h"& ...

  5. 夺命雷公狗-----React---4--props变量的传递

    提示:props的值是不可以改变的... <!DOCTYPE html> <html lang="en"> <head> <meta ch ...

  6. jquery easyui 解析数据库返回的数据

  7. POJ 2420:A Star not a Tree?

    原文链接:https://www.dreamwings.cn/poj2420/2838.html A Star not a Tree? Time Limit: 1000MS   Memory Limi ...

  8. asp.net 之 数据库导入treeview

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...

  9. 什么是BOM头

    什么是BOM头? BOM头是放在UTF-8编码的文件的头部的,占用三个字节,用来标识该文件属于UTF-8编码.现在已经有很多软件识别BOM头,但是还有些不能识别BOM头,比如PHP就不能识别BOM头, ...

  10. Theme Section(KMP应用 HDU4763)

    Theme Section Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...