监控文件系统使用率的脚本

 

简易模版

#!/bin/bash
mntlist = "/home /orahome /ora1 /ora2 /"
for ml in $ mntlist
do 
echo $ml
usedSpc = $(df -h $ml | awk '{print $5}' |grep -v capacity |cut -d "%" -f1 -)
BOX = $(uname -a | awk '{print $2}')
#
case $usedSpc in
[0-9])
arcStat ="relax,lots if disk space : $usedSpc"
;;
[1-7][0-9])
arcStat ="disk space okay : $usedSpc"
;;
[8][0-9])
arcStat ="space getting low : $usedSpc"
;;
[9][0-9])
arcStat ="warning,running out of space : $usedSpc"
echo $arcStat $ml |mailx -S "space on: $BOX"  xxxxx@xx.com
;;
[1][0][0])
arcStat ="update resume,no space left: $usedSpc"
echo $arcStat $ml |mailx -S "space on: $BOX"  xxxxx@xx.com
;;
*)
arcStat="huh?:$usedSpc"
esac
#
BOX = $(uname -a | awk '{print $2}')
echo $arcStat
#
done
#
exit 0

crontab -l 
7 * * * *  /root/filesp.bsh 1 >/root/filesp.log 2>&1

 

另外,usedSpc 根据操作系统不同,取的方式也不同,

usedSpc = $(df -h $ml |awk '{print $5}' |grep -v capacity |cut -d "%" -f1 -)

usedSpc = $(df -h $ml |grep %|grep -v Use|awk '{print $4}' |cut -d "%" -f1 -)

 

 

显示服务器上消耗CPU最多的十个进程

ps -e -o pcpu,pid,user,tty,args | sort -n -k 1 -r |head

显示最小号内存资源的进程

ps -e -o pmem,pid,user,tty,args | sort -n -k 1 -r | head

 

solaris 中,CPU和内存消耗最多的

prstat

 

确认每秒 I/O 率

time dd if=/u01/dbfile/ora12c/system01.dbf of=test.out

如果仅仅需要估算读取速率,可以对输出文件使用/dev/null (不进行写入运算)

time dd if=/u01/dbfile/ora12c/system01.dbf of=/dev/null

 

检测网络密集型进程

 

netstat -ptc

 

根据操作系统进程确认oracle进程的类型

select
    'USERNAME    : '||s.USERNAME    || chr(10)||
    'SCHEMA      : '||s.SCHEMANAME  || chr(10)||
    'OSUSER      : '||s.OSUSER      || chr(10)||
    'MODUEL      : '||s.PROGRAM     || chr(10)||
    'ACTION      : '||s.SCHEMANAME  || chr(10)||
    'CLINET_INFO : '||s.OSUSER      || chr(10)||
    'PROGRAM     : '||s.PROGRAM     || chr(10)||
    'SPID        : '||p.SPID        || chr(10)||
    'SID         : '||s.SID         || chr(10)||
    'SERIAL#     : '||s.SERIAL#     || chr(10)||
    'KILL_STRING : '||''''||s.SID||','||s.SERIAL#||'''' || chr(10)||
    'MACHINE     : '||s.MACHINE     || chr(10)||
    'TYPE        : '||s.TYPE        || chr(10)||
    'TERMINAL    : '||s.TERMINAL    || chr(10)||
    'SQL_ID      : '||q.SQL_ID      || chr(10)||
    'CHILD_NUM   : '||q.CHILD_NUMBER|| chr(10)||
    'SQL_TEXT    : '||q.SQL_TEXT
from v$session s,v$process p ,v$sql q
where s.PADDR=p.ADDR
and p.SPID='&PID_FROM_OS'
and s.SQL_ID=q.SQL_ID(+)
and s.STATUS='ACTIVE';

 

如果知道操作系统ID,可以使用 oradebug 工具显示消耗资源最多的SQL

OS的ID为 23651

SQL> oradebug setospid 23651
显示出与该进程相关的SQL语句(如果有的话)

SQL> oradebug current_sql;
如果有一条SQL语句与该进程优化,就会显示出来

 

posted @ 2022-07-24 11:34  喝水鱼  阅读(87)  评论(0)    收藏  举报