oracle服务器通过进程查找对应的sql语句

ops/2025/3/6 6:40:34/

背景:公司业务侧DB服务器经常卡顿,编写简单的脚本去定时查找占用CPU或内存高的进程,并通过Top10的占用CPU进程找到可能对应的sql语句。

1、切换到oracle用户下,并新建一个放脚本的目录

</u2/oracle/product/12.2.0/dbhome_1> ll scripts/
-rw-r--r-- 1 oracle oinstall   903 Mar  4 19:46 T100_Check_CMIO.sh
-rw-r--r-- 1 oracle oinstall   548 Mar  4 17:57 T100_DB_CKSQL.sh
</u2/oracle/product/12.2.0/dbhome_1/scripts> cat T100_Check_CMIO.sh
#!/bin/bashDate=`date`
echo "当前检查时间为 $Date" >>`date +%Y-%m-%d_%H`.log
echo '=========占用CPU最多的十个进程=========' >> `date +%Y-%m-%d_%H`.log
ps aux|head -1 >> `date +%Y-%m-%d_%H`.log &&ps aux|grep -v PID|sort -rn -k +3|head >> `date +%Y-%m-%d_%H`.log
for i in `ps aux|grep -v PID|sort -rn -k +3|head |awk {'print $2'}`
doecho '占用CPU前十进程对应SQL语句'>>`date +%Y-%m-%d_%H`.logsh /u2/oracle/product/12.2.0/dbhome_1/scripts/T100_DB_CKSQL.sh $i >> `date +%Y-%m-%d_%H`.log
doneecho '==============分割线==========================' >> `date +%Y-%m-%d_%H`.log
echo '==============分割线==========================' >> `date +%Y-%m-%d_%H`.logecho '=========占用内存最多的五个进程=========' >> `date +%Y-%m-%d_%H`.log
ps aux|head -1 >> `date +%Y-%m-%d_%H`.log && ps aux|grep -v PID|sort -rn -k +4|head -5>> `date +%Y-%m-%d_%H`.log
</u2/oracle/product/12.2.0/dbhome_1/scripts> cat T100_DB_CKSQL.sh
#!/bin/bash
source /u1/usr/oracle/.profile
sqlplus -S / as sysdba <<EOF
spool /u2/oracle/product/12.2.0/dbhome_1/scripts/sql.log
select a.sql_text,a.sql_idFrom v\$sqltext awhere a.hash_value||a.address=(SELECT DECODE(sql_hash_value,0,prev_hash_value,sql_hash_value)||DECODE(sql_hash_value,0,prev_sql_addr,sql_address)FROM v\$session bWHERE b.paddr = (SELECT addr FROM v\$process c WHERE c.spid = $1))order by piece  ;
spool off
EOF

2、创建定时任务,每28分钟执行一次脚本

</u2/oracle/product/12.2.0/dbhome_1/scripts> crontab -l
*/28 * * * * sh /u2/oracle/product/12.2.0/dbhome_1/scripts/T100_Check_CMIO.sh & > /dev/null 2>&1

3、查看输出结果

</u2/oracle/product/12.2.0/dbhome_1/scripts> cd /u1/usr/oracle/
</u1/usr/oracle> ll
-rw-r--r-- 1 oracle oinstall   6775 Mar  4 19:56 2025-03-04_19.log
-rw-r--r-- 1 oracle oinstall  19796 Mar  4 20:56 2025-03-04_20.log
</u1/usr/oracle> cat 2025-03-04_19.log
当前检查时间为 Tue Mar  4 19:56:02 CST 2025
=========占用CPU最多的十个进程=========
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
oracle    94014  154  0.0 6732168 19912 ?       Rs   19:56   0:01 oracletoptst (LOCAL=NO)
oracle    90481 99.3  0.0 225893548 39624 ?     Rs   19:50   5:37 oracletopprd (LOCAL=NO)
oracle    94004 95.5  0.0 225886380 32536 ?     Rs   19:55   0:01 oracletopprd (LOCAL=NO)
oracle    93586 87.9  0.0 226243932 367400 ?    Rs   19:55   0:32 oracletopprd (LOCAL=NO)
oracle    91101 80.7  0.0 225952308 46336 ?     Ss   19:51   3:42 oracletopprd (LOCAL=NO)
oracle    91111 79.3  0.0 225952460 45512 ?     Rs   19:51   3:38 oracletopprd (LOCAL=NO)
root      92562 70.9  0.0 128432  3280 ?        S    03:08 715:01 exp                      owner=dsdata file=dsdata.dmp log=exp_dsdata.log
oracle    81273 69.2  0.0 225909400 44188 ?     Rs   19:38  11:47 oracletopprd (LOCAL=NO)
oracle    76661 68.7  0.0 225889548 38272 ?     Ss   19:31  16:38 oracletopprd (LOCAL=NO)
oracle    92724 57.2  0.0 226129124 257092 ?    Rs   19:54   0:40 oracletopprd (LOCAL=NO)
占用CPU前十进程对应SQL语句no rows selected占用CPU前十进程对应SQL语句no rows selected占用CPU前十进程对应SQL语句no rows selected占用CPU前十进程对应SQL语句SQL_TEXT                                                         SQL_ID
---------------------------------------------------------------- -------------
select dzba004, dzba010, dzba005 from   dzba_t where dzba001 = : 4dpv3g3rs0k7r
p1 AND dzba002 = :p2 AND dzba003 = :p3 AND dzba010 = 's'         4dpv3g3rs0k7r简略显示


 


http://www.ppmy.cn/ops/163524.html

相关文章

【TCP/IP协议栈】1. TCP/IP协议栈概述(体系、四/五层模型、IP、MAC)

个人学习记录&#xff0c;复习用&#xff0c;若侵删。 https://www.yuque.com/u41716106/ni1clp/pllgo1gkoyhcvf8w?singleDoc# 《【学习】1. TCP/IP协议栈概述&#xff08;体系、四/五层模型、IP、MAC&#xff09;》 参考资料&#xff1a; 网络通信协议 计算机网络的整体…

从0开始的操作系统手搓教程21:进程子系统的一个核心功能——简单的进程切换

目录 具体说说我们的简单RR调度 处理时钟中断处理函数 调度器 schedule switch_to 我们下面&#xff0c;就要开始真正的进程切换了。在那之前&#xff0c;笔者想要说的是——我们实现的进程切换简单的无法再简单了——也就是实现一个超级简单的轮询调度器。 每一个进程按照…

简单的SQL语句以及使用Node.js连接MySQL

简单的SQL语句以及使用Node.js连接MySQL 基本的增删改查通过*查询全部插入数据更新数据删除数据 Node.js连接MySQL 基本的增删改查 通过*查询全部 select * from (表名) --表名为user select * from user插入数据 假设user表中有password和username两个字段且为必填字段&am…

3.RabbitMQ管理

三、RabbitMQ管理 1、管理命令 ./rabbitmqctl 是一个管理命令,可以管理rabbitmq的很多操作 ./rabbitmqctl help可以查看一下有哪些操作 查看具体子命令可以使用./rabbitmqctl help 子命令名称 注意: 配置环境变量之后可以直接使用rabbitmqctl操作如果不配置环境变量则需要…

日期格式与字符串不匹配bug

异常特征&#xff1a;java.lang.IllegalArgumentException: invalid comparison: java.time.LocalDateTime and java.lang.String ### Error updating database. Cause: java.lang.IllegalArgumentException: invalid comparison: java.time.LocalDateTime and java.lang.Str…

33.C++二叉树进阶1(二叉搜索树两种模型及其应用)

⭐上篇文章&#xff1a;32.C二叉树进阶1&#xff08;二叉搜索树&#xff09;-CSDN博客 ⭐本篇代码&#xff1a;c学习/18.二叉树进阶-二叉搜索树 橘子真甜/c-learning-of-yzc - 码云 - 开源中国 (gitee.com) ⭐标⭐是比较重要的部分 在上篇文章中&#xff0c;实现了一个简单的二…

紧跟 Web3 热潮,RuleOS 如何成为行业新宠?

Web3 热潮正以汹涌之势席卷全球。从金融领域的创新应用到供应链管理的变革&#xff0c;从社交媒体的去中心化尝试到游戏产业的全新玩法探索&#xff0c;Web3 凭借其去中心化、安全性和用户赋权等特性&#xff0c;为各个行业带来了前所未有的机遇。在这股热潮中&#xff0c;Rule…

Kylin麒麟操作系统服务部署 | NFS服务部署

以下所使用的环境为&#xff1a; 虚拟化软件&#xff1a;VMware Workstation 17 Pro 麒麟系统版本&#xff1a;Kylin-Server-V10-SP3-2403-Release-20240426-x86_64 一、 NFS服务概述 NFS&#xff08;Network File System&#xff09;&#xff0c;即网络文件系统。是一种使用于…