导航

不许杀人,也不许放火

« Everything在三亚的猪狗生活 »

数据库盲瞎猫碰死耗子

今天出来一堆Windows的补丁,于是乘着晚上把几台机器补丁并重启,结果发现自己没有收到机器重启的告警短信。

于是登录到监控的机器上,触发的短信发送程序是自己写的,发出一个UDP报文到另一台接口机上,接口机上的程序也是自己写的,接收报文并分析内容写数据库,由另一个同事的程序把短信发出去。

本来以为是那个接口机上的程序启动比oracle晚,因此连数据库失败,但发现并不是这样。折腾了半天,才发现原来管那接口机的同事更改了IP安全策略,我的UDP报文根本到不了那机器。于是改安全策略,搞定。

在折腾过程中,又发现自己写的另一个程序,是直接访问这个数据库的,用来接收手机发来的短信指令并做ping、trace之类操作并短信返回结果的,这个程序连不上数据库,当然一开始肯定是因为安全策略的问题,但走了很多弯路,甚至把oracle驱动也删了再装,到后来自己脑袋都乱了,管他啥版本的驱动从8装到10。

安全策略更改了以后发现还是连不上数据库。报错Error while trying to retrieve text for error ORA-12538,上网查,貌似是ora文件里的配置不对,但就凭自己这个数据库盲的水平,怎么也看不出问题。胡乱改了一通没用,复原。

在系统里建一个ODBC源试试,竟然是测试连接成功的,为啥我的程序连不上呢?以前都是跑得好好的。

原来程序的配置连接串是这样的:
ConnectionString1=UID=XXXXXX;PWD=XXXXXXX;driver={Microsoft ODBC for Oracle};SERVER=XXXXX

后来尝试了
ConnectionString1=Provider=MSDAORA.1;Password=XXXXXXX;User ID=XXXXX;Data Source=XXX.XXX.XXX.XXX;Persist Security Info=True
还是报错,其实这里写错了,datasource应该是数据源名,但这时候我已经头晕了,根本没明白这点,死活写了个IP

最后想,既然ODBC连接正常,那就试试再写个用ODCB源连的串,还临时弄了个程序来构造这个串,总算认识到上面的错误了ConnectionString1=Provider=MSDASQL.1;Password=XXXXXXX;Persist Security Info=True;User ID=XXXXXX;Data Source=XXXXX

至此搞定。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

Search

控制面板

首页

最近发表

Powered By Z-Blog