根据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 来查 ...
随机推荐
- Linux监控体系
监控体系 zabbix 博客:www.abcdocker.com 微信公众号:abcdocker 笔者QQ:381493251 Abcdocker交流群:454666672 如果遇到什么问题可以进群询 ...
- IT技术网站汇总
首先是比较著名的博客型的网站!一般来说在国外比较著名的博客基本上都是比较有影响力发起的或者建立的经常发布一些比较有思考力深入分析的文章! 博客媒体网站 1.www.ArsTechnica.com 2. ...
- (简单) HDU 5154 Harry and Magical Computer,图论。
Description In reward of being yearly outstanding magic student, Harry gets a magical computer. When ...
- iOS开发之监听键盘高度的变化
最近做的项目中,有一个类似微博中的评论转发功能,屏幕底端有一个输入框用textView来做,当textView成为第一响应者的时候它的Y值随着键盘高度的改变而改变,保证textView紧贴着键盘,但又 ...
- 路由器、交换机学习之IP地址、使用网络掩码划分子网
局域网子网划分 对于C类IP地址来说(192.168.1.X,其中前面的192.168.1为网络号,后面的X为主机号,这样的网络中可以有254台主机,其中.0为局域网地址,.255为广播地址)进行子网 ...
- Oracle安装卸载
http://study.163.com/course/courseLearn.htm?courseId=932016#/learn/video?lessonId=1115367&course ...
- DP——由蒟蒻到神犇的进阶之路
开始更新咯 DP专题[题目来源BZOJ] 一.树形DP 1.bzoj2286消耗战 题解:因为是树形结构,一个点与根节点不联通,删一条边即可, 于是我们就可以简化这棵树,把有用的信息建立一颗虚树,然后 ...
- poj 3641 ——2016——3——15
传送门:http://poj.org/problem?id=3461 题目大意:给你两个字符串p和s,求出p在s中出现的次数. 题解:这一眼看过去就知道是KMP,作为模板来写是最好不过了.... 这道 ...
- Vue 响应式总结
有些时候,不得不想添加.修改数组和对象的值,但是直接添加.修改后getter.setter又失去了. 由于 JavaScript 的限制, Vue 不能检测以下变动的数组: 当你利用索引直接设置一个项 ...
- AFNetWorking 之 Get/Post 请求的使用
1. Get 与 Post 比较 GET请求:简单业务.明文发送 POST请求:上传文件,重要信息.加密信息,.大数据信息. 2. 序列化 默认是JSon格式. // 请求的序列化 manager.r ...