ORA-12523: TNS: 监听程序无法找到适用于客户机连接的例程
2015-01-06 15:55
337 查看
今天使用PL/SQLDeveloper连接到一台新的测试服务器时,遇到ORA错误:ORA-12523:TNS:监听程序无法找到适用于客户机连接的例程。对应的监听日志文件里面错误为TNS-12523:TNS:listenercouldnotfindinstanceappropriatefortheclientconnection首先使用oerr命令查看ORA-12523错误提示的详细内容
按照提示信息,我首先运行"lsnrctlservices"查看数据库实例是否注册了监听服务,并且监听服务是否处于就绪状态。
然后检查了一下本地的tnsnames.ora的配置情况,发现其使用共享服务器模式(SHARED)连接到数据库
TEST=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.16.22)(PORT=1521))
(CONNECT_DATA=
(SERVER=SHARED)
(SERVICE_NAME=epps)
)
检查查看测试服务器,确认其配置是否开启了共享服务器(SharedServer)模式,如下所示,数据库为开启共享服务器模式
但是为什么数据库启用了共享服务器模式,客户端无法以SHARED模式登陆数据库?那么我先修改客户端的连接方式为专用(DEDICATED)模式
TEST=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.16.22)(PORT=1521))
(CONNECT_DATA=
(SERVER=DEDICATED)
(SERVICE_NAME=epps)
)
)
此时以使用PL/SQLDeveloper登录数据库,发现OK,不会出现ORA-12523错误哦。查看当前会话,你可以通过下面SQL发现使用专用方式连接数据库。
当然,你可以用下面SQL语句查看,其中GET253194为本人计算机名称
修改tnsnames.ora,将(SERVER=DEDICATED)删除(如下所示),依然可以连接到数据库,查看其连接方式,发现它会自己选择专用连接方式。也就是说默认为专用模式连接,除非指定为共享服务器模式
TEST=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.16.22)(PORT=1521))
(CONNECT_DATA=
(SERVICE_NAME=epps)
)
)
那么问题出在哪里呢?很是纳闷,明明服务器为共享服务器模式,应该可以以共享服务连接方式连接数据库的。最后在折腾中发现,这台服务器本来是生产服务器,后来退下来被我当做测试服务器,于是我将IP地址改为了192.168.16.22,但是当时只是修改了/etc/sysconfig/network-scripts/ifcfg-eth0系统文件.忘记修改/etc/hosts对应的IP地址。我将/etc/hosts中的IP地址修改过来后,发现ORA-12523错误不见了,问题完满解决。但是本质的原因呢?看来还需要深入了解监听服务原理。多去学习、了解一些相关资料。留待后面补充。
[oracle@DB-Serveradmin]$oerrora12523
12523,00000,"TNS:listenercouldnotfindinstanceappropriatefortheclientconnection"
//*Cause:Thelistenercouldnotfindanyavailable(database)instances,
//thatareappropriatefortheclientconnection.
//*Action:Run"lsnrctlservices"toensurethattheinstance(s)are
//registeredwiththelistener,andhavestatusREADY.
按照提示信息,我首先运行"lsnrctlservices"查看数据库实例是否注册了监听服务,并且监听服务是否处于就绪状态。
[oracle@DB-Serveradmin]$lsnrctlservices
LSNRCTLforLinux:Version10.2.0.4.0-Productionon06-JAN-201514:24:23
Copyright(c)1991,2007,Oracle.Allrightsreserved.
Connectingto(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.16.22)(PORT=1521)))
ServicesSummary...
Service"EPPS"has1instance(s).
Instance"EPPS",statusUNKNOWN,has1handler(s)forthisservice...
Handler(s):
"DEDICATED"established:0refused:0
LOCALSERVER
Thecommandcompletedsuccessfully
然后检查了一下本地的tnsnames.ora的配置情况,发现其使用共享服务器模式(SHARED)连接到数据库
TEST=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.16.22)(PORT=1521))
(CONNECT_DATA=
(SERVER=SHARED)
(SERVICE_NAME=epps)
)
检查查看测试服务器,确认其配置是否开启了共享服务器(SharedServer)模式,如下所示,数据库为开启共享服务器模式
SQL>showparametershared_server
NAMETYPEVALUE
-----------------------------------------------------------------------------
max_shared_serversinteger40
shared_server_sessionsinteger
shared_serversinteger1
SQL>
SQL>showparameterdispatchers
NAMETYPEVALUE
--------------------------------------------------------------------------------------------------
dispatchersstring(protocol=TCP)
max_dispatchersinteger
SQL>
但是为什么数据库启用了共享服务器模式,客户端无法以SHARED模式登陆数据库?那么我先修改客户端的连接方式为专用(DEDICATED)模式
TEST=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.16.22)(PORT=1521))
(CONNECT_DATA=
(SERVER=DEDICATED)
(SERVICE_NAME=epps)
)
)
此时以使用PL/SQLDeveloper登录数据库,发现OK,不会出现ORA-12523错误哦。查看当前会话,你可以通过下面SQL发现使用专用方式连接数据库。
SQL>selectserverfromv$sessionwheresid=(selectsidfromv$mystatwhererownum<2);
SERVER
---------
DEDICATED
当然,你可以用下面SQL语句查看,其中GET253194为本人计算机名称
COLUSERNAMEFORA20
COLOSUSERFORA10
COLMACHINEFORA20
COLTERMINALFORA20;
SELECTSID,USERNAME,OSUSER,MACHINE,TERMINAL,SERVER
FROMV$SESSION
WHERETERMINAL='GET253194';
修改tnsnames.ora,将(SERVER=DEDICATED)删除(如下所示),依然可以连接到数据库,查看其连接方式,发现它会自己选择专用连接方式。也就是说默认为专用模式连接,除非指定为共享服务器模式
TEST=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.16.22)(PORT=1521))
(CONNECT_DATA=
(SERVICE_NAME=epps)
)
)
SQL>selectserverfromv$sessionwheresid=(selectsidfromv$mystatwhererownum<2);
SERVER
---------
DEDICATED
那么问题出在哪里呢?很是纳闷,明明服务器为共享服务器模式,应该可以以共享服务连接方式连接数据库的。最后在折腾中发现,这台服务器本来是生产服务器,后来退下来被我当做测试服务器,于是我将IP地址改为了192.168.16.22,但是当时只是修改了/etc/sysconfig/network-scripts/ifcfg-eth0系统文件.忘记修改/etc/hosts对应的IP地址。我将/etc/hosts中的IP地址修改过来后,发现ORA-12523错误不见了,问题完满解决。但是本质的原因呢?看来还需要深入了解监听服务原理。多去学习、了解一些相关资料。留待后面补充。
相关文章推荐
- ORA-12523: TNS:监听程序无法找到适用于客户机连接的例程
- ORA-12523: TNS:监听程序无法找到适用于客户机连接的例程
- oracle共享服务器配置(ora-12523 tns 监听程序未找到适用于客户机连接的例程)
- TNS: 监听程序未找到适用于客户机连接的例程
- ora-12528 TNS 监听程序所有适用例程都无法建立新连接
- ORA-12518 TNS:监听程序无法分发客户机连接 解决办法
- ORA-12518 TNS:监听程序无法分发客户机连接
- ORA-12518 TNS:监听程序无法分发客户机连接的解决办法
- 解决(Oracle)ORA-12528: TNS: 监听程序: 所有适用例程都无法建立新连接 问题
- ORA-12518 TNS:监听程序无法分发客户机连接 解决办法
- Oracle 10g 异常:ORA-12518: TNS: 监听程序无法分发客户机连接 解决方案
- ORA-12518 TNS:监听程序无法分发客户机连接 解决办法
- ORA-12518 TNS监听程序无法分发客户机连接的解决办法
- ORA-12528 TNS: 监听程序: 所有适用例程都无法建立新连接 解决办法
- ORA-12518: TNS: 监听程序无法分发客户机连接
- ora-12528 TNS 监听程序所有适用例程都无法建立新连接
- [转载]ORA-12518 TNS:监听程序无法分发客户机连接 解决办法
- ORA-12518 TNS:监听程序无法分发客户机连接 解决办法
- ORA-12518: TNS: 监听程序无法分发客户机连接
- ORA-12518 TNS:监听程序无法分发客户机连接 解决办法