今天在觀察Oracle ERP的效能時,發現AP Tier的CPU有偏高的現象,而且持續了好幾天。
因為之前發生時,曾用過兩種方案,一個是重開ERP就可以恢復正常;另一個是強制刪掉可能的zombie process
以下記錄我自己參考Document 1330392.1後的操作,非官方正式的SOP
我們AP Tier的作業系統是Solaris,首先執行下列的指令來觀察Process(依使用率來排序)
# prstat -avm
結果如下圖,有兩個f60webmx的CPU使用率偏高,f60webmx就是EBS的Forms
將上面兩個PID記錄下來,以下列的SQL來反查是哪一個Sessions
SQL> select * from v$session where process in ( <PID> );
再將上面的PID以下列的SQL來查詢相關資料
SQL> select * from FND_LOGIN_RESP_FORMS WHERE audsid in ( <PID)> );
如果FND_LOGIN_RESP_FORMS的end_time的值不是null,則表示該session已經結束並且可以手動刪除。
我是會再看v$session的status是否為inactive,如果是,也是可以手動刪除。
上述步驟查詢可能沒有相關的Session或 FND_LOGIN_RESP_FORMS WHERE audsid,則直接刪掉pid
把找到的session記錄SID、SERIAL#後,再以下列的SQL來強制kill session
SQL> alter system kill session '<SID>,<SERIAL#>';
接著在再刪掉作業系統的pid
# kill -9 <PID>
另外我會特別注意查詢到的v$session欄位ACTION是不是像FRM:<USER_NAME>:<RESPONSIBILITY_NAME>,
或是Concurrnet Request,如果是,通常都是使用者開啟的程式,刪掉就比較不用擔心;
如果不是,就要特別注意是否是Oracle的背景程式或特殊程式。