oracle数据库无法登录之解决ORA-12516: TNS: 监听程序找不到符合协议堆栈要求的可用处理程'错误【常伴随ORA-01012: not logge

583 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第6天,点击查看活动详情

一、解决ORA-12516: TNS: 监听程序找不到符合协议堆栈要求的可用处理程'错误 要解决该问题首先查看一下数据库现有的进程数,是否已经达到参数processes的大小。

a.select count(*) from vprocess;取得数据库目前的进程数。b.selectvaluefromvprocess; 取得数据库目前的进程数。 b.select value from vparameter where name = 'processes'; 取得进程数的上限。

1、查看当前会话数、processes和sessions值

发现session数和2个参数的值已经非常接近

SQL*Plus: Release 11.1.0.6.0 - Production on 星期一 9月 21 9:50:21 2009 Copyright (c) 1982, 2007, Oracle. All rights reserved.

SQL> conn / as sysdba 已连接。

【在这里可能会遇到二、解决ORA-01012not logged on的错误,需先解决,再继续】

SQL> select count() from v$session; COUNT()----------
45

SQL> show parameter processes NAME TYPE VALUE db_writer_processes integer 1 gcs_server_processes integer 0 job_queue_processes integer 10 log_archive_max_processes integer 2 processes integer 50

SQL> show parameter sessions NAME TYPE VALUE java_soft_sessionspace_limit integer 0l icense_max_sessions integer 0 license_sessions_warning integer 0 logmnr_max_persistent_sessions integer 1 sessions integer 60 shared_server_sessions integer

只要会话连接数超过上面的process数150或者sessions数170,再来一个的会话进程,就会产生12516错误。因此可以修改一下该值:

sessions=1.1*processes+5;//这个是sessions值和processes值的关系,最好按照这样做,

因此如果要将processes数设置为2000,则sessions数必须为1.1*2000+5=2205

2、修改processes和sessions值

SQL> alter system set processes=2000 scope=spfile; 系统已更改。 SQL> alter system set sessions=2205 scope=spfile; 系统已更改。

3、查看processes和sessions参数,但更改并未生效

SQL> show parameter processes NAME TYPE VALUE db_writer_processes integer 1 gcs_server_processes integer 0 job_queue_processes integer 10 log_archive_max_processes integer 2 processes integer 50 SQL> show parameter sessions NAME TYPE VALUE license_max_sessions integer 0 license_sessions_warning integer 0 logmnr_max_persistent_sessions integer 1 sessions integer 60 shared_server_sessions integer

4、重启数据库,使更改生效 SQL> shutdown immediate; --关闭数据库

SQL> startup; --重启数据库 SQL> show parameter processes NAME TYPE VALUE db_writer_processes integer 1 gcs_server_processes integer 0 job_queue_processes integer 10 log_archive_max_processes integer 2 processes integer 2000 SQL> show parameter sessions NAME TYPE VALUE java_soft_sessionspace_limit integer 0 license_max_sessions integer 0 license_sessions_warning integer 0 logmnr_max_persistent_sessions integer 1 sessions integer 2205 shared_server_sessions integer