win7x64 连接oracle 客户端 vs 2010调试 提示“ORA-12154: TNS: 无法解析指定的连接标识符 ”

本文介绍了解决在Windows 7 64位系统中使用Visual Studio 2010调试Oracle客户端时遇到的“ORA-12154:TNS:无法解析指定的连接标识符”的问题。通过更改Web服务器路径并调整命令行参数,最终实现了调试功能。

win7x64 连接oracle 客户端 vs 2010调试 提示“ORA-12154: TNS: 无法解析指定的连接标识符 ”


在debug的时候出现以下问题:

==========
ORA-12154: TNS: 无法解析指定的连接标识符

原因是调试用的web服务器默认在:C:\Program Files (x86)\Common Files\microsoft shared\DevServer\9.0\WebDev.WebServer.EXE,路径中的括号找的麻烦。
这个是路径问题
实例:

把WebDev.WebServer拷贝到C:\目录里
在运行里面输入cmd 输入c:\WebDev.WebServer.EXE /port:8796 /path:"Web应用程序路径" /vpath:"/"

之后在VS里面点击工具里面的附加到进程

之后就可以调试了


自己试过不管用,用了Porcesse Explorer看了,看来是(x86)在命令行里的影响,先卸载vs2010更换一下安装目录试试

重装之后并不管用,于是参考了

http://blog.miniasp.com/post/2009/08/31/Solve-ASPNET-cannot-connect-Oracle-DB-using-Development-Server.aspx

我使用了process explorer找出了WebServer4.0.EXE的Command line然后将program file (x86)改成短格式

"C:\PROGRA~2\Common Files\Microsoft Shared\DevServer\10.0\WebDev.WebServer40.exe"   /port:50266 /path:"E:\abcd\efg\abcd2012\zzzz2012\WebSite" /vpath:"/WebSite"

然后修改网站“属性页”中“服务器”选中“使用自定义服务器”然后再文本框中填入url(http://localhost:50266/WebSite/)

终于解决了。

### 常见原因分析 Oracle 错误 `ORA-12154` 表示客户端无法解析指定连接标识符,通常是因为 `tnsnames.ora` 文件中未定义目标数据库的连接描述,或者连接字符串格式不正确。在使用 `impdp` 或 `imp` 命令导入 `.dmp` 文件时,如果连接字符串中的服务名或 SID 配置错误,就会触发该错误[^1]。 例如,用户执行以下命令: ```bash impdp qd20_user/qd20_password@orcl directory=dump_dir dumpfile=qd20_1_320722.dmp full=y ``` 如果 `tnsnames.ora` 中未定义 `orcl` 的连接描述,则会报错 `ORA-12154`[^2]。 --- ### 解决方案 #### 1. 检查 `tnsnames.ora` 文件配置 确保 `tnsnames.ora` 文件中包含目标数据库的服务名定义。该文件通常位于 `$ORACLE_HOME/network/admin` 目录下。示例配置如下: ```plaintext ORCL = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = your_host_name)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl) ) ) ``` 若实际数据库服务名不同,例如为 `upbs`,则需修为对应的 `SERVICE_NAME` 或 `SID`[^2]。 #### 2. 使用完整连接字符串 如果无法 `tnsnames.ora` 文件,可以在导入命令中直接使用完整连接字符串,格式如下: ```bash impdp qd20_user/qd20_password@"(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=orcl)))" directory=dump_dir dumpfile=qd20_1_320722.dmp full=y ``` 这种方式可以绕过 `tnsnames.ora` 的配置限制,适用于临时测试或环境切换场景[^4]。 #### 3. 使用 `EZCONNECT` 简化连接方式 Oracle 提供了 `EZCONNECT` 方式,允许使用简化的连接语法: ```bash impdp qd20_user/qd20_password@//localhost:1521/orcl directory=dump_dir dumpfile=qd20_1_320722.dmp full=y ``` 该方式无需配置 `tnsnames.ora`,适合快速连接测试[^4]。 #### 4. 验证监听器状态 如果连接字符串正确但仍然报错,可能是因为监听器未启动。可以使用以下命令检查监听器状态并启动: ```bash lsnrctl status lsnrctl start ``` 确保监听器配置与 `tnsnames.ora` 中的 `ADDRESS` 部分一致[^2]。 --- ### 其他注意事项 - 确保 `ORACLE_HOME` 和 `PATH` 环境变量已正确设置,指向当前数据库版本的安装目录。 - 如果使用的是 Oracle 19c 或更高版本,注意服务名和 SID 的区别,推荐使用 `SERVICE_NAME` 而非 `SID`。 -Windows 系统中,`tnsnames.ora` 文件可能位于 `D:\oracle\product\19.0.0\dbhome_1\network\admin` 等路径下。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值