日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux同时链接多个库,通过Shell脚本同时监控多个数据库负载

發(fā)布時(shí)間:2025/5/22 linux 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux同时链接多个库,通过Shell脚本同时监控多个数据库负载 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在平時(shí)的工作中,需要管理的數(shù)據(jù)庫還是很多的,因?yàn)檫h(yuǎn)程和權(quán)限的關(guān)系,訪問不了一些圖形工具,有時(shí)候做檢查的時(shí)候感覺都是一個(gè)串行的過程,這樣檢查針對性就不夠強(qiáng)了,比如我們不知道在檢查的這個(gè)時(shí)間范圍內(nèi),數(shù)據(jù)庫的負(fù)載是在什么范圍內(nèi),如果有些庫的負(fù)載極高,就需要格外注意,進(jìn)行更有針對性的分析和檢查,要不假設(shè)有20個(gè)庫需要同時(shí)管理,沒有重點(diǎn),眉毛胡子一把抓還是很頭疼的。查看數(shù)據(jù)庫的負(fù)載還是一個(gè)不錯的指標(biāo),我們可以根據(jù)這個(gè)基準(zhǔn)來同時(shí)監(jiān)控多個(gè)數(shù)據(jù)庫,基本能夠在一個(gè)大屏幕內(nèi)顯示就可以了。

自己專門寫了Shell腳本,發(fā)現(xiàn)效果還是不錯的。這樣數(shù)據(jù)庫的負(fù)載就很清晰了,哪些庫在忙需要重點(diǎn)關(guān)注,哪些庫還基本處于休眠狀態(tài),可以不用太關(guān)注。

實(shí)現(xiàn)的腳本如下:

#getload.sh

function showsnap

{

sqlplus -s $1 <

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 "%-65s\n","DB workload? "

print "#################################################################"

}

{

printf "%-65s\n",$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

第二個(gè)腳本是集成這些輸出結(jié)果的,使用動態(tài)地方式靈活指定監(jiān)控的指標(biāo),

#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

比如我們有一個(gè)腳本getload.sh是專門監(jiān)控?cái)?shù)據(jù)庫負(fù)載的,就可以運(yùn)行腳本 showall.sh getload即可。如果要查看表空間使用情況,我們有腳本showtsps.sh,就運(yùn)行腳本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

總結(jié)

以上是生活随笔為你收集整理的linux同时链接多个库,通过Shell脚本同时监控多个数据库负载的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。