ORA-00019: maximum number of session licenses exceeded
Cause: All licenses are in use.
Action: Increase the value of the LICENSE MAX SESSIONS initialization
parameter.
报错现象:
数据库的最大sessions数为1110,processes为1000,运行过程中,程序的最大连接数没有达到1000,但是连接的时候报错,提示ORA-00019.
解决办法:
查看当前的license_max_sessions参数值:
show parameter license_max_sessions;
值为800;
修改license_max_sessions值:
alter system set license_max_sessions=1110 scope=both;
查看修改之后的license_max_sessions值:
show parameter license_max_sessions;
值为1110;
原因分析:
数据库设置了最大会话sessions值为1110,而license_max_sessions的值为800,低于最大会话数,程序在测试过程中产生的连接数超过了800,当在创建新的会话时就遇到了ORA-00019错误,即数据库当前的参数不允许并发会话数超过800.
参考资料:
LICENSE_MAX_SESSIONS 指定最大并发会话连接数。当达到最大值时,只有拥有RESTRICTED SESSION 权限的用户(默认只有DBA、SYS用户有)可以连接数据库。
LICENSE_SESSIONS_WARNING 当最大并发会话数达到这个值时,用户连接数据库的时候会在alert日志中额外写一条warning记录,拥有RESTRICTED SESSION权限的用户登录数据库时,会提示最大并发会话数已经达到了warning阀值。
LICENSE_MAX_USERS 指定数据库能创建的最大用户数。当达到阀值时,将无法创建数据库用户。
oracle建议不要同时设置 LICENSE_MAX_USERS 和 LICENSE_MAX_SESSIONS。
SESSIONS 指定数据库允许的最大会话数。根据并发用户数+后台进程数+10%的重复会话数来确定sessions的大小。ORACLE 11GR2中默认值为 (1.5*PROCESSES)+22.
PROCESSES 指定在操作系统级别允许连接oracle数据库的最大并发用户进程数。在shared server模式下这个值可以设置的比较小。
修改session数:alter system set sessions=335 scope=spfile;
修改process数:alter system set processes=300 scope=spfile;