根据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 来查 ...
随机推荐
- iOS开发者需要的5款排版工具
Attributed String Creator Attributed String Creator可以从你的格式化文本中自动生成原生的Objective-C代码.你可以将文本写入.粘贴或者导入At ...
- iOS通过代码关闭程序
//-------------------------------- 退出程序 -----------------------------------------// - (void)exitAppl ...
- Druid的简介及功能
Druid首先是一个数据库连接池.Druid是目前最好的数据库连接池,在功能.性能.扩展性方面,都超过其他数据库连接池,包括DBCP.C3P0.BoneCP.Proxool.JBoss DataSou ...
- el5,6,7的ntpdate服务
在el5里没有ntpdate服务 在el6里有ntpdate服务 在el7里有ntpdate服务
- 键盘上下键时间 js
ocument.onkeydown=function(event){ var e = event || window.event || arguments.callee.caller.argument ...
- java求两个集合的差集
public static void main(String[] args) {Set set = new HashSet();Set set1 = new HashSet();set.add(&qu ...
- UILable添加事件
原文:http://blog.sina.com.cn/s/blog_9e8867eb0101dk6t.html 先需要声明的是:UILabel或UIImageView的 userInteraction ...
- spark连接mongodb
1.添加依赖 hadoop和mongodb的连接器 <dependency> <groupId>org.mongodb.mongo-hadoop</groupId> ...
- 搭建自己的BT下载平台服务器
[原理基础] BT(Bit Torren比特流)是由国外的一名叫Bram Cohen的程序员开发的下载软件,可以说它是目前网络是非常流行的一个多点下载的P2P软件,它最显著的特点就是:下载的人越多,速 ...
- 内容页获取当前栏目的上一级栏目ID
发现V9在列表页可以用$parentid 得到当前栏目的父级ID,但在内容页这个函数的值却为空了,需要按下面的写法才行, V9 在内容页获取当前栏目的上一级栏目ID {$CAT[parentid]} ...