转载自:http://blog.csdn.net/gdy1039/archive/2007/07/15/1692205.aspx
作者:GDY1039
最近学习ORACLE SHARED SERVER的时候遇到一个奇怪的错误。
以下模拟错误并展示解决方法
环境:WINXP_SP2_CHS + ORACLE_R2
服务器配置为专用服务器,并且运行正常。
1:使用SQLPLUS把服务器改变SHARED SERVER
D:\>sqlplus sys/sys@orcl as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on 星期日 7月 15 18:08:43 2007
Copyright (c) 1982, 2005, Oracle. All rights reserved.
连接到:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
SQL> alter system set shared_servers=1;
系统已更改。
SQL>
然后使用LSNRCTL查看监听器状态,马上就会发现有很多连接被拒绝
D:\Documents and Settings\gdy>lsnrctl service
LSNRCTL for 32-bit Windows: Version 10.2.0.1.0 - Production on 15-7月 -2007 18:1
1:19
Copyright (c) 1991, 2005, Oracle. All rights reserved.
正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))
服务摘要..
服务 "PLSExtProc" 包含 1 个例程。
例程 "PLSExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
处理程序:
"DEDICATED" 已建立:0 已被拒绝:0
LOCAL SERVER
服务 "orcl" 包含 1 个例程。
例程 "orcl", 状态 READY, 包含此服务的 3 个处理程序...
处理程序:
"DEDICATED" 已建立:33 已拒绝:0 状态:ready
LOCAL SERVER
"D001" 已建立:0 已被拒绝:9 当前: 0 最大: 1002 状态: ready
DISPATCHER <machine: NETPLUS, pid: 3448>
(ADDRESS=(PROTOCOL=tcps)(HOST=netplus)(PORT=1934))
"D000" 已建立:1 已被拒绝:0 当前: 1 最大: 1002 状态: ready
DISPATCHER <machine: NETPLUS, pid: 3996>
(ADDRESS=(PROTOCOL=tcp)(HOST=netplus)(PORT=1933))
服务 "orcl_XPT" 包含 1 个例程。
例程 "orcl", 状态 READY, 包含此服务的 3 个处理程序...
处理程序:
"DEDICATED" 已建立:33 已拒绝:0 状态:ready
LOCAL SERVER
"D001" 已建立:0 已被拒绝:9 当前: 0 最大: 1002 状态: ready
DISPATCHER <machine: NETPLUS, pid: 3448>
(ADDRESS=(PROTOCOL=tcps)(HOST=netplus)(PORT=1934))
"D000" 已建立:1 已被拒绝:0 当前: 1 最大: 1002 状态: ready
DISPATCHER <machine: NETPLUS, pid: 3996>
(ADDRESS=(PROTOCOL=tcp)(HOST=netplus)(PORT=1933))
命令执行成功
D:\Documents and Settings\gdy>
查看监听器日志发现如下错误
15-7月 -2007 18:12:43 * (CONNECT_DATA=(SID=orcl)(CID=(PROGRAM=D:\oracle\product\10.2.0\db_1\bin\emagent.exe)(HOST=NETPLUS)(USER=SYSTEM))) * (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.1)(PORT=2101)) * establish * orcl * 12518
TNS-12518: TNS: 监听程序无法分发客户机连接
ORA-28759: 无法打开文件
TNS-12560: TNS: 协议适配器错误
TNS-00540: SSL 协议适配器错误
而且在EM中会显示如下错误
到实例的代理连接 |
|
|
|
状态 |
|
|
详细资料 |
|
无法连接到数据库实例: ORA-12518: TNS: 监听程序无法分发客户机连接 (DBD ERROR: OCIServerAttach)。 |
|
|
|
上网搜索后发现可能是如下的原因:客户连接到监听器后,监听器把客户重定向到调度程序端口(很可能不是1521端口),由于操作系统问题,这些连接会被拒绝。
要解决这个问题,只需要在LISTENER。ORA的头部加入这一行DIRECT_HANDOFF_TTC_LISTENER = OFF 即可。
2:根据搜索到的原因,我们在LISTENER。ORA头部加入这一行
# listener.ora Network Configuration File: D:\oracle\product\10.2.0\db_1\NETWORK\ADMIN\listener.ora
# Generated by Oracle configuration tools.
DIRECT_HANDOFF_TTC_LISTENER = OFF
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = D:\oracle\product\10.2.0\db_1)
(PROGRAM = extproc)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
)
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.1)(PORT = 1521))
)
)
3:执行以下命令重启监听器和EM
lsnrctl stop
lsnrctl start
emctl stop dbconsole
emctl start dbconsole
4:查看监听器状态和登入EM,看到状态,一切正常
D:\Documents and Settings\gdy>lsnrctl service
LSNRCTL for 32-bit Windows: Version 10.2.0.1.0 - Production on 15-7月 -2007 18:2
8:19
Copyright (c) 1991, 2005, Oracle. All rights reserved.
正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))
服务摘要..
服务 "PLSExtProc" 包含 1 个例程。
例程 "PLSExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
处理程序:
"DEDICATED" 已建立:0 已被拒绝:0
LOCAL SERVER
服务 "orcl" 包含 1 个例程。
例程 "orcl", 状态 READY, 包含此服务的 3 个处理程序...
处理程序:
"D001" 已建立:0 已被拒绝:0 当前: 0 最大: 1002 状态: ready
DISPATCHER <machine: NETPLUS, pid: 3448>
(ADDRESS=(PROTOCOL=tcps)(HOST=netplus)(PORT=1934))
"D000" 已建立:7 已被拒绝:0 当前: 6 最大: 1002 状态: ready
DISPATCHER <machine: NETPLUS, pid: 3996>
(ADDRESS=(PROTOCOL=tcp)(HOST=netplus)(PORT=1933))
"DEDICATED" 已建立:1 已拒绝:0 状态:ready
LOCAL SERVER
服务 "orcl_XPT" 包含 1 个例程。
例程 "orcl", 状态 READY, 包含此服务的 3 个处理程序...
处理程序:
"D001" 已建立:0 已被拒绝:0 当前: 0 最大: 1002 状态: ready
DISPATCHER <machine: NETPLUS, pid: 3448>
(ADDRESS=(PROTOCOL=tcps)(HOST=netplus)(PORT=1934))
"D000" 已建立:7 已被拒绝:0 当前: 6 最大: 1002 状态: ready
DISPATCHER <machine: NETPLUS, pid: 3996>
(ADDRESS=(PROTOCOL=tcp)(HOST=netplus)(PORT=1933))
"DEDICATED" 已建立:1 已拒绝:0 状态:ready
LOCAL SERVER
命令执行成功
D:\Documents and Settings\gdy>
官方论坛有说到这个问题
http://forums.oracle.com/forums/thread.jspa?threadID=267593
分享到:
相关推荐
在Oracle数据库管理过程中,遇到ORA-12518错误是较为常见的问题之一。此错误通常发生在客户端试图连接到数据库服务器的过程中,当监听器无法将客户端连接顺利地移交给服务器进程或调度进程时触发。本文旨在详细介绍...
TNS(Transparent Network Substrate)协议是Oracle数据库系统中用于实现客户端与服务端之间通信的重要协议之一。该协议支持多种传输方式,包括TCP/IP协议、SSL加密的TCP/IP协议、命名管道以及IPC(Inter-Process ...
ORACLE数据库-TNS协议分析详解ORACLE数据库-TNS协议分析详解ORACLE数据库-TNS协议分析详解ORACLE数据库-TNS协议分析详解
TNS-12541: TNS: 无监听程序 TNS-12560: TNS: 协议适配器错误 TNS-00511: 无监听程序 文章转自:http://www.luocs.com/archives/464.html 此文版权归作者 – yaogang所有,转载请注明yaogang©www.luocs.com。 ...
RAC(Real Application Clusters)是Oracle提供的高可用性解决方案,允许多台服务器共享同一数据库实例,进一步提高系统的可靠性和性能。 Oracle数据库还涉及到ACL(Access Control List)的管理,用于控制网络访问...
### Oracle导dmp出现文件ORA-12154 TNS 无法解析指定的连接标识符解决方案 #### 问题背景 在进行Oracle数据库的操作时,经常会遇到“ORA-12154 TNS 无法解析指定的连接标识符”这样的错误提示。此问题通常发生在...
oracle远程连接服务器出现 ORA-12170 TNS:连接超时 解决办法,需要的朋友可以参考一下
TNS-12500解决过程 TNS-12500错误是Oracle数据库中的一种常见错误,发生在用户尝试连接数据库服务器时。该错误的主要原因是系统资源耗竭,导致Oracle数据库无法分配足够的内存来处理新的连接请求。 在本例中,...
1234 SolutionRecommendations for protecting against this vulnerability can be found at:My Oracle Support Note 1340831.1 for Oracle Database deployments that use Oracle Real Application Clusters (RAC)....
ORACLE-TNS协议连接认证过程与包分析
listener-tnsnamelistener-tnsnamelistener-tnsnamelistener-tnsnamelistener-tnsnamelistener-tnsnamelistener-tnsnamelistener-tnsname
### Oracle TNS浅析 #### 一、Oracle TNS简介 **TNS( Transparent Network Substrate)** 是Oracle Net的一部分,主要用于管理和配置Oracle数据库与客户端之间的连接。它为客户端提供了透明的网络通信机制,使得...
oracle 的 orcl TNS,是oracle自带的TNS,丢失的可以及时找回
oracle TNS配置方法 大家可以仿照里面来进行配置
#### 三、解决步骤 针对上述原因,可以采取以下措施逐一排查并解决问题: ##### 1. 启动监听服务 - **Windows平台**: - 打开“开始”菜单,选择“所有程序” -> “管理工具” -> “服务”,找到并启动“Oracle...
在 Oracle 数据库环境中,TNS(Transparent Network Substrate)是用于连接客户端应用程序到数据库服务器的关键组件之一。它提供了一种透明的方式,使得客户端能够通过网络与数据库进行通信而无需关心底层网络协议的...
Oracle TNS(Transparent Network Substrate)协议是Oracle数据库系统中用于网络通信的一种协议,它提供了数据库连接服务,允许客户端应用程序与远程Oracle服务器进行交互。在深入理解Oracle TNS协议解码之前,我们...