Oracle运行一段时间后,连接异常ORA-12519,错误的原因是因为连接池达到最大限制。
先查看process和session的使用情况,在sqlplus命令行查看。
1.查看连接数(process)配置
SQL> select value from v$parameter where name='processes';
VALUE
------------------------------------------------------------------------------------------------------------------------
150
SQL>
或
SQL> show parameter processes
NAME TYPE VALUE
------------------------------------ --------------------------------- ------------------------------
aq_tm_processes integer 0
db_writer_processes integer 1
gcs_server_processes integer 0
global_txn_processes integer 1
job_queue_processes integer 1000
log_archive_max_processes integer 4
processes integer 150
SQL>
2.查看当前连接数(process)
SQL> select count(*) from v$process;
COUNT(*)
----------
147
SQL>
3.查看session配置
SQL> show parameter session
NAME TYPE VALUE
------------------------------------ --------------------------------- ------------------------------
java_max_sessionspace_size integer 0
java_soft_sessionspace_limit integer 0
license_max_sessions integer 0
license_sessions_warning integer 0
session_cached_cursors integer 50
session_max_open_files integer 10
sessions integer 248
shared_server_sessions integer
SQL>
4.查看当前session数
SQL> select count(*) from v$session;
COUNT(*)
----------
139
SQL>
可以看到当前的process已经几乎达到了峰值,不过session还有富余。
5.修改最大连接数配置:
查询oracle文档,要求 SESSIONS 和 TRANSACTIONS 的初始化参数应该源于 PROCESSES 参数。
修改oracle的process和session值,扩大并发连接数,修改process的同时需同步修改session的设置,调整的公式:SESSIONS = PROCESSES * 1.1 + 5
SQL> alter system set processes=300 scope=spfile;
SQL> alter system set sessions=335 scope=spfile;
SQL> shutdown
SQL> startup
注意:修改完成以后,需要重启数据库,才能生效。