千家信息网

Oracle性能问题排查自动化脚本怎么写

发表于:2025-01-22 作者:千家信息网编辑
千家信息网最后更新 2025年01月22日,小编给大家分享一下Oracle性能问题排查自动化脚本怎么写,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!进入 Oracle
千家信息网最后更新 2025年01月22日Oracle性能问题排查自动化脚本怎么写

小编给大家分享一下Oracle性能问题排查自动化脚本怎么写,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!


进入 Oracle Performance troubleshooting automation scripts: Perfbot Maria

功能:定期执行该脚本,对SQL执行超过n分钟的SQL语句的等待事件以及相关的执行计划和SQL monitor的信息以邮件的形式发给运维者。

主要脚本:pbm_wait.sh


  1. #!/bin/bash


  2. export ORACLE_SID=$1

  3. export SQL='sqlplus / as sysdba'

  4. export EXEC_MIN=5


  5. export ORACLE_HOME=/opt/app/oracle/product/11GR2

  6. export PATH=$PATH:$ORACLE_HOME/bin

  7. export DIR=/home/oracle/dba/pb_maria

  8. #export MY_DATE=`date '+%d%b%y_%k%M'`

  9. export LOG=${DIR}/pbm_${ORACLE_SID}_wait.log

  10. export RESULT=pbm_${ORACLE_SID}_wait.result

  11. export TEMP_RESULT=pbm_${ORACLE_SID}_wait_temp.result

  12. export FINAL_RESULT=pbm_wait_${ORACLE_SID}_final.result

  13. export GRACE=pbm_${ORACLE_SID}_grace.log

  14. export COUNT=1

  15. export MAIL='mailx -s "Perfbot maria report of DB $ORACLE_SID"'


  16. cd $DIR


  17. $SQL > /dev/null << EOF

  18. spool ${LOG}

  19. @wait.sql

  20. spool off

  21. EOF


  22. sed -i '1d;2d;$d' $LOG


  23. awk '{if($3>ENVIRON["EXEC_MIN"]) {print $0} }' $LOG > $RESULT


  24. for i in `awk '{print $2}' $RESULT`

  25. do

  26. array[$COUNT]=$i;

  27. COUNT=$(($COUNT+1));

  28. done


  29. if [ $COUNT -ne 1 ]

  30. then

  31. for ((i=1; i<${COUNT}; i++))

  32. do

  33. grep -q ${array[$i]} $GRACE;

  34. if [ $? -eq 1 ]; then

  35. echo ${array[$i]} >> $TEMP_RESULT

  36. fi

  37. done

  38. fi


  39. if [[ -e $TEMP_RESULT ]]; then

  40. sort -u $TEMP_RESULT > $FINAL_RESULT

  41. COUNT=1

  42. for i in `awk '{print $1}' $FINAL_RESULT`

  43. do

  44. array[$COUNT]=$i

  45. COUNT=$(($COUNT+1));

  46. done


  47. for ((i=1; i<${COUNT}; i++))

  48. do

  49. $SQL > /dev/null << EOF

  50. spool ${DIR}/${ORACLE_SID}_${array[$i]}_sql.rpt

  51. @sm.sql ${array[$i]}

  52. spool off

  53. EOF

  54. sed -i '1d;$d' ${DIR}/${ORACLE_SID}_${array[i]}_sql.rpt

  55. done


  56. for ((i=1; i<${COUNT}; i++))

  57. do

  58. export MAIL=$MAIL" -a "${DIR}/${ORACLE_SID}_${array[$i]}"_sql.rpt"

  59. done


  60. export MAIL=$MAIL" 234924619@qq.com < "${DIR}/$RESULT" "

  61. eval $MAIL


  62. mv *.rpt reports/

  63. fi



  64. awk '{print $2}' $RESULT > $GRACE




  65. mv *.result results/

脚本使用方法: /home/oracle/dba/pb_maria/pbm_wait.sh

其中 EXEC_MIN 参数控制着多少分钟以上的SQL会被写入邮件。

细心的朋友会发现,脚本中加入了GRACE机制,即上一次告警过的SQL不会接连告警,可能会隔次告警,减少无谓的告警骚扰。

调用的sql 脚本也附上:

wait.sql


  1. set line 220 pages 50000

  2. set heading off

  3. set feedback off

  4. col username for a10

  5. col event for a35

  6. col program for a35

  7. COLUMN elapsed_min FORMAT 999999999.99

  8. select username,sql_id, ROUND(( sysdate - SQL_EXEC_START)*1440 , 2) elapsed_min

  9. ,program,event

  10. FROM V$SESSION

  11. WHERE USERNAME IS NOT NULL

  12. AND WAIT_CLASS NOT LIKE 'Idle'

  13. AND SQL_ID IS NOT NULL

  14. AND ROUND(( sysdate - SQL_EXEC_START)*1440 , 2) IS NOT NULL

  15. order by elapsed_min desc;


sm.sql

  1. set pagesize 50000

  2. set long 20000

  3. select dbms_sqltune.report_sql_monitor(SQL_ID=>'&&1',TYPE=>'text') from dual

  4. /



这里貌似不支持附件,注意点如下:

注意该脚本必须放在/home/oracle/dba/pb_maria路径使用;在该路径下创建results和reports路径来存放历史的信息。

cronjob我设置的是5分钟一次。

这个脚本需要Oracle数据库服务器能连上互联网,才能发邮件。如果是私网的机器,则可以考虑加一台私网公网都在的mail服务器,将需要发的邮件的信息传送到这台mail服务器上,然后定时发出邮件。

以上是"Oracle性能问题排查自动化脚本怎么写"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

脚本 邮件 信息 服务器 篇文章 服务 性能 问题 自动化 内容 路径 细心 不怎么 事件 互联网 使用方法 功能 历史 参数 大部分 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 java版服务器地图导出 安卓系统下的软件开发 梦幻西游20年新开火热服务器 云更新无盘服务器内存 社团团购系统软件开发 宁夏果蔬配送软件开发 朔州云创网络技术有限公司 网络技术里面学平面设计吗 渣打银行软件开发待遇 软件开发是简单的还是复杂的 广东pdu服务器专用电源多少钱 为什么进入游戏看不到服务器 区间参数 数据库如何设置字段 revit 激活指定许可服务器 四川电商软件开发费用是多少 王者传奇56服务器查询 企业一卡通数据库建表 方舟服务器流量要花多少 永久60级服务器免费转服 德宏盈江网络安全 福建企业党建软件开发哪儿好 达梦数据库公司好吗 广东dns服务器设置虚拟主机 上海专业网络技术服务资费 关于网络安全教育片 深化设计软件开发 湖北多功能软件开发近期价格 主数据库连接不上 查询数据库中的每个表里的数据 手机远程服务器地址
0