首页 > Linux操作系统 > Linux操作系统 > ora-12518错误小结
Rman 连接catalog数据库的时候报告
ORA-12518: TNS:listener could not hand off client connection
使用tnsping则可以ping通
导致这种错误的原因大致有以下几种:
1
数据库load过高,导致连接无法完成authentication,该阶段需要调用一系列递归语句;当数据库正在经历比较严重的latch contention(如row cache lock),可能会在有效时间内无法完成解析
2
Dedicated mode: 数据库process值达到上限,调大此值并rebouce数据库后生效
MTS: dispatcher到达连接上限,可以加大dispatcher数量
3
内存不足,连接进程无法获取到足够多的内存
4
网速过慢
使用TCP/IP需要三次握手,可尝试改为IPC;
另外可调大INBOUND_CONNECT_TIMEOUT值(listener.ora/sqlnet.ora),10.2.0.1后默认为60秒(据说是为了防止DOS攻击而设).
可在客户端运行telnet serverIP port(即telnet *.*.*.* 1521),会在INBOUND_CONNECT_TIMEOUT规定的时间timeout
通常遇到此类问题时,采用以下步骤:
如果能登陆oracle server,尝试本地连接数据库;
本地连接可以很快登陆数据库,则查看网络是否通畅(通常tnsping并不能反映实际情况);
本地连接很慢,查看数据库目前是否压力很大,有没有比较严重的latch contention;
如果不能登陆,则极有可能是数据库进程达到上限,查看alertlog进一步判断;
若还不能解决问题,则开启listener跟踪文件,设置以下参数并reload监听器
TRACE_LEVEL_
TRACE_FILE_
TRACE_DIRECTORY_
TRACE_TIMESTAMP_CLIENT = ON
另外有可能是bug作祟,比如windows上的10.2G,每个dedicated连接都消耗内存约2.14M,高于10.1的1.5M,会导致内存不足进而触发此错误(Bug 5108234)
注:通常tnsping只是为了验证listener是否启动,不可用来进行网速检验;
其工作原理如下:
Tnsping向listener地址发送一个连接包(NSPTCN);listener接受后返回一个拒绝包(NSPTRF);tnsping计算往返时间并显示出来
DNS解析时间过长/网速过慢/监听器太忙/服务器压力过大 都可以导致tnsping慢
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/15480802/viewspace-716599/ ,如需转载,请注明出处,否则将追究法律责任。