Oracle

監控警報日誌文件

  • February 18, 2014

我必須為警報日誌文件生成自動化腳本,該腳本將顯示警報日誌文件的內容。這是腳本。

while :
clear
do
echo "\n"
echo "ORA - Error"
echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"
sed -n "/ORA-/p" "alert log fiel path"
sleep 4
clear

我的問題是我得到了所有的錯誤。我只想要今天發生的錯誤。我怎樣才能做到這一點?

  1. 如果您使用的是Oracle 11g或更高版本:

從 11g Oracle 開始,引入了一個固定表X$DBGALERTEXT,您可以從中檢索 alert.log 所做的所有數據。這是一個簡單的查詢,可以檢索今天發生的所有錯誤,如您所願。

SET linesize 200 pagesize 200
col RECORD_ID FOR 9999999 head ID
col MESSAGE_TEXT FOR a120 head Message

SELECT record_id, message_text
FROM X$DBGALERTEXT
WHERE originating_timestamp > systimestamp - 1 AND regexp_like(message_text, '(ORA-|error)')

正如 Twinkles 在他的回答中提到的,您可以利用ADRCI實用程序來選擇您需要的警報過濾器(實際上,該實用程序會針對X$DBGALERTEXT表進行查詢)。例如,您可以建構一個簡單的函式並從作業系統提示符呼叫它:

vealert() {
 adrci exec="set home diag\/rdbms\/$DB_UNIQUE_NAME/$ORACLE_SID\; \
  show alert -p \\\"message_text like '%ORA-%' \
    and originating_timestamp > systimestamp - $1\\\""
}

在文件**.bashrc**中,例如:

export DB_UNIQUE_NAME=<unique_name>
. $HOME/bin/vealert

然後:

bash
vealert 1

..
Tue Dec 24 17:46:05 2013
ORA-28 signalled during: ALTER TABLESPACE DATA_APP_199903 READ ONLY...
..
  1. 否則:

去看看這個網頁。有一個腳本可用於檢查目前警報日誌文件中是否存在任何 ORA 錯誤。

要安排此作業,您可以在 cron 表中添加一行,指定您希望作業執行的時間。或者,您可以利用 Oracle 調度程序。

如果您使用的是 Oracle 11g 或更高版本,請考慮改用ADRCI實用程序。

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