返回顶部
首页 > 资讯 > 数据库 >Oracle性能问题排查自动化脚本怎么写
  • 113
分享到

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

2024-04-02 19:04:59 113人浏览 薄情痞子
摘要

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

小编给大家分享一下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性能问题排查自动化脚本怎么写”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网数据库频道!

您可能感兴趣的文档:

--结束END--

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

本文链接: https://lsjlt.com/news/64667.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Oracle性能问题排查自动化脚本怎么写
    小编给大家分享一下Oracle性能问题排查自动化脚本怎么写,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!进入 Oracle Pe...
    99+
    2024-04-02
  • mysql5.5、5.6自动化安装脚本怎么写
    mysql5.5、5.6自动化安装脚本怎么写,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。使用环境:①CentOS6 &...
    99+
    2024-04-02
  • 怎么用java写自动化测试脚本
    使用Java编写自动化测试脚本可以通过以下步骤进行:1. 确定测试框架:选择一个适合的测试框架,比如JUnit、TestNG等。这些...
    99+
    2023-10-10
    java
  • oracle 11g自动杀锁脚本怎么编写
    今天就跟大家聊聊有关oracle 11g自动杀锁脚本怎么编写,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。 最近临近春节...
    99+
    2024-04-02
  • python自动打卡脚本怎么写
    编写一个Python自动打卡脚本可以参考以下步骤:1. 导入所需的库:`requests`用于发送HTTP请求,`time`用于设置...
    99+
    2023-08-17
    python
  • Teradata怎么实现自动化优化查询性能
    Teradata提供了一些工具和功能来实现自动化优化查询性能,其中包括: Teradata Query Grid:Teradat...
    99+
    2024-04-09
    Teradata
  • 怎么优化Pig脚本的性能
    要优化Pig脚本的性能,可以采取以下几种方法: 减少数据的移动和复制:尽量避免在不同的MapReduce任务之间频繁地移动和复制...
    99+
    2024-04-02
  • Linux开机自动启动的脚本怎么写
    这篇文章的内容主要围绕Linux开机自动启动的脚本怎么写进行讲述,文章内容清晰易懂,条理清晰,非常适合新手学习,值得大家去阅读。感兴趣的朋友可以跟随小编一起阅读吧。希望大家通过这篇文章有所收获!一、在/etc/rc.local中添加 如果不...
    99+
    2023-06-28
  • PHP 单元测试中的性能优化与问题排查
    性能优化:使用分组测试类使用模拟对象避免执行缓慢操作使用数据提供者提高覆盖率问题排查:长测试时间:识别最耗时的测试方法并优化不稳定的测试:找出导致不稳定的原因并增加可靠性措施遮盖代码的测...
    99+
    2024-05-06
    php 性能优化
  • Navicat中怎么自动化执行SQL脚本
    在Navicat中,可以使用任务计划(Scheduler)功能来自动化执行SQL脚本。以下是操作步骤: 打开Navicat软件,连...
    99+
    2024-05-10
    Navicat
  • sql server怎么排查死锁优化性能
    本篇内容主要讲解“sql server怎么排查死锁优化性能”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“sql server怎么排查死锁优化性能”吧!一.概述记得以前客户在使...
    99+
    2023-06-29
  • Linux中python自启动和定时启动脚本怎么写
    这篇“Linux中python自启动和定时启动脚本怎么写”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Linux中pytho...
    99+
    2023-06-28
  • git自动化部署php脚本怎么实现
    本文操作环境:linux5.9.8系统、Git 2.30.0版、DELL G3电脑git自动化部署php脚本怎么实现git+php部署webhook自动化脚本 实现代码同步本文将介绍git+php部署webhook自动化脚本 实现代码同步 ...
    99+
    2014-07-13
    git php
  • 怎么编写oracle_ray.sh常用的oracle sql功能脚本
    这篇文章主要讲解了“怎么编写oracle_ray.sh常用的oracle sql功能脚本”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么编写oracle_...
    99+
    2024-04-02
  • Shell怎么实现自动化管理账号脚本
    这篇文章主要介绍了Shell怎么实现自动化管理账号脚本,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。该脚本目的帮助管理员创建账号、删除账号、锁定账号、解锁账号。#!/bin/...
    99+
    2023-06-05
  • element怎么用脚本自动化构建新组件
    这篇文章主要为大家展示了“element怎么用脚本自动化构建新组件”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“element怎么用脚本自动化构建新组件”这篇文章吧。element-ui的自动化...
    99+
    2023-06-22
  • 怎么在Linux中使用expect命令编写一个自动化交互脚本
    怎么在Linux中使用expect命令编写一个自动化交互脚本?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。expect 是建立在工具控制语言(Tool Control La...
    99+
    2023-06-09
  • shell脚本怎么实现ssh自动登录功能
    本篇内容介绍了“shell脚本怎么实现ssh自动登录功能”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!文件名:ssh_auto_login代...
    99+
    2023-06-09
  • 这怎么在SQL Server编写一个自动备份脚本
    本篇文章为大家展示了这怎么在SQL Server编写一个自动备份脚本,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。 创建SQL脚本新建db_backup.sql文件,填入以下内容。-- 定...
    99+
    2023-06-14
  • docker制作mysql镜像并自动安装脚本怎么写
    本文小编为大家详细介绍“docker制作mysql镜像并自动安装脚本怎么写”,内容详细,步骤清晰,细节处理妥当,希望这篇“docker制作mysql镜像并自动安装脚本怎么写”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知...
    99+
    2023-06-30
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作