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或者服务名要和服务端配置的同步

 

 

 

posted @ 2017-06-01 14:41  十月围城小童鞋  阅读(3150)  评论(0)    收藏  举报