一般說來,出現這個錯誤是由於串連資料庫的進程數過大引起的。
select count(*) from v$process; 取得資料庫目前的進程數。
select value from v$parameter where name = 'processes'; 取得進程數的上限。
通常,由於初始化參數檔案中processes參數值設定太小導致的,所有可以修改ini***.ora中的processes的大小。
altere system set processes = *** scope = both;
修改完成重新啟動資料庫到nomount狀態下,執行create spfile from pfile; 並startup open。
------------------------------------------------------------------------------------------------------------------------------------
以下兩個視圖v$resource_limit,v$license,可以查詢到資料庫中session使用方式。
SQL> select * from v$resource_limit where resource_name = 'sessions';
RESOURCE_NAME CURRENT_UTILIZATION MAX_UTILIZATION INITIAL_AL LIMIT_VALU
------------------------------ ------------------- --------------- ---------- ----------
sessions 286 380 555 555
CURRENT_UTILIZATION得到當前被用的session總數。MAX_UTILIZATION是各項資源沒有達到的最大值。
SQL> select * from v$license;
SESSIONS_MAX SESSIONS_WARNING SESSIONS_CURRENT SESSIONS_HIGHWATER USERS_MAX
------------ ---------------- ---------------- ------------------ ----------
0 0 276 363 0
可以得到執行個體啟動以來,串連資料庫的使用者session的曾經達到的最大值(SESSIONS_HIGHWATER)和當前值。