本地安装的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

05-18 22:00