listener could not find available handler with matching protocol stack

这篇博客介绍了在遇到Oracle数据库连接错误'监听程序找不到可用处理程序'时的解决步骤,包括查看和修改数据库的processes参数,以及通过sqlplus以sysdba身份启动和关闭数据库实例的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在客户端进行sqlplus连接报错如下:

 

  1. ORA-12516: TNS: 监听程序找不到符合协议堆栈要求的可用处理程序  
ORA-12516: TNS: 监听程序找不到符合协议堆栈要求的可用处理程序

在/home/oracle/product/10.2.0/db_1/network/log/listener.log中查看到错误如下:

 

 

  1. TNS-12516: TNS:listener could not find available handler with matching protocol stack  
TNS-12516: TNS:listener could not find available handler with matching protocol stack

 

 

sqlplus连接之后报错:

 

  1. [oracle@kel ~]$ sqlplus / as sysdba  
  2.   
  3. SQL*Plus: Release 10.2.0.1.0 - Production on Thu May 16 00:06:17 2013  
  4.   
  5. Copyright (c) 1982, 2005, Oracle.  All rights reserved.  
  6.   
  7. Connected.  
  8. SQL> show parameter session  
  9. ORA-01012: not logged on  
  10.   
  11.   
  12. SQL> shutdown immediate  
  13. ORA-24324: service handle not initialized  
  14. ORA-24323: value not allowed  
  15. ORA-00020: maximum number of processes (%s) exceeded  
[oracle@kel ~]$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on Thu May 16 00:06:17 2013

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

Connected.
SQL> show parameter session
ORA-01012: not logged on


SQL> shutdown immediate
ORA-24324: service handle not initialized
ORA-24323: value not allowed
ORA-00020: maximum number of processes (%s) exceeded


 

alterlog中报错:

 

  1. Wed May 15 23:59:26 2013  
  2. Process m000 died, see its trace file  
  3. Wed May 15 23:59:26 2013  
  4. ksvcreate: Process(m000) creation failed  
  5. Thu May 16 00:00:26 2013  
  6. Process m000 died, see its trace file  
  7. Thu May 16 00:00:26 2013  
  8. ksvcreate: Process(m000) creation failed  
  9. Process m000 died, see its trace file  
  10. Thu May 16 00:00:27 2013  
  11. ksvcreate: Process(m000) creation failed  
  12. Thu May 16 00:01:27 2013  
  13. Process m000 died, see its trace file  
  14. Thu May 16 00:01:27 2013  
  15. ksvcreate: Process(m000) creation failed  
  16. Process m000 died, see its trace file  
  17. Thu May 16 00:01:27 2013  
  18. ksvcreate: Process(m000) creation failed  
Wed May 15 23:59:26 2013
Process m000 died, see its trace file
Wed May 15 23:59:26 2013
ksvcreate: Process(m000) creation failed
Thu May 16 00:00:26 2013
Process m000 died, see its trace file
Thu May 16 00:00:26 2013
ksvcreate: Process(m000) creation failed
Process m000 died, see its trace file
Thu May 16 00:00:27 2013
ksvcreate: Process(m000) creation failed
Thu May 16 00:01:27 2013
Process m000 died, see its trace file
Thu May 16 00:01:27 2013
ksvcreate: Process(m000) creation failed
Process m000 died, see its trace file
Thu May 16 00:01:27 2013
ksvcreate: Process(m000) creation failed


1、无法登陆数据库的情况下使用以下方法:

 

a、找到数据库的关键进程,然后杀死,此时数据库实例会自动进行关闭

 

  1. <SPAN style="WHITE-SPACE: pre"> </SPAN>[oracle@kel ~]$ ps -ef|grep dbw  
  2. <SPAN style="WHITE-SPACE: pre"> </SPAN>oracle   16107     1  0 00:04 ?        00:00:00 ora_dbw0_orcl  
  3. <SPAN style="WHITE-SPACE: pre"> </SPAN>oracle   16755 15946  0 00:19 pts/0    00:00:00 grep dbw  
  4. <SPAN style="WHITE-SPACE: pre"> </SPAN>[oracle@kel ~]$ kill -9 16107  
[oracle@kel ~]$ ps -ef|grep dbw
oracle   16107     1  0 00:04 ?        00:00:00 ora_dbw0_orcl
oracle   16755 15946  0 00:19 pts/0    00:00:00 grep dbw
[oracle@kel ~]$ kill -9 16107
2、公用的方法,当能登陆进数据库之后

 

b、sqlplus登录进数据库,启动数据库

 

  1. [oracle@kel ~]$ sqlplus / as sysdba  
  2.   
  3. SQL*Plus: Release 10.2.0.1.0 - Production on Thu May 16 00:20:11 2013  
  4.   
  5. Copyright (c) 1982, 2005, Oracle.  All rights reserved.  
  6.   
  7. Connected to an idle instance.  
  8.   
  9. SQL> startup  
  10. ORACLE instance started.  
  11.   
  12. Total System Global Area  176160768 bytes  
  13. Fixed Size          2019384 bytes  
  14. Variable Size         100667336 bytes  
  15. Database Buffers       71303168 bytes  
  16. Redo Buffers            2170880 bytes  
  17. Database mounted.  
  18. Database opened.  
[oracle@kel ~]$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on Thu May 16 00:20:11 2013

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

Connected to an idle instance.

SQL> startup
ORACLE instance started.

Total System Global Area  176160768 bytes
Fixed Size		    2019384 bytes
Variable Size		  100667336 bytes
Database Buffers	   71303168 bytes
Redo Buffers		    2170880 bytes
Database mounted.
Database opened.
c、查看系统,发现process的值已经接近上限,修改processes的值

 

 

  1. SQL> show parameter process  
  2.   
  3. NAME                     TYPE    VALUE  
  4. ------------------------------------ ----------- ------------------------------  
  5. aq_tm_processes              integer     0  
  6. db_writer_processes          integer     1  
  7. gcs_server_processes             integer     0  
  8. job_queue_processes          integer     10  
  9. log_archive_max_processes        integer     2  
  10. processes                integer     20  
SQL> show parameter process

NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
aq_tm_processes 		     integer	 0
db_writer_processes		     integer	 1
gcs_server_processes		     integer	 0
job_queue_processes		     integer	 10
log_archive_max_processes	     integer	 2
processes			     integer	 20
  1. SQL> alter system set processes=1150 scope=spfile;  
  2.   
  3. System altered.  
SQL> alter system set processes=1150 scope=spfile;

System altered.

d、重新启动oracle数据库

 

 

  1. SQL> startup force  
  2. ORACLE instance started.  
  3.   
  4. Total System Global Area  176160768 bytes  
  5. Fixed Size          2019384 bytes  
  6. Variable Size         100667336 bytes  
  7. Database Buffers       71303168 bytes  
  8. Redo Buffers            2170880 bytes  
  9. Database mounted.  
  10. Database opened.  
  11. SQL> show parameter process;  
  12.   
  13. NAME                     TYPE    VALUE  
  14. ------------------------------------ ----------- ------------------------------  
  15. aq_tm_processes              integer     0  
  16. db_writer_processes          integer     1  
  17. gcs_server_processes             integer     0  
  18. job_queue_processes          integer     10  
  19. log_archive_max_processes        integer     2  
  20. processes                integer     150  
SQL> startup force
ORACLE instance started.

Total System Global Area  176160768 bytes
Fixed Size		    2019384 bytes
Variable Size		  100667336 bytes
Database Buffers	   71303168 bytes
Redo Buffers		    2170880 bytes
Database mounted.
Database opened.
SQL> show parameter process;

NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
aq_tm_processes 		     integer	 0
db_writer_processes		     integer	 1
gcs_server_processes		     integer	 0
job_queue_processes		     integer	 10
log_archive_max_processes	     integer	 2
processes			     integer	 150

 

连接不上数据库的时候,可能会是processes值已经达到了上限,从而修改processes的值,加大即可

 

 

 

http://blog.youkuaiyun.com/kellyseeme/article/details/8935208

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值