监控文件系统使用率的脚本
简易模版
#!/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语句与该进程优化,就会显示出来

浙公网安备 33010602011771号