Oracle

在 Oracle 警報日誌中遇到死鎖時的通知電子郵件

  • July 12, 2017

當在任何節點上的警報日誌中遇到死鎖時,如何發送通知電子郵件,例如下面遇到的死鎖?(在警報日誌中檢測到死鎖時發出警報)

Node 1:

Mon Sep 08 16:23:59 2014
Global Enqueue Services Deadlock detected. More info in file
/u01/oracle/diag/rdbms/luma/LUMA1/trace/LUMA1_lmd0_4814.trc.

Node 2:

Mon Sep 08 16:37:47 2014
Global Enqueue Services Deadlock detected. More info in file
/u01/oracle/diag/rdbms/luma/LUMA2/trace/LUMA2_lmd0_2602.trc.

我正在使用 DB Control (11g)。

您可以嘗試使用 ADRCI。

ADRCI>
ADRCI> show alert -p "message_text like '%Global Enqueue Services Deadlock detected%' and originating_timestamp > systimestamp + INTERVAL '-5' MINUTE"

這將在過去 5 分鐘內顯示您的錯誤。您可以將其放入 shell 腳本並添加一個每 5 分鐘執行一次的 cron 作業。

#!/bin/bash
LOG = /home/oracle/log.txt
adrci_homes=( $(adrci exec="show homes" | grep -e rdbms ))

for adrci_home in ${adrci_homes[@]}
do
  echo $adrci_home' Alert Log' >> $LOG
  adrci exec="set home ${adrci_home}; show alert -p \\\"%Global Enqueue Services Deadlock detected%' and originating_timestamp > systimestamp + INTERVAL '-5' MINUTE\\\"" -term >> $LOG
done

num_errors=`grep -c -e 'Global Enqueue Services Deadlock detected' $LOG`

if [ $num_errors != 0 ]
then
    mutt -a $LOG -s "Deadlock Detected" admin@mydomain.com 
fi

我知道有人編寫了一個 Perl 程序,該程序每隔幾分鐘就會醒來閱讀警報日誌的新行並在出現錯誤時發送電子郵件。如果你有網格,你可以配置它來通知是否有死鎖。

引用自:https://dba.stackexchange.com/questions/76040