Oracle 依据进程的系统资源消耗查询对应的SQLID

相关说明:

ps aux
命令结果的第三列即是进程的CPU使用率
命令结果的第四列即是进程的内存使用率
这两列可以作为进程高系统资源消耗的依据

Oracle动态性能视图v$process的spid即是系统的进程PID信息
同时联查v$session,即可得到SQL_ID和PREV_SQL_ID

脚本间隔5秒搂取一次对应系统资源消耗的SQLID
根据SQLID可以进一步查询出对应的SQL文本和等待事件之类的信息

依据内存消耗搂取SQLID的最终SHELL脚本:

# 内存使用比例大于1%,间隔5秒
su - oracle
while true
do
    echo -e "$(date +%F-%T)\nMEM:\tPREV_SQL_ID        SQL_ID\n------- ------------- -------------"
    ps aux|grep -Ev '^USER|ora_'|grep '^oracle'|awk '{if($4>1) print $4","$2","}'|sort|while read line
    do
        MEM=$(echo -e "$line"|awk -F',' '{print $1}')
        PID=$(echo -e "$line"|awk -F',' '{print $2}')
        echo -ne "$MEM\t"
        echo -e "set pagesize 0 feedback off heading off
              select b.PREV_SQL_ID, b.SQL_ID 
                from v\$session b 
               where b.paddr = (SELECT addr 
                                  FROM v\$process c 
                                 WHERE c.spid = $PID);
                "|sqlplus -s / as sysdba|sort|uniq|grep -v '^$'
    done
    echo -e '\n'
    sleep 5
done

依据CPU消耗搂取SQLID的最终SHELL脚本:

# CPU使用比例大于1%,间隔5秒
su - oracle
while true
do
    echo -e "$(date +%F-%T)\nCPU:\tPREV_SQL_ID        SQL_ID\n------- ------------- -------------"
    ps aux|grep -Ev '^USER|ora_'|grep '^oracle'|awk '{if($3>1) print $3","$2","}'|sort|while read line
    do
        CPU=$(echo -e "$line"|awk -F',' '{print $1}')
        PID=$(echo -e "$line"|awk -F',' '{print $2}')
        echo -ne "$CPU\t"
        echo -e "set pagesize 0 feedback off heading off
              select b.PREV_SQL_ID, b.SQL_ID 
                from v\$session b 
               where b.paddr = (SELECT addr 
                                  FROM v\$process c 
                                 WHERE c.spid = $PID);
                "|sqlplus -s / as sysdba|sort|uniq|grep -v '^$'
    done
    echo -e '\n'
    sleep 5
done

[TOC]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值