首页 > 代码库 > oracle_协议适配器错误_协议适配器不可加载_TNS监听程序在connect-data中未获得service-name

oracle_协议适配器错误_协议适配器不可加载_TNS监听程序在connect-data中未获得service-name

最近在使用powerdesigner连接远程oracle进行反向工程操作时,出现了一些问题,这些问题很普遍,大多是由于配置引起的

说明:
(1)远程数据库版本问 oracle11g 64bit


(2)本地同时安装 :
oracle11g client 32bit
oracle11g 64bit

(3)本机安装powerdesigner 15.2

(3)前期准备:
直接拷贝oracle服务端的%ORACLE_HOME%\network\admin\tnsnames.ora文件
到oracle客户端%ORACLE_Client%\network\admin\ 目录中

问题:
问题一、ORA-12560: TNS: 协议适配器错误
问题二、ORA-12557: TNS: 协议适配器不可加载
问题三、ORA-12504:TNS监听程序在connect-data中未获得service-name

参考文章
http://coffeehot.iteye.com/blog/2151955

http://blog.sina.com.cn/s/blog_677d8b260100w0vg.html

http://worms.blog.51cto.com/969144/1293265

http://quentinxu.iteye.com/blog/1988107

http://www.xuebuyuan.com/1026765.html


使用powerdesigner连接远程oracle进行反向工程时每一步出现的问题以及处理总结:

 

 

问题一:
启动反向工程连接远程oracle数据库,报第一个错误
ORA-12560: TNS: 协议适配器错误

经确认问题所在为本地同时安装了oracle服务端,以及oracle客户端,
且本地PATH环境变量同时写入的 oracle服务端以及oracle客户端的bin目录,

本人处理方法为,PATH环境变量中的本地oracle服务端bin目录字符串,仅保留本地oracle客户端的bin目录路径字符串。
注:
以上的参考链接中包含的方法有
(1) 去除PATH环境变量的client的bin目录,
(2) 切换PATH环境变量中的本地oracle服务端bin目录路径字符串 到 本地oracle客户端的bin目录路径字符串之前,
(3) 设置ORACLE_SID

本人尝试以上方式后未能成功

问题二:
在完成以上配置处理后,重新执行反向工程,连接远程oracle,此时又报出另一个错误
ORA-12557: TNS: 协议适配器不可加载

在参看了 http://blog.sina.com.cn/s/blog_677d8b260100w0vg.html
处理步骤为
(1)执行以下命令注册oracle客户端的 oracle ole 驱动,例如本机目录如下
regsvr32 E:\app32\Administrator\product\11.2.0\dbhome_1\BIN\OraOLEDB11.dll

这样就完成了注册,
注:
由于这里只涉及powerdesigner连接oracle进行反向工程,因此关于plsql的操作不在处理范围之内。

问题三:
完成以上两个问题的处理,再次执行powerdesigner的反向工程,连接远程oracle,继续报错

ORA-12504:TNS监听程序在connect-data中未获得service-name

该问题可以确认是客户端 %oracle_client%\network\admin\目录 tnsnames.ora 文件的配置问题

以下是配置的例子

localhost =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
)
(CONNECT_DATA =http://www.mamicode.com/
(SERVICE_NAME = ORCL)
)

)

orcl.16.56.232 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.56.232)(PORT = 1521))
)
(CONNECT_DATA =http://www.mamicode.com/
(SERVICE_NAME = orcl.16.56.232)
)
)


大致说明为:我配置了连接本地oracle服务端的localhost
以及连接远程oracle服务端的172.16.56.232

总结:
1、出现类似问题,首先检查确认oracle服务是否正常启动
2、客户端环境变量配置是否正确(参考文中内容)
3、同时安装了服务端以及客户端时,配置尤为需要注意。

 

oracle_协议适配器错误_协议适配器不可加载_TNS监听程序在connect-data中未获得service-name