Oracle ORA-6544 [pevm_peruws_callback-1] [604]

客戶的db主機一段時間就發送 ORA-6544 的錯誤訊息,

google 大多指向 cursor 的問題,因此記錄一下處理方式與使用的SQL

1. alert.log 錯誤內容指向一個 trace file

 

2. 查 trace file 很明確指出是哪個 module name ( emagent_SQL_rac_database )

 

3. 進資料庫查了一下目前開啟的 cursor 是多少 ( DB open_cursor 是設定為 1000 )

set line 200
col user_name format a13
SELECT user_name, count(*) as "OPEN CURSORS" FROM v$open_cursor GROUP BY user_name;

發現 DBSNMP Cursor 開了 1033 個,

 

4. 檢查執行中的 Query

set line 200
col user_name format a13
SELECT sql_text, count(*) as "CURSORS", user_name FROM v$open_cursor GROUP BY sql_text, user_name ORDER BY COUNT(*) desc;

 

5. Query 內容查詢與 tablespace 空間有關

懷疑 EM Agent 是否當機,就做了以下 EM Agent 的測試,都是正常可識別

cd <agent_home>/bin
./emctl status agent
./emctl pingOMS
./emctl upload

 

6. 重啟 EM Agent

清掉卡很久的 Query,或許使用 kill session 也可以,但怕 session 會清不乾淨,才選擇重啟 EM Agent

cd <AGENT_HOME>/bin
./emctl stop agent
./emctl start agent