ORA-12541: TNS:监听程序当前无法识别连接描述符中请求的服务
ORA-12541: TNS:监听程序当前无法识别连接描述符中请求的服务解决办法
一、首先确保oracle的实例服务和监听服务都已经处于开启状态
从开始菜单中打开“Oracle Net Configuration Assistance”,选择“监听程序配置”,如下图所示,点击下一步(服务端)。

选择“重新配置”,如下图所示,点击下一步。

选择监听程序,如下图所示,选择协议,一般默认就好,点击下一步。


选择端口号,如下图所示,点击下一步。

选择“否”,如下图所示,点击下一步。

监听程序配置完成,如下图所示,点击下一步。

选择“本地网络服务名配置”,如下图所示,点击下一步。

选择“重新配置”,如下图所示,点击下一步。

“网络服务名”选择你自己数据库的名字,如下图所示,点击下一步。

填写“服务名”,其实就是你创建数据库时的全数据库名,如下图所示,点击下一步。

选择协议,默认选择“TCP”,如下图所示,点击下一步。

填写“主机名”,可以是你的IP地址,也可以是你的主机名;选择端口号,如下图所示,点击下一步。

选择“是,进行测试”,如下图所示,点击下一步。

选择“更改登陆”,填写“用户名”和“口令”,点击“确定”会显示“正在连接…测试成功。”,点击下一步。

填写“网络服务名”,就是你自己的数据库名,小编的是“zboracle”,点击下一步。“是否配置另一个服务名?”选择“否”,点击下一步,完成。
二、找到oracle服务端的lintener.ora配置文件
修改文件lintener.ora,找到以下代码段
(SID_LIST =
(SID_DESC =
(SID_NAME = CLRExtProc)
(ORACLE_HOME = D:\app\issuser\product\11.2.0\dbhome_1)
(PROGRAM = extproc)
(ENVS = "EXTPROC_DLLS=ONLY:D:\app\issuser\product\11.2.0\dbhome_1\bin\oraclr11.dll")
)
)
加入代码段后如下(其中路径根据自己当前数据库服务端的具体路径配置)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = CLRExtProc)
(ORACLE_HOME = D:\app\issuser\product\11.2.0\dbhome_1)
(PROGRAM = extproc)
(ENVS = "EXTPROC_DLLS=ONLY:D:\app\issuser\product\11.2.0\dbhome_1\bin\oraclr11.dll")
)
(SID_DESC =
(GLOBAL_DBNAME = CESHIDATA)
(ORACLE_HOME = D:\app\issuser\product\11.2.0\dbhome_1)
(SID_NAME = ORCL)
)
)
其中SID为对应的实例名称,GLOBAL_DBNAME为数据库服务名称,完成上述操作,重启监听服务 、windows命令services.msc(快速启动服务列表)
三、如上述两种均不能解决问题尝试如下
1、从开始菜单中打开“Net Manager,(服务端)如下图所示

这里注意你的服务SID和服务名只能以其中一个为服务标识(这里我们以SID)其转换通过使用oracle8发行版8.0兼容标识
2.然后打开客户端的“Net Manager“如下图所示

选择你链接的服务,注意右侧SID或者服务名要和服务端配置的同步

浙公网安备 33010602011771号