解决Oracle XE报错ORA12516(Oracle回话数超出限制)

2023年 4月 29日 29.0k 0

本地安装的OracleXEUnivoracle特别版,免费用户可以自由使用,但有连接数量和存储限制。 最近遇到一个问题,当我的SSM项目连接本地数据库oracleXE后,我的navicat再连接时就会报错ORA-1251

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

更多Oracle相关信息见Oracle 专题页面 https://www.558idc.com/topicnews.aspx?tid=12

 

相关文章

pt-kill工具的使用
pt-ioprofile工具包的使用
数据库管理-第216期 Oracle的高可用-01(20240703)
DBMS_REPAIR EXAMPLE SCRIPT WITH PARTITION
数据库事务的四大特性: ACID 
使用BBED修复损坏的SYSTEM文件头

发布评论