通过shell脚本同时监控多个数据库负载(r5笔记第14天)
时间:2022-05-04
本文章向大家介绍通过shell脚本同时监控多个数据库负载(r5笔记第14天),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
在平时的工作中,需要管理的数据库还是很多的,因为远程和权限的关系,访问不了一些图形工具,有时候做检查的时候感觉都是一个串行的过程,这样检查针对性就不够强了,比如我们不知道在检查的这个时间范围内,数据库的负载是在什么范围内,如果有些库的负载极高,就需要格外注意,进行更有针对性的分析和检查,要不假设有20个库需要同时管理,没有重点,眉毛胡子一把抓还是很头疼的。查看数据库的负载还是一个不错的指标,我们可以根据这个基准来同时监控多个数据库,基本能够在一个大屏幕内显示就可以了。 自己专门写了脚本,发现效果还是不错的。这样数据库的负载就很清晰了,哪些库在忙需要重点关注,哪些库还基本处于休眠状态,可以不用太关注。
实现的脚本如下:
#getload.sh
function showsnap
{
sqlplus -s $1 <<EOF
break on db_name
set pages 50
set linesize 65
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
begin_snap
,end_snap
,snapdate
,round(((END_INTERVAL_TIME+0)-(BEGIN_INTERVAL_TIME+0 ))*24*60) dur_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
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.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')='$2'
and EXTRACT(HOUR FROM END_INTERVAL_TIME) between $3-1 and $4+1
order by db_name, instance_name, snap_id
);
EOF
}
curr_hr=`date '+%H'`
pre_hr=`expr $curr_hr - 3`
DATE=`date '+%Y%m%d'`
#echo $curr_hr $pre_hr
SH_DB_SID=`echo "$1"|awk -F@ '{print $2}'|tr '[a-z]' '[A-Z]'`
showsnap $1 $DATE $pre_hr $curr_hr > tmp_${SH_DB_SID}_${DATE}_load
function format_rpt
{
awk '
BEGIN{
print "#################################################################"
printf "%-65sn","DB workload "
print "#################################################################"
}
{
printf "%-65sn",$0
}' $1 > $2
}
format_rpt tmp_${SH_DB_SID}_${DATE}_load ${SH_DB_SID}_${DATE}_load
rm tmp_${SH_DB_SID}_${DATE}_load
cat ${SH_DB_SID}_${DATE}_load
第二个脚本是集成这些输出结果的,使用动态地方式灵活指定监控的指标,
#showall.sh
#get db load input getload
#get db tsps input showtsps
act_type=$1
ksh ${act_type}.sh xxx/xxx@xxxx > tmp_b4 cat b7
比如我们有一个脚本getload.sh是专门监控数据库负载的,就可以运行脚本 showall.sh getload即可。如果要查看表空间使用情况,我们有脚本showtsps.sh,就运行脚本showall.sh showtsps即可。DB_CONN_STR=XXX/XXX
#get db load input getload
#get db tsps input showtsps
act_type=$1
#### DB01
SH_DB_SID=XXX
ksh ${act_type}.sh $DB_CONN_STR@$SH_DB_SID > a1
#### DB02
SH_DB_SID=XXX
ksh ${act_type}.sh $DB_CONN_STR@$SH_DB_SID > a2
#### DB03
SH_DB_SID=XXX
ksh ${act_type}.sh $DB_CONN_STR@$SH_DB_SID > a3
cat a1
paste a2 a3
paste a4 a5
paste a6 a7
cat a8
- 【Spring开发】—— Spring Core
- Java魔法堂:找外援的利器——Runtime.exec详解
- win10的80端口被system占用的问题
- 【Spring开发】—— AOP之方法级拦截
- eclipse tomcat下网页修改不生效
- 【插件开发】—— 14 Site is incorrect!编辑器启动报错!
- Java魔法堂:Date与日期时间格式化
- Java魔法堂:打包知识点之META-INF/MAINFEST.MF
- WordPress快速建站
- 大数据时代下的生活
- 【Spring实战】—— 1 入门讲解
- 博客园小技巧
- JS魔法堂:关于元素位置和鼠标位置的属性
- MyBatis魔法堂:Insert操作详解(返回主键、批量插入)
- 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 数组属性和方法
- Byte Buddy 基础知识
- 两种在SAP Cloud Application Studio里通过编程对C4C UI字段赋值的方法
- 如何使用 BTrace v.2.0.1
- 三分钟写一个 Java 多线程
- 使用纯粹的ABAP位操作实现两个整数相加
- 如何给SAP Cloud for Customer UI上的字段添加自定义校验逻辑
- guide-rpc-framework 源码学习
- 如何参与一个开源项目(多图)
- 微信小程序支付服务端.net core实现,简单直接
- PBE加密 .net 实现
- .net Core 图片验证码 基于SkiaSharp实现
- 解决git/github下载速度缓慢的问题总汇------转
- C语言程序框架注释的一种模板
- Kryo 入门指南
- C# 通过T4自动生成代码