文档章节

ORA-12518 TNS:监听程序无法分发客户机连接 解决办法

rootliu
 rootliu
发布于 2017/08/18 09:30
字数 624
阅读 39
收藏 0

ORA-12518: TNS:listener could not hand off client connection

2008-06-23 08:57

ORA-12518: TNS:listener could not hand off client connection
Cause: The process of handing off a client connection to another process failed.
Action: Turn on listener tracing and re-execute the operation. Verify that the listener and database instance are properly configured for direct handoff. If problem persists, call Oracle Support.

先试试 connect / as sysdba,看行不行,如果行的话,
再试试connect / @ as sysdba看看监听配置是否有问题。
如果这一步有问题,说明监听这块有问题。

1.cmd
2.sqlpls /nolog
3.connect sys/test as sysdba
没有问题
1.cmd
2.sqlplus /nolog
3.connect sys/test@test as sysdba
ORA-12518: TNS:listener could not hand off client connection
说明监听有问题

查到了相关资料如下:
http://www.dba-oracle.com/sf_ora_12518_tns_listener_could_not_hand_off_client_connection.htm

The reason ORA-12518 is being throw may be because of DEDICATED connections because Oracle 10g has a value of PROCESSES is defaulted at 150 which can be lower than necessary in a production system. Also, in pre-9i MTS, ORA-12518 may be thrown in SHARED SERVER because the dispatcher may have reached the maximum connection value, so it denies all other.

There are two solutions for ORA-12518 depending on which symptom you may be experiencing.
a.For the DEDICATED occurrence of ORA-12518, you would need to try increasing the PROCESSES parameter so that it can handle the needed number of processes. You can ensure that you have the needed value by monitoring the listener log for ORA-12518. Also, note that because the PROCESSES parameter is static, the database will need to be bounced.
b.If you are experiencing ORA-12518 because of a shared server issue, you first would need to use the command below to shutdown the dispatcher:
SQL> alter system shutdown immediate 'D001';
Then, add on new dispatchers:
SQL> alter system set DISPATCHERS = '(protocol=tcp)(dispatchers=3)';

通过以上资料分析得出可能出现问题的原因有两种:一是processes值设的过小,二是需要增加参数DISPATCHERS。

考虑到之前经常遇到ora-00020超出最大进程数的问题在安装数据库的时候已经把processes设到800了,为保险起见再show parameter processes

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     1000

再查进程数

SQL> select count(*) from v$session;

  COUNT(*)
----------
       224

所以最后得出结论应该不是processes的问题,应该用b方法来解决
1.connect sys/test as sysdba
2.show parameters dispatchers;
NAME                TYPE             VALUE
dispatchers         string           (protocol=tcp)(service=oracle10xdb)
max_dispatchers      integer  
5.SQL>alter system set dispatchers = '(protocol=tcp)(dispatchers=3)(service=oracle10xdb)';
system altered
问题解决。
当然根据实际情况你也可以用a方法解决,

可以用show parameters processes;

命令查看processes的值,数据库在安装时默认为150,对于大型应用,32位的oracle一定要注意这个问题

本文转载自:http://blog.sina.com.cn/s/blog_5904ea280100g614.html

共有 人打赏支持
rootliu
粉丝 5
博文 275
码字总数 2796
作品 0
海淀
数据库管理员
私信 提问

暂无文章

Zookeeper分析

沉稳2018
27分钟前
3
0
mockito learn one

mockito 介绍 mockito是一个很好用的模拟测试框架,能够让你写出简单优美测试,它不会给你残留的测试,因为它可读而且能够简单的验证错误。 如何使用? 引入依赖 <!-- https://mvnrepository...

writeademo
42分钟前
1
0
String转成JSON的实现

String转成JSON 这个依赖很重要,我们将围绕fastjson中的JSONObject这个类来谈转换 欢迎工作一到八年的Java工程师朋友们加入Java高级交流:854630135 本群提供免费的学习指导 架构资料 以及免...

编程SHA
54分钟前
1
0
详解Object.values(),Object.keys(),Object.entries(),Object.create(),includes()

(1)Object.keys() // 返回数组,成员是参数对象自身的(不含继承的)所有可遍历(enumerable)属性的键名。 eg:var obj = {a:1,b:'gy'} Object.keys(obj) // ['a','b'] (2)...

JamesView
今天
2
0
Git —— 创建版本库和提交回退版本

二、 创建版本库 版本库又叫做仓库,简单理解就是一个目录,这个目录里面所有的文件都可以被Git管理起来,每个文件的修改、删除,Git都可以跟踪,便于追踪历史与还原。找到一个合适的位置,创...

lwenhao
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部