求助:PB11.5\web service\oracle9i\OCI.DLL无法加载

qxy007 2013-01-02 02:38:13
web service服务器环境:win2003 企业版sp2,PB11.5 EBF4897,oracle9i(9.0.1),IIS 6(asp.net),net framework 2.0, net framework 2.0SDK。
问题:搞了一个web service,发布到IIS是成功了,但是在客户机上连接数据库的时候,总是报错:oracle library OCI.DLL could not be loaded.

1、已经证实web service是没有问题的,因为服务端是写了一个不连接数据库的函数 hello(),客户端执行是成功的。
2、也证实服务端程序是没有问题,因为同样的程序在另一台服务器(win2003 oracle8i)上一切正常。
3、在服务器上,PB11.5、SQLPLUS等能正常连接数据库的。
4、在服务器上,拷了一个非WEB SERVICE程序上去,能正常连接数据库的。

查来查去,实在是查不出问题了。无计可施,求助。。。
...全文
1018 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
xufxuf 2013-01-03
  • 打赏
  • 举报
回复
几周之前,遇到同样问题,这么解决的: oracle目录中的bin目录(就是这个dll所在的目录)的访问权限增加对network service用户的开放. path中增加bin目录的路径. 然后报的错就变了成了找不到lang的设置. 接着在注册表里设置了字符集lang=... 再重起了iis webservice连数据库就连上了.
qxy007 2013-01-02
  • 打赏
  • 举报
回复
更正一下: “问题:搞了一个web service,发布到IIS是成功了,但是在客户机上连接数据库的时候,总是报错:oracle library OCI.DLL could not be loaded. ”应该改为: 问题:搞了一个web service,发布到IIS是成功了,但是在客户机上执行服务端上的连接数据库函数时,服务端总是返回报错信息:oracle library OCI.DLL could not be loaded.
fm20027 2013-01-02
  • 打赏
  • 举报
回复
客户机是否安装了oracle客户端,另外,客户机上oralce客户端文件目录的路径是否指明?
qxy007 2013-01-02
  • 打赏
  • 举报
回复
又搞了半天时间,终于被我找到了解决办法。在解决问题之前,在网上搜索,发现有一些人也遇到这个报错信息,但好象没有真正的解决办法,当然,他们的情况不一定和我的相同。现在我把我的解决办法汇报如下,希望能给遇到这个报错的朋友们一个参考。 先更正一下:安装的ORACLE9i的版本是:9.2.0.1.0 在查找问题的解决办法花了很多时间走了不少弯路后,包括重装PB11.5,更换它的EBF,以及重装net framework 2.0SDK,把IIS里有关设置都翻了两三遍等等,我意识到可能是ORACLE的版本问题,于是决定给oracle打补丁。花了一些时间终于下载了oracle 9.2.0.8.0的补丁,安装后果然解决了问题。 注:如果解压补丁后运行setup.exe,则解压目录不能有中文 下面安装补丁的办法是从网上找来的。但与我实际上操作有一点小差异。 补丁包里的说明文档readme.html上是说“如果必要,就更改SHARED_POOL_SIZE、JAVA_POOL_SIZE的值”,我实际运行的是 SQL> ALTER SYSTEM SET SHARED_POOL_SIZE='150M' SCOPE=spfile; SQL> ALTER SYSTEM SET JAVA_POOL_SIZE='40M' SCOPE=spfile; ----以下是网上找来的原文------------------------------------------- oracle9i打补丁注意事项 一、目的 windows平台下将oracle 9.2.0.1.0升级到oracle 9.2.0.8.0 二、过程 1、下载补丁p4547809_92080_WINNT.zip 2、解压补丁包仔细查看 README.html中的installation task 3、关闭所有oracle服务 4、双击解压包的setup.exe,打补丁正式开始,这时候需要注意到是安装路径的选择,你需要选择自己的 OraHome92路径,如果你不知道自己的home,可以单击下面的"已安装产品"查看 5、安装完成后,还没完,才刚刚开始,需要运行两个脚本catpatch.sql和utlrp.sql 三、运行脚本 1、启动监听服务和一个oracle实例,修改系统参数 C:\> sqlplus /NOLOG SQL> CONNECT SYS/SYS_password AS SYSDBA SQL> ALTER SYSTEM SET SHARED_POOL_SIZE='150M' SCOPE=spfile; SQL> ALTER SYSTEM SET JAVA_POOL_SIZE='150M' SCOPE=spfile; SQL> SHUTDOWN SQL> EXIT 2、运行脚本 C:\> sqlplus /NOLOG SQL> CONNECT SYS/SYS_password AS SYSDBA SQL> STARTUP MIGRATE SQL> SPOOL patch.log SQL> @ORACLE_BASE\ORACLE_HOME\rdbms\admin\catpatch.sql SQL> SPOOL OFF spool patch.log是把做升级日志到patch.log,供以后察看。其中ORACLE_BASE\ORACLE_HOME表示你的oracle目录,假设oracle安装目录为d:\oracle\ora92,则应为:SQL>@D:\oracle\ora92\rdbms\admin\catpatch.sql 其中@表示执行以下脚本。整个过程需要20分钟左右。 接着运行脚本utlrp.sql SQL> SHUTDOWN SQL> STARTUP SQL> @D:\oracle\ora92\rdbms\admin\utlrp.sql 重启电脑,查看oracle版本 select * from v$version; 3、注意如果你在升级之后建立了一个新的数据库实例,当你删除用户是出现错误,如 drop user name cascade; 这样的语句不能运行,你需要使用这个实例跑一次catpatch.sql和utlrp.sql
做梦的猫 2013-01-02
  • 打赏
  • 举报
回复
这个做了没? 15. 数据库驱动目录须要设置 asp.net 的访问权限(重启),如 c:\oracle\product\10.1.0\client_1。
qxy007 2013-01-02
  • 打赏
  • 举报
回复
数据库连接: SQLCA.DBMS = "O90 Oracle9i (9.0.1)" SQLCA.LogPass = "****" SQLCA.ServerName = "****" SQLCA.LogId = "****" SQLCA.AutoCommit = False SQLCA.DBParm = "" connect using sqlca; if sqlca.sqlcode <> 0 then return sqlca.sqlerrtext else return '' end if

662

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder Web 应用
社区管理员
  • Web 应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧