使用shell脚本查看数据库负载情况(第二篇)(r3笔记第92天)
时间:2022-05-04
本文章向大家介绍使用shell脚本查看数据库负载情况(第二篇)(r3笔记第92天),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
在之前写了一个shell脚本,能够得到一个基于时间点的数据库负载报告。 使用shell脚本查看数据库负载情况 http://blog.itpub.net/23718752/viewspace-1168027/ 在生产环境中快照的生成频率可能10分钟或者半个小时就会生成,频率要快些,使用原先的脚本执行起来会有一定的延时。 想查看在快照的时间间隔内数据库的负载情况。这样能够更高效的定位某个问题。比如10点到11点,每10分钟生成一次快照。可能问题发生在10:40~10:50,如果通过一个小时的快照就不一定能够准确的定位问题。 我尝试了如下的脚本,能够很清晰地 列出快照信息和数据库的负载情况。
sqlplus -s $DB_CONN_STR@$SH_DB_SID <<EOF
break on db_name
set pages 50
set linesize 100
prompt
prompt Current Instance
prompt ~~~~~~~~~~~~~~~~
select d.dbid dbid
, d.name db_name
, i.instance_number inst_num
, i.instance_name inst_name
from v$database d,
v$instance i;
select
db_name
,begin_snap
,end_snap
,snapdate
,lvl
,round(((END_INTERVAL_TIME+0)-(BEGIN_INTERVAL_TIME+0 ))*24*60) duration_mins
,round((select round((sum(e.value) -
sum(b.value)) / 1000000 /60,2) dbtime
FROM DBA_HIST_SYS_TIME_MODEL e, DBA_HIST_SYS_TIME_MODEL b
WHERE
e.STAT_NAME = 'DB time'
and b.snap_id=begin_snap
and e.snap_id =end_snap
AND b.STAT_NAME = 'DB time'
group by e.snap_id,b.snap_id)) dbtime
from
(
select
di.db_name db_name
, s.snap_id begin_snap
,lead(s.snap_id ,1,s.snap_id ) over(order by s.end_interval_time ) end_snap
, to_char(s.end_interval_time,'dd Mon YYYY HH24:mi') snapdate
, s.snap_level lvl
,s.end_interval_time
,s.begin_interval_time
from dba_hist_snapshot s
, dba_hist_database_instance di
where
( di.dbid,di.instance_number) in
(select d.dbid dbid
, i.instance_number inst_num
from v$database d,
v$instance i)
and di.dbid = s.dbid
and di.instance_number = s.instance_number
and di.startup_time = s.startup_time
and to_char(END_INTERVAL_TIME,'yyyymmdd')='$1'
and EXTRACT(HOUR FROM END_INTERVAL_TIME) between $2-1 and $3+1
order by db_name, instance_name, snap_id
);
EOF
脚本的执行情况如下,生成的快照信息会前后顺延一个小时,比如查看10点到11点的信息,会列出9点到12点的信息。
> ksh showsnap2.sh 20141222 10 11
Current Instance
~~~~~~~~~~~~~~~~
DBID DB_NAME INST_NUM INST_NAME
---------- --------- ---------- ----------------
3100077577 XXXXXX 1 XXXXXX
DB_NAME BEGIN_SNAP END_SNAP SNAPDATE LVL DURATION_MINS DBTIME
--------- ---------- ---------- ----------------- ---------- ------------- ----------
XXXXXX 24597 24598 22 Dec 2014 09:00 1 10 374
24598 24599 22 Dec 2014 09:10 1 10 180
24599 24600 22 Dec 2014 09:20 1 10 193
24600 24601 22 Dec 2014 09:30 1 10 114
24601 24602 22 Dec 2014 09:40 1 9 156
24602 24603 22 Dec 2014 09:50 1 10 171
24603 24604 22 Dec 2014 10:00 1 10 220
24604 24605 22 Dec 2014 10:10 1 10 214
24605 24606 22 Dec 2014 10:20 1 10 256
24606 24607 22 Dec 2014 10:30 1 10 270
24607 24608 22 Dec 2014 10:40 1 10 1288
24608 24609 22 Dec 2014 10:50 1 10 346
24609 24610 22 Dec 2014 11:00 1 10 350
24610 24611 22 Dec 2014 11:10 1 10 398
24611 24612 22 Dec 2014 11:20 1 10 355
24612 24613 22 Dec 2014 11:30 1 10 295
24613 24614 22 Dec 2014 11:40 1 10 318
24614 24615 22 Dec 2014 11:50 1 10 338
24615 24616 22 Dec 2014 12:00 1 10 355
24616 24617 22 Dec 2014 12:10 1 10 288
24617 24618 22 Dec 2014 12:20 1 10 257
24618 24619 22 Dec 2014 12:30 1 10 255
24619 24620 22 Dec 2014 12:40 1 10 255
24620 24620 22 Dec 2014 12:50 1 10 0
可以很清晰的看到在10:40~10:550的时候,负载异常的高,可以针对这种情况抓取一个awr报告来详细的分析一下。
- finecms同时调用子栏目和子栏目的文章怎么操作
- 群体智能算法-黏菌寻找食物最优路线行为模拟 2
- thinkcmf安装教程与目录结构详解 快速上手版
- finecms如何批量替换文章中的关键词?
- dedecms批量修改文章为待审核稿件怎么操作
- 群体智能算法-黏菌寻找食物最优路线行为模拟
- finecms设置伪静态后分享到微信不能访问怎么处理
- composer安装其实可以很简单 两行命令就解决了
- 章神的私房菜之数据预处理
- 如何调用finecms指定栏目的描述关键词
- finecms栏目文章页seo设置
- Logistic回归实战篇之预测病马死亡率(一)
- DedeCMS后台500错误一种原因是不支持PHP5.3、5.4及以上版本
- finecms指定从第几篇文章开始调用5条记录,并调用文章所在栏目
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 1.Dubbo 常见错误及解决方法
- SpringBoot学习一:创建工程、pom文件
- SpringBoot学习二:基础配置
- Spring Boot 学习三:静态资源、整合 Thymeleaf 页面模板、@RestControllerAdvice
- SpringBoot学习四:日志框架、SpringBoot自动化配置
- SpringBoot学习五:错误处理、跨域支持
- Spring Security安全
- SpringBoot定时任务
- MySQL优化以及索引的使用
- 前端表单提交String类型数据后端转日期数据
- Java - CentOS下JDK的安装与配置
- yum安装与配置 Tomcat
- org.apache.ibatis.ognl.OgnlException: source is null for getProperty(null, “xxxx“)] with root cause
- UnsatisfiedDependencyException
- Java8 Collectors.toMap的key重复