根据dba_hist_osstat统计CPU占用情况
在11g里面,视图dba_hist_osstat用来记录OS级别的time时间指标。视图dba_hist_osstat_name显示了相关的指标名称。
SYS@134.32.114.1:/dzgddb> select * from DBA_HIST_OSSTAT_NAME;
DBID STAT_ID STAT_NAME
--------------- --------------- ----------------------------------------------------------------
NUM_CPUS
IDLE_TIME
BUSY_TIME
USER_TIME
SYS_TIME
IOWAIT_TIME
NICE_TIME
RSRC_MGR_CPU_WAIT_TIME
LOAD
NUM_CPU_CORES
NUM_CPU_SOCKETS
PHYSICAL_MEMORY_BYTES
VM_IN_BYTES
VM_OUT_BYTES
TCP_SEND_SIZE_MIN
TCP_SEND_SIZE_DEFAULT
TCP_SEND_SIZE_MAX
TCP_RECEIVE_SIZE_MIN
TCP_RECEIVE_SIZE_DEFAULT
TCP_RECEIVE_SIZE_MAX
GLOBAL_SEND_SIZE_MAX
GLOBAL_RECEIVE_SIZE_MAX
rows selected.
如上,nmu_cpu_cores是指cpu核心数,本例是32;num_cpus是指cpu核心线程数,本例是64;num_cpu_sockets是指cpu路数,也指cpu主板数,本例是4。
关键的计算公式是:
%User = USER_TIME/ (BUSY_TIME+IDLE_TIME)*
%Sys = SYS_TIME/ (BUSY_TIME+IDLE_TIME)*
%Idle = IDLE_TIME/ (BUSY_TIME+IDLE_TIME)*100
BUSY_TIME + IDLE_TIME = ELAPSED_TIME * CPU_COUNT
鉴于报表习惯,将关键指标%Idle换算为%CPU,则:
%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占用情况,顺带附上另外几个关键指标
SELECT sn.instance_number,
sn.snap_id,
to_char(sn.end_interval_time, 'YYYY-MM-DD HH24:MI') AS snaptime,
newread.value - oldread.value "physical reads",
newwrite.value - oldwrite.value "physical writes",
round((newdbtime.value - olddbtime.value) / / , ) "DB time(min)",
round((newbusy.value - oldbusy.value) /
((newidle.value - oldidle.value) +
(newbusy.value - oldbusy.value)) * ,
) "CPU(%)"
FROM dba_hist_sysstat oldread,
dba_hist_sysstat newread,
dba_hist_sysstat oldwrite,
dba_hist_sysstat newwrite,
dba_hist_sys_time_model olddbtime,
dba_hist_sys_time_model newdbtime,
dba_hist_osstat oldidle,
dba_hist_osstat newidle,
dba_hist_osstat oldbusy,
dba_hist_osstat newbusy,
dba_hist_snapshot sn
WHERE newread.stat_name = 'physical reads'
AND oldread.stat_name = 'physical reads'
AND newread.snap_id = sn.snap_id
AND oldread.snap_id = sn.snap_id -
AND newread.instance_number = sn.instance_number
AND oldread.instance_number = sn.instance_number
AND newread.dbid = sn.dbid
AND oldread.dbid = sn.dbid
AND newwrite.stat_name = 'physical writes'
AND oldwrite.stat_name = 'physical writes'
AND newwrite.snap_id = sn.snap_id
AND oldwrite.snap_id = sn.snap_id -
AND newwrite.instance_number = sn.instance_number
AND oldwrite.instance_number = sn.instance_number
AND newwrite.dbid = sn.dbid
AND oldwrite.dbid = sn.dbid
AND newdbtime.stat_name = 'DB time'
AND olddbtime.stat_name = 'DB time'
AND newdbtime.snap_id = sn.snap_id
AND olddbtime.snap_id = sn.snap_id -
AND newdbtime.instance_number = sn.instance_number
AND olddbtime.instance_number = sn.instance_number
AND newdbtime.dbid = sn.dbid
AND olddbtime.dbid = sn.dbid
AND newidle.stat_name = 'IDLE_TIME'
AND oldidle.stat_name = 'IDLE_TIME'
AND newidle.snap_id = sn.snap_id
AND oldidle.snap_id = sn.snap_id -
AND newidle.instance_number = sn.instance_number
AND oldidle.instance_number = sn.instance_number
AND newidle.dbid = sn.dbid
AND oldidle.dbid = sn.dbid
AND newbusy.stat_name = 'BUSY_TIME'
AND oldbusy.stat_name = 'BUSY_TIME'
AND newbusy.snap_id = sn.snap_id
AND oldbusy.snap_id = sn.snap_id -
AND newbusy.instance_number = sn.instance_number
AND oldbusy.instance_number = sn.instance_number
AND newbusy.dbid = sn.dbid
AND oldbusy.dbid = sn.dbid
ORDER BY sn.instance_number, sn.snap_id;
根据dba_hist_osstat统计CPU占用情况的更多相关文章
- 关于linux的进程中的各个线程cpu占用情况的分析和查看
我们常常会在新开的服搭建一个游戏的server,有时候要进行压力測试,那么怎样来看呢,一般我们会通过top命令查看各个进程的cpu和内存占用情况,获得到了我们的进程id,然后我们或许会通过pstack ...
- linux下top命令查看cpu占用情况
可以通过 top 命令来查看 CPU 使用状况.运行 top 命令后,CPU 使用状态会以全屏的方式显示,并且会处在对话的模式 -- 用基于 top 的命令,可以控制显示方式等等.退出 top 的命令 ...
- 查看java线程cpu占用情况的脚本
#!/bin/bash [ $# -ne ] && exit jstack $ >/tmp/jstack.log -o THREAD,tid,time|sort -k2nr| s ...
- 查询进程内存,cpu占用情况。僵尸进程
查使用内存最多的5个进程:ps aux | head -1 && ps aux | grep -v USER | sort -nr -k 4 | head -5 查使用CPU最多的5个 ...
- Visual Studio Profiler 跟踪检查每个exe dll 性能 执行时间 CPU占用情况的方法
- SQLSERVER排查CPU占用高的情况
SQLSERVER排查CPU占用高的情况 今天中午,有朋友叫我帮他看一下数据库,操作系统是Windows2008R2 ,数据库是SQL2008R2 64位 64G内存,16核CPU 硬件配置还是比较高 ...
- 查看服务器内存、CPU、网络等占用情况的命令--汇总
搭建测试环境过程中,需要对正在使用的aws服务器(实际这是一台虚拟出来的服务器),查看它在运行脚本,启动脚本时的内存,CPU,网络等使用情况 1.查看服务器cpu内核个数: -cat 每个物理cpu中 ...
- sql server cpu占用过高优化
SQLSERVER排查CPU占用高的情况 今天中午,有朋友叫我帮他看一下数据库,操作系统是Windows2008R2 ,数据库是SQL2008R2 64位 64G内存,16核CPU 硬件配置还是比较高 ...
- Linux下内存占用和CPU占用的计算
->使用free命令查看内存使用情况: 1.echo 3 > /proc/sys/vm/drop_caches 2.free 或者使用cat /proc/yourpid/status 来查 ...
随机推荐
- Mac上ssh无法登录的问题
今天起来发现阿里云ssh无法登录了 出现一条警告: WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! 开始打算清理know_hosts发现失败,清了根本 ...
- 必须熟悉的vim快捷键操作
转载请表明出处http://www.dabu.info/?p=801 Vim/Vi 没有菜单,只有命令 Vim/Vi 工作模式介绍:插入模式 和 命令模式 是vi的两个基本模式.——插入模式 ,是用 ...
- leetcode-004 insertion sort list
package leetcode; class ListNode { int val; ListNode next; ListNode(int x) { val = x; next = null; } ...
- Bzoj1479: [Nerrc1997]Puncher打孔机
1479: [Nerrc1997]Puncher打孔机 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 22 Solved: 14[Submit][Sta ...
- UVa 10041 - Vito's Family
题目大意:给出一些点,找到一个位置使这个位置到所有的点的距离的和最短. 很明显,排序,找中位数.关于中位数:有n个从小到大的数,k=(n+1)/2,若n为奇数,k为中位数,若n为偶数,k为中间那两个数 ...
- Grunt实现自动化单元测试
http://www.tuicool.com/articles/rAnaYvn 直奔主题: 一.安装grunt-contrib-qunit npm install grunt-contrib-qu ...
- IDEA Show Line Number
刚开始用IDEA,经常发现右侧没有显示行号,然后去右键选一下,就显现了 一直没有留意这个现象,刚用vim想删几行数据代码,突然发现没有行号了 明明记得刚刚才右键显示了的 好吧,有行号用着比较顺心了.. ...
- iOS 之 内存管理
凡是alloc copy mutablecopy init 声明的变量,都需要通过手动的方式进行释放,realse. 如果 copy一个对象,则拥有了拷贝的对象,要负责释放. 如果 保持(retain ...
- social relation & recommender system
由于社交网络盛行,现在许多关于推荐系统的研究都考虑了如何使用social relation来改进推荐系统.虽然有很多论文都成功的使用social relation改进了推荐效果,然而,也有一些尝试失败 ...
- HDU2066:一个人的旅行(Dijkstra)
Problem Description 虽然草儿是个路痴(就是在杭电待了一年多,居然还会在校园里迷路的人,汗~),但是草儿仍然很喜欢旅行,因为在旅途中 会遇见很多人(白马王子,^0^),很多事,还能丰 ...