• 作为 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. jsp中frameset frame不显示页面

    今天玩frameset 的时候,无论我怎么改,页面死活不显示出来,网上找了很多答案,各种复制都不行,后来终于找到答案了,在使用frameset 的时候,不能将frameset 的内容放在body标签里 ...

  2. LeetCode Factor Combinations

    原题链接在这里:https://leetcode.com/problems/factor-combinations/ 题目: Numbers can be regarded as product of ...

  3. mysql 查表失败

    我们数据库迁移,我进数据库的目录都需要拷贝什么到新的数据库才可以用,我直接拷贝的库报错了[]北京- 2016/1/26 16:07:33 mysql> use payment;Database  ...

  4. Xcode命令行生成Bitcode静态库

    近两三年一直在做静态库开发 1.在Xcode工程中创建静态库的Target,最初是手动Build出真机的.a文件,模拟器的.a文件,然后再用命令行合并 2.后来一些特殊的开发者,要求加入特殊的功能,或 ...

  5. react 评论列表插入评论数据 unshift

    // unshift 新增数据放到最上面 //插入 回复/发表 评论else if(action.type === INSERT_COMMENT ){ let content = action.tex ...

  6. FlashFXP5_gr坑爹的故事

    数据中心说已把数据存放到ftp上,但我通过flashfxp5工具链接到ftp server查看数据中心存放的数据,一天了都没有看到数据结果,经过我反复多次重新链接否没有发现数据中心所说的最新数据结果, ...

  7. SecureCRT使用小技巧

    SecureCRT使用小技巧  作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 欢迎加入:高级运维工程师之路 598432640 以前觉得xshell链接工具挺好的,看起来又好耍,图 ...

  8. JS中对this的理解

    // this: 指的是调用 当前 方法(函数)的那个对象 <script> function fn1(){ this } 情况1:fn1()                  //这里t ...

  9. submit

    前台<body>中的代码: <body> <div id="top"> </div> <form id="login ...

  10. JQ 全选、全不选

    $(document).ready(function() { $("#isalldebt").click(function() { if ($(this).attr("c ...