win7x64 连接oracle 客户端 vs 2010调试 提示“ORA-12154: TNS: 无法解析指定的连接标识符 ”ORA-06413 问题(转)
2013-06-04 10:00
651 查看
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/)
终于解决了。
我遇到的错误如下:
错误发生点是在「建立连线」的程式码,只要Open Connection 就会立即出错。
这问题首先是出在我同事的身上,他主机在一个多月前换成Windows Server 2008 (x64),而我是最近才换到Windows 7 (x64),问题跟他一模一样,因此也花了好多时间研究分析,直到刚刚跟黑大讨论一番后终于给我找出解法。
先说说我电脑的安装步骤与执行环境:
安装Oracle Database 10g Client Release 2 (10.2.0.1.0) for Microsoft Windows (32-bit)
设定TNSNAMES.ORA 设定档( 100% 肯定设定没问题 )
使用SQL Plus 可以正常连线
使用SQL Developer 可以正常连线
在Visual Studio 中可以建置(Build)专案,建置/编译后的组件部署到测试机也都没问题
在Visual Studio 中使用内建的ASP.NET 开发伺服器进行测试
利用Process Explorer查看WebDev.WebServer.EXE程式,载入的组件都没问题(正确载入)
利用Prcoess Monitor查看WebDev.WebServer.EXE程式,载入的Oracle Client相关参数档路径也都正确无误
想破头无法解决时,黑大建议我用最简单的方式测试资料库连线(如下范例),虽然我自己已经测试数十遍了,但我还是不铁齿,听话的再测一次( 魔鬼总在细节里):
view plain copy to clipboard print ?
using (OracleConnection cn = new OracleConnection(
"Data Source=MyName;" +
"Persist Security Info=True;" +
"User ID=user;" +
"Password=pass" ))
{
cn.Open(); //在此发生【 ORA-12154: TNS:无法解析指定的连线ID 】的错误
}
这时我才想到将TNSNAME 的完整定义移到这里试试看,请看如下范例:
view plain copy to clipboard print ?
using (OracleConnection cn = new OracleConnection(
"Data Source=" +
" (DESCRIPTION =" +
" (ADDRESS_LIST =" +
" (ADDRESS = (PROTOCOL = TCP)(HOST = 10.0.0.245)(PORT = 1521))" +
" )" +
" (CONNECT_DATA =" +
" (SERVICE_NAME = MyName)" +
" )" +
" )" +
";Persist Security Info=True;User ID=user;Password=pass" ))
{
cn.Open(); //在此时发生【 ORA-6413:连线未被开启】的错误
}
这就神奇啦,错误讯息竟然不一样,,中英文错误讯息如下:
多一条错误讯息就多一条线索,对追Code 绝对有帮助。( 好像在玩侦探游戏一样^^ )
这时就被我搜出一篇文章ORA-06413: Connection not open.答案就在其中,原来错误发生的原因原来是我的ASP.NET开发伺服器( WebDev.WebServer.EXE )执行档的路径有特殊字元导致:
就是这该死的(x86)出现在路径中,导致我的ASP.NET怎样都无法连线到程式,为了验证确定就是这问题,我试着利用Process Explorer找出WebDev.WebServer.EXE的启动参数:
并重新透过cmd.exe (命令提示字元)启动WebDev.WebServer.EXE,这时故意用「短目录」启动ASP.NET开发伺服器,如下指令:
"C:\ PROGRA~2 \Common Files\Microsoft Shared\DevServer\9.0\WebDev.WebServer.EX
E" /port:5970 /path:"D:\XXXX\XXX\Website" /vpath:"/"
神奇的事这就样发生,Oracle 资料库竟然真的连上了!!
我的解决之道
改用Windows 7 内建的IIS7 进行网站执行与侦错,不用ASP.NET 开发伺服器了。Windows 7 内建的IIS7 可新增多个网站,管理上也颇方便,不像Windows XP 只能新增一个网站
改用Visual Studio巨集启动ASP.NET开发伺服器侦错,细节可参考我的另一篇文章:启动ASP.NET侦错模式的另一种比按下F5还快的方式
本次除错心得
不要铁齿,越觉得不可能发生的地方越有可能是破案的核心关键!
找个人聊聊你所遇到的错误,在互动、对话的过程中也许会想到一些你不曾想到的地方。
「程式除错」不但要有「经验」更要有「创意」,当你拥有更多的「生活体验」(程设的生活),相对的创意也就越多。
熟悉多种除错工具,并在工具间交互比对、验证错误,一定可以看出一些端倪,但不要只是会「用」工具而已,而是要熟悉工具「背后的原理」,这样才有助于你思考问题的本质与问题背后的问题。
在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/)
终于解决了。
我遇到的错误如下:
ORA-12154: TNS: 无法解析指定的连线ID
ORA-12154:TNS:could not resolve service name
错误发生点是在「建立连线」的程式码,只要Open Connection 就会立即出错。
这问题首先是出在我同事的身上,他主机在一个多月前换成Windows Server 2008 (x64),而我是最近才换到Windows 7 (x64),问题跟他一模一样,因此也花了好多时间研究分析,直到刚刚跟黑大讨论一番后终于给我找出解法。
先说说我电脑的安装步骤与执行环境:
安装Oracle Database 10g Client Release 2 (10.2.0.1.0) for Microsoft Windows (32-bit)
设定TNSNAMES.ORA 设定档( 100% 肯定设定没问题 )
使用SQL Plus 可以正常连线
使用SQL Developer 可以正常连线
在Visual Studio 中可以建置(Build)专案,建置/编译后的组件部署到测试机也都没问题
在Visual Studio 中使用内建的ASP.NET 开发伺服器进行测试
利用Process Explorer查看WebDev.WebServer.EXE程式,载入的组件都没问题(正确载入)
利用Prcoess Monitor查看WebDev.WebServer.EXE程式,载入的Oracle Client相关参数档路径也都正确无误
想破头无法解决时,黑大建议我用最简单的方式测试资料库连线(如下范例),虽然我自己已经测试数十遍了,但我还是不铁齿,听话的再测一次( 魔鬼总在细节里):
view plain copy to clipboard print ?
using (OracleConnection cn = new OracleConnection(
"Data Source=MyName;" +
"Persist Security Info=True;" +
"User ID=user;" +
"Password=pass" ))
{
cn.Open(); //在此发生【 ORA-12154: TNS:无法解析指定的连线ID 】的错误
}
这时我才想到将TNSNAME 的完整定义移到这里试试看,请看如下范例:
view plain copy to clipboard print ?
using (OracleConnection cn = new OracleConnection(
"Data Source=" +
" (DESCRIPTION =" +
" (ADDRESS_LIST =" +
" (ADDRESS = (PROTOCOL = TCP)(HOST = 10.0.0.245)(PORT = 1521))" +
" )" +
" (CONNECT_DATA =" +
" (SERVICE_NAME = MyName)" +
" )" +
" )" +
";Persist Security Info=True;User ID=user;Password=pass" ))
{
cn.Open(); //在此时发生【 ORA-6413:连线未被开启】的错误
}
这就神奇啦,错误讯息竟然不一样,,中英文错误讯息如下:
ORA-6413: 连线未被开启
ORA-06413: Connection not open
多一条错误讯息就多一条线索,对追Code 绝对有帮助。( 好像在玩侦探游戏一样^^ )
这时就被我搜出一篇文章ORA-06413: Connection not open.答案就在其中,原来错误发生的原因原来是我的ASP.NET开发伺服器( WebDev.WebServer.EXE )执行档的路径有特殊字元导致:
C:\Program Files (x86)\Common Files\Microsoft Shared\DevServer\9.0\WebDev.WebServer.EXE
就是这该死的(x86)出现在路径中,导致我的ASP.NET怎样都无法连线到程式,为了验证确定就是这问题,我试着利用Process Explorer找出WebDev.WebServer.EXE的启动参数:
并重新透过cmd.exe (命令提示字元)启动WebDev.WebServer.EXE,这时故意用「短目录」启动ASP.NET开发伺服器,如下指令:
"C:\ PROGRA~2 \Common Files\Microsoft Shared\DevServer\9.0\WebDev.WebServer.EX
E" /port:5970 /path:"D:\XXXX\XXX\Website" /vpath:"/"
神奇的事这就样发生,Oracle 资料库竟然真的连上了!!
我的解决之道
改用Windows 7 内建的IIS7 进行网站执行与侦错,不用ASP.NET 开发伺服器了。Windows 7 内建的IIS7 可新增多个网站,管理上也颇方便,不像Windows XP 只能新增一个网站
改用Visual Studio巨集启动ASP.NET开发伺服器侦错,细节可参考我的另一篇文章:启动ASP.NET侦错模式的另一种比按下F5还快的方式
本次除错心得
不要铁齿,越觉得不可能发生的地方越有可能是破案的核心关键!
找个人聊聊你所遇到的错误,在互动、对话的过程中也许会想到一些你不曾想到的地方。
「程式除错」不但要有「经验」更要有「创意」,当你拥有更多的「生活体验」(程设的生活),相对的创意也就越多。
熟悉多种除错工具,并在工具间交互比对、验证错误,一定可以看出一些端倪,但不要只是会「用」工具而已,而是要熟悉工具「背后的原理」,这样才有助于你思考问题的本质与问题背后的问题。
相关文章推荐
- win7x64 连接oracle 客户端 vs 2010调试 提示“ORA-12154: TNS: 无法解析指定的连接标识符 ”
- win7x64 连接oracle 客户端 vs 2010调试 提示“ORA-12154: TNS: 无法解析指定的连接标识符 ”
- 连接oracle 客户端 vs 2010调试 提示“ORA-12154: TNS: 无法解析指定的连接标识符 ”
- 关于win7 x64 连接oracle 客户端 VS2010调试 提示“ORA-12154: TNS: 无法解析指定的连接标识符 ”
- 64位oracle数据库安装32位plsql解决方法/关于win7 x64 连接oracle 客户端 VS2010调试 提示“ORA-12154: TNS: 无法解析指定的连接标识符 ”
- 关于win7 x64 连接oracle 客户端 VS2010调试 提示“ORA-12154: TNS: 无法解析指定的连接标识符 ”
- 关于win7 x64 连接oracle 客户端 VS2010调试 提示“ORA-12154: TNS: 无法解析指定的连接标识符 ” 原创 2013年04月13日 12:50:56 标签:Oracle
- oracle 客户端安装问题 ORA-12154: TNS: 无法解析指定的连接标识符
- oracle提示 ORA-12154: TNS: 无法解析指定的连接标识符 OCIEnvCreate 失败, 返回代码为-1,但错误消息文本不可用
- PL/SQL Developer结合oracle精简客户端使用配置错误代码ORA-12154: TNS: 无法解析指定的连接标识符
- CMD命令窗口登陆Oracle数据库提示ORA-12560: TNS: 协议适配器错误问题,PL/SQL登陆提示ORA-12154:TNS无法解析指定的连接标识符
- win7 64位 VS2010调试提示“ORA-12154: TNS: 无法解析指定的连接标识符”的解决方法
- Oracle 连接问题 ORA-12154: TNS: 无法解析指定的连接标识符(来源:Internet)
- Oracle导dmp出现文件ORA-12154: TNS: 无法解析指定的连接标识符问题的解决方案
- win2003下安装了oracle XE后登陆PLSQL Developer弹出提示:ORA-12154: TNS: 无法解析指定的连接标识符
- Oracle几个基础配置问题:ORA-12154: TNS: 无法解析指定的连接标识符、ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务、ORA-12516 TNS监听程序找不到符合协议堆栈要求的可用处理程序
- win7 64位 VS2010调试提示“ORA-12154: TNS: 无法解析指定的连接标识符”的解决方法
- Oracle Form Builder问题集锦(第一弹:连接报错:ORA-12154:TNS:无法解析指定的连接标识符)
- OracleConnection.Open()提示ORA-12154: TNS: 无法解析指定的连接标识符
- 解决:win7 ,64位下,vs 2008 ,oracle 数据库使用内置的web server 报ORA-12154: TNS: 无法解析指定的连接标识符