设为首页 收藏本站
查看: 1079|回复: 0

[经验分享] VB6 程序连Ora-06413解决手札

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-12-15 09:26:23 | 显示全部楼层 |阅读模式
原由:Win7 x64平台,Vb6程序启动,直接启用不了;
Vb6比较古老了,应当是石器时代的产物;这错误一看应当与oracle环境变量有关,而朋友确认装了oracle 9i client 32位。
经过:由于程序写的比较扯淡,没有对错误异常抛出正确的信息,幸好手上还有源码,按f8单步执行看了一下,下面调试部分直接报:ora-06413:连接未打开。看了代码,比较通用的一个用ado打开数据库的代码,增加红色部分,重新生成vb程序,省得每次都单步调试。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Function OpenDBConnection(cn AsADODB.Connection, strCnn As String) As Boolean
   On Error GoTo OpenMainSybaseError
   Set cn = New ADODB.Connection
   With cn
      .CursorLocation = adUseClient
     .ConnectionString = strCnn
     .ConnectionTimeout = 10
     .Properties("Prompt") = adPromptNever
     .Open
   End With
   OpenDBConnection = True
    MsgBox "dbconnectstring is " + strCnn
   Exit Function
OpenMainSybaseError:
    MsgBox Err.Description
   OpenDBConnection = False
End Function



再次启动程序好了,错误直接甩出来:ORA-06413连接未打开

看了下连接字符串:
Provider=MSDAORA;data source=ora;UserId=cxf1;Password=test;Unicode=True
用的msdaora,tnsping ora了一下,没有问题;那么问题来了,msdaora的问题?这个驱动在官方确实有说明
https://www.microsoft.com/en-US/download/details.aspx?id=20065
只有2003和xp的版本了,不过后来检查
C:\Program Files (x86)\Common Files\System\Ole DB
貌似64位下直接有这三个文件:msdaOra.dll,msdaosp.dll,msdaOrar.dll 并不需要额外的驱动;
但既然怀疑到这了,尝试用了OraOleDb.Oracle.1,换了个错误 ,居然报tns-12514,看样子还是与环境变量有关。后面的故事比较无聊,纯属安装卸载,卸了ora92版本,重新安装oracle 10g client,依旧,卸载10g client装11g 依旧,32位都不行,要不试试64位,装上11g 64位,直接报驱动没启用:
QQ截图20161215092618.png

有点病急乱投医了,好了,理理思路:
1 64位肯定不行,因为那时32位的vb压根儿不知道64位的事情;
2 10g的32位client既然能到tsn-12514证明,这个驱动应当是可用的,只是环境变量不对;
重新上了下oracle的官网,说提供了32位的odac驱动,
[url=]http://www.oracle.com/technetwork/topics/dotnet/utilsoft-086879.html[/url]
好家伙,直接下载了个10G的最低版本,为啥最低,各位懂的,vb6这个元老用老的不出错;结果装不上,正常,10g嘛,装在64位上要更改oraparam.ini,
[Certified Versions]
#You can customise error message shown for failure,provide value for CERTIFIED_VERSION_FAILURE_MESSAGE
Windows=4.0,5.0,5.1,5.2,6.0,6.1
好,OK装上了,测试ODBC,一切正常,万事OK,一开程序,依旧报ora-06413.
没辙了,看看sqlnet.log,发现:
1
2
3
4
5
6
7
8
***********************************************************************
Fatal NI connect error 6413, connecting to:
(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=115.29.114.XXX)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=orcl)(CID=(PROGRAM=C:\test()\ttest.exe)(HOST=SNOWIND-PC)(USER=snowind))))

VERSION INFORMATION:
         TNSfor 32-bit Windows: Version 10.2.0.1.0 - Production
Time: 12-12月-2016 21:20:45
Tracing not turned on.



基本猜出问题所在了(哎,靠猜的-_-!!)。

打开调式程序,再次数据链接属性:
wKiom1hQDRvRebsWAAB0DjZjKqk233.jpg
wKioL1hQDTPj89VUAABF6Asl0gE750.jpg
wKioL1hQDUfyQezJAABAHYIfmjY270.jpg
终于成功了(可以放鞭炮了)。
结论:没事别在路径里加括号,不然你会死的很没面子;代码里加点异常处理也不会增加很大的工作量,亦可造福后人;



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-314561-1-1.html 上篇帖子: Oracle dba_data_files数据字典里的bytes大于maxbytes 下篇帖子: oracle清屏翻页配置 程序
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表