今天突然遇到一個很奇怪的現象,已經開啟Form的使用者沒有異樣,但是重新於瀏覽器中成功登入後,在開啟Forms時卻出現無法連線資料庫的訊息。
因為自己並沒有對EBS做任何設定,也沒有異動DB設定,難道被使用者或其他的資訊人員弄壞了。
不過就在檢查DB的Log之後,發現是ORA-00020: maximum number of processes (1000) exceeded
這個錯誤就是超過了DB設定的process的值,所以後來的連線當然會失敗。
既然知道了原因,可依下列步驟來修改process的設定值
SQL> alter system set processes=25 scope=spfile;
由於processes參數是靜態參數,必需重啟資料庫使參數調整生效
SQL> shutdown immediate;
SQL> startup;
可執行下列的SQL來檢查process、session目前使用量、最大使用量、限制量
SQL> SELECT RESOURCE_NAME,
CURRENT_UTILIZATION, MAX_UTILIZATION, LIMIT_VALUE
FROM V$RESOURCE_LIMIT
WHERE RESOURCE_NAME IN ( 'sessions', 'processes');
利用下列的SQL來找出inactive大於24小時的session,last_call_et是指最後一個SQL執行完後到sysdate的時間,單位為秒
SQL> select 'alter system kill session ''' || sid || ',' || serial# || ''';' ,status,schemaname,osuser,process,
machine,program,sql_id,module,action,logon_time,last_call_et
from v$session where status = 'INACTIVE'
and last_call_et > 86400
order by last_call_et desc;