本地安裝的oracleXEUniv—oracle特別版,免費用戶可以自由使用,但有連接數量和存儲限制。
最近遇到一個問題,當我的SSM項目連接本地數據庫oracleXE后,我的navicat再連接時就會報錯ORA-12516,就是oracle的會話數超出了限制,一般都是由於多次connect建立多個連接會話引起的,最后導致oracle無法響應新的請求,從而出現ora-12516錯誤。於是上網查找解決辦法,下面方面親測成功。
select count(*) from v$process; --取得數據庫目前的進程數
select value from v$parameter where name = 'processes'; --取得進程數的上限
alter system set session_cached_cursors=200 scope=spfile; alter system set session_max_open_files=200 scope=spfile; alter system set sessions=20 scope=spfile; alter system set license_max_sessions=200 scope=spfile; alter system set license_sessions_warning=200 scope=spfile; alter system set processes=200 scope=spfile;
select count(*) from v$process; --取得數據庫目前的進程數
開始執行時,結果為21
連接數量:select value from v$parameter where name = 'processes'; --取得進程數的上限
開始執行上述語句后,結果為40
執行上述修改后,重啟oracle實例:
1. 如安裝於 Windows 上,先運行 net stop oracleservicexe,再運行 net start oracleservicexe 即可。也可通過“服務”管理控制台重啟 OracleServiceXE 服務。
2. 如安裝於 Linux 上,先運行 /etc/init.d/oracle-xe start,再運行 /etc/init.d/oracle-xe stop 即可。
執行select value from v$parameter where name = 'processes';的結果為200,並且不會再報ORA-12516,成功連接,連接后再執行select count(*) from v$process;結果為41