当前位置:Gxlcms > 数据库问题 > 根据dba_hist_osstat统计CPU占用情况

根据dba_hist_osstat统计CPU占用情况

时间:2021-07-01 10:21:17 帮助过:22人阅读

.114.1:1521/dzgddb> select * from DBA_HIST_OSSTAT_NAME; DBID STAT_ID STAT_NAME --------------- --------------- ---------------------------------------------------------------- 3352298469 0 NUM_CPUS 3352298469 1 IDLE_TIME 3352298469 2 BUSY_TIME 3352298469 3 USER_TIME 3352298469 4 SYS_TIME 3352298469 5 IOWAIT_TIME 3352298469 6 NICE_TIME 3352298469 14 RSRC_MGR_CPU_WAIT_TIME 3352298469 15 LOAD 3352298469 16 NUM_CPU_CORES 3352298469 17 NUM_CPU_SOCKETS 3352298469 1008 PHYSICAL_MEMORY_BYTES 3352298469 1009 VM_IN_BYTES 3352298469 1010 VM_OUT_BYTES 3352298469 2000 TCP_SEND_SIZE_MIN 3352298469 2001 TCP_SEND_SIZE_DEFAULT 3352298469 2002 TCP_SEND_SIZE_MAX 3352298469 2003 TCP_RECEIVE_SIZE_MIN 3352298469 2004 TCP_RECEIVE_SIZE_DEFAULT 3352298469 2005 TCP_RECEIVE_SIZE_MAX 3352298469 2006 GLOBAL_SEND_SIZE_MAX 3352298469 2007 GLOBAL_RECEIVE_SIZE_MAX 22 rows selected.

如上,nmu_cpu_cores是指cpu核心数,本例是32;num_cpus是指cpu核心线程数,本例是64;num_cpu_sockets是指cpu路数,也指cpu主板数,本例是4。

关键的计算公式是:

  1. %User = USER_TIME/ (BUSY_TIME+IDLE_TIME)*<span style="color: #800080">100</span>
  2. %Sys = SYS_TIME/ (BUSY_TIME+IDLE_TIME)*<span style="color: #800080">100</span>
  3. %Idle = IDLE_TIME/ (BUSY_TIME+IDLE_TIME)*<span style="color: #800080">100<br>BUSY_TIME + IDLE_TIME = ELAPSED_TIME * CPU_COUNT<br></span>

鉴于报表习惯,将关键指标%Idle换算为%CPU,则:

  1. %CPU = BUSY_TIME/ (BUSY_TIME+IDLE_TIME)*100

顺带记录一下,LOAD指标记录的是snap_id起始点的OS Load值,对应AWR报告的Load Average End & Load Average Begin。

以下是最终的SQL:根据dba_hist_osstat统计CPU占用情况,顺带附上另外几个关键指标

  1. <span style="color: #000000">SELECT sn.instance_number,
  2. sn.snap_id,
  3. to_char(sn.end_interval_time, </span><span style="color: #800000">‘</span><span style="color: #800000">YYYY-MM-DD HH24:MI</span><span style="color: #800000">‘</span><span style="color: #000000">) AS snaptime,
  4. newread.value </span>- oldread.value <span style="color: #800000">"</span><span style="color: #800000">physical reads</span><span style="color: #800000">"</span><span style="color: #000000">,
  5. newwrite.value </span>- oldwrite.value <span style="color: #800000">"</span><span style="color: #800000">physical writes</span><span style="color: #800000">"</span><span style="color: #000000">,
  6. round((newdbtime.value </span>- olddbtime.value) / <span style="color: #800080">1000000</span> / <span style="color: #800080">60</span>, <span style="color: #800080">2</span>) <span style="color: #800000">"</span><span style="color: #800000">DB time(min)</span><span style="color: #800000">"</span><span style="color: #000000">,
  7. round((newbusy.value </span>- oldbusy.value) /<span style="color: #000000">
  8. ((newidle.value </span>- oldidle.value) +<span style="color: #000000">
  9. (newbusy.value </span>- oldbusy.value)) * <span style="color: #800080">100</span><span style="color: #000000">,
  10. </span><span style="color: #800080">2</span>) <span style="color: #800000">"</span><span style="color: #800000">CPU(%)</span><span style="color: #800000">"</span><span style="color: #000000">
  11. FROM dba_hist_sysstat oldread,
  12. dba_hist_sysstat newread,
  13. dba_hist_sysstat oldwrite,
  14. dba_hist_sysstat newwrite,
  15. dba_hist_sys_time_model olddbtime,
  16. dba_hist_sys_time_model newdbtime,
  17. dba_hist_osstat oldidle,
  18. dba_hist_osstat newidle,
  19. dba_hist_osstat oldbusy,
  20. dba_hist_osstat newbusy,
  21. dba_hist_snapshot sn
  22. WHERE newread.stat_name </span>= <span style="color: #800000">‘</span><span style="color: #800000">physical reads</span><span style="color: #800000">‘</span><span style="color: #000000">
  23. AND oldread.stat_name </span>= <span style="color: #800000">‘</span><span style="color: #800000">physical reads</span><span style="color: #800000">‘</span><span style="color: #000000">
  24. AND newread.snap_id </span>=<span style="color: #000000"> sn.snap_id
  25. AND oldread.snap_id </span>= sn.snap_id - <span style="color: #800080">1</span><span style="color: #000000">
  26. AND newread.instance_number </span>=<span style="color: #000000"> sn.instance_number
  27. AND oldread.instance_number </span>=<span style="color: #000000"> sn.instance_number
  28. AND newread.dbid </span>=<span style="color: #000000"> sn.dbid
  29. AND oldread.dbid </span>=<span style="color: #000000"> sn.dbid
  30. AND newwrite.stat_name </span>= <span style="color: #800000">‘</span><span style="color: #800000">physical writes</span><span style="color: #800000">‘</span><span style="color: #000000">
  31. AND oldwrite.stat_name </span>= <span style="color: #800000">‘</span><span style="color: #800000">physical writes</span><span style="color: #800000">‘</span><span style="color: #000000">
  32. AND newwrite.snap_id </span>=<span style="color: #000000"> sn.snap_id
  33. AND oldwrite.snap_id </span>= sn.snap_id - <span style="color: #800080">1</span><span style="color: #000000">
  34. AND newwrite.instance_number </span>=<span style="color: #000000"> sn.instance_number
  35. AND oldwrite.instance_number </span>=<span style="color: #000000"> sn.instance_number
  36. AND newwrite.dbid </span>=<span style="color: #000000"> sn.dbid
  37. AND oldwrite.dbid </span>=<span style="color: #000000"> sn.dbid
  38. AND newdbtime.stat_name </span>= <span style="color: #800000">‘</span><span style="color: #800000">DB time</span><span style="color: #800000">‘</span><span style="color: #000000">
  39. AND olddbtime.stat_name </span>= <span style="color: #800000">‘</span><span style="color: #800000">DB time</span><span style="color: #800000">‘</span><span style="color: #000000">
  40. AND newdbtime.snap_id </span>=<span style="color: #000000"> sn.snap_id
  41. AND olddbtime.snap_id </span>= sn.snap_id - <span style="color: #800080">1</span><span style="color: #000000">
  42. AND newdbtime.instance_number </span>=<span style="color: #000000"> sn.instance_number
  43. AND olddbtime.instance_number </span>=<span style="color: #000000"> sn.instance_number
  44. AND newdbtime.dbid </span>=<span style="color: #000000"> sn.dbid
  45. AND olddbtime.dbid </span>=<span style="color: #000000"> sn.dbid
  46. AND newidle.stat_name </span>= <span style="color: #800000">‘</span><span style="color: #800000">IDLE_TIME</span><span style="color: #800000">‘</span><span style="color: #000000">
  47. AND oldidle.stat_name </span>= <span style="color: #800000">‘</span><span style="color: #800000">IDLE_TIME</span><span style="color: #800000">‘</span><span style="color: #000000">
  48. AND newidle.snap_id </span>=<span style="color: #000000"> sn.snap_id
  49. AND oldidle.snap_id </span>= sn.snap_id - <span style="color: #800080">1</span><span style="color: #000000">
  50. AND newidle.instance_number </span>=<span style="color: #000000"> sn.instance_number
  51. AND oldidle.instance_number </span>=<span style="color: #000000"> sn.instance_number
  52. AND newidle.dbid </span>=<span style="color: #000000"> sn.dbid
  53. AND oldidle.dbid </span>=<span style="color: #000000"> sn.dbid
  54. AND newbusy.stat_name </span>= <span style="color: #800000">‘</span><span style="color: #800000">BUSY_TIME</span><span style="color: #800000">‘</span><span style="color: #000000">
  55. AND oldbusy.stat_name </span>= <span style="color: #800000">‘</span><span style="color: #800000">BUSY_TIME</span><span style="color: #800000">‘</span><span style="color: #000000">
  56. AND newbusy.snap_id </span>=<span style="color: #000000"> sn.snap_id
  57. AND oldbusy.snap_id </span>= sn.snap_id - <span style="color: #800080">1</span><span style="color: #000000">
  58. AND newbusy.instance_number </span>=<span style="color: #000000"> sn.instance_number
  59. AND oldbusy.instance_number </span>=<span style="color: #000000"> sn.instance_number
  60. AND newbusy.dbid </span>=<span style="color: #000000"> sn.dbid
  61. AND oldbusy.dbid </span>=<span style="color: #000000"> sn.dbid
  62. ORDER BY sn.instance_number, sn.snap_id;</span>

 

根据dba_hist_osstat统计CPU占用情况

标签:11g   显示   oba   nic   报告   dba   value   习惯   情况   

人气教程排行