今天在测试的时候使用 PL/SQL DEVELOPER 连接数据的时候出现了错误,ORA-12516: TNS: 监听程序找不到符合协议堆栈要求的可用处理程
错误解决方案如下:
–首先检查 process 和 session 的使用情况,在 sqlplus 里面查看。
SQL> show parameter processes
NAME TYPE VALUE
———————————— ———– ——————————
aq_tm_processes integer 0
db_writer_processes integer 6
gcs_server_processes integer 0
job_queue_processes integer 0
log_archive_max_processes integer 2
processes integer 150
SQL> select count(*) from v$process;
COUNT(*)
———-
147
–明显 process 已经几乎达到了顶峰。
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
logmnr_max_persistent_sessions integer 1
session_cached_cursors integer 20
session_max_open_files integer 10
sessions integer 160shared_server_sessions integer
SQL>
SQL> select count(*) from v$session;
COUNT(*)
———-
153–同样几乎达到顶峰。
–修改 oracle 的 process 和 session 值,加大他们最大连接数。
–oracle 文档要求,SESSIONS和TRANSACTIONS的初始化参数应该源于PROCESSES参数,根据默认设置SESSIONS = PROCESSES * 1.1 + 5
SQL> alter system set processes=300 scope=spfile;
System altered.
SQL> alter system set sessions=335 scope=spfile;
System altered.
–重启数据库后参数修改完成
SQL> shutdown –如果长时间没反应可能是连接请求没又关闭,也可以使用 abort 参数直接关闭
SQL> startup –可以用 force 参数 关闭当前运行数据库后正常启动。
问题处理完毕,也可以参考其他更多的解决方案。