亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Oracle性能問題排查自動化腳本怎么寫

發布時間:2021-11-10 14:33:59 來源:億速云 閱讀:201 作者:小新 欄目:關系型數據庫

小編給大家分享一下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性能問題排查自動化腳本怎么寫”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

巨野县| 福鼎市| 吉木萨尔县| 加查县| 江口县| 柘城县| 丰台区| 田东县| 岳西县| 碌曲县| 界首市| 芦山县| SHOW| 新泰市| 永德县| 宜黄县| 祥云县| 阿尔山市| 桂阳县| 达州市| 衡阳市| 太康县| 南乐县| 衢州市| 吉安市| 都昌县| 昆山市| 鹿邑县| 西乌珠穆沁旗| 邛崃市| 桑植县| 安达市| 赤城县| 宜君县| 上犹县| 和硕县| 濮阳县| 镇原县| 通州区| 阿坝县| 曲阳县|