BLOG zzy.my

合抱之木, 生于毫末; 九层之台, 起于累土; 千里之行, 始于足下。

OraOLEDBpus10 未注册导致 IIS 应用无法访问

客户更新了一个网站程序,导致所有IIS站点全部无法打开。
系统日志都会出现警告日志:Event ID: 5010
A process serving application pool 'xxx' failed to respond to a ping.

.

尝试了重启站点,回收应用池,重启IIS,最后重启服务器,仍然无效。
---------------------
分析解决
使用工具 Debug Diagnostic Tool v2.2
https://www.microsoft.com/en-us/download/details.aspx?id=49924

安装后打开 DebugDiag 2 Collection
建议先重启IIS,并在任务管理器中结束所有的 w3wp.exe 进程
~定位到“Processes” 中

.

~打开有问题的网站,等待1分钟左右,或页面已经显示了无法打开.

.

在 Processes 中选择 w3wp.exe,右键选择 Create Full Userdump.

.

生成的Dump文件默认在 C:\Program Files\DebugDiag\Logs\Misc\
使用 DebugDiag Analysis 或 直接双击打开 dmp 文件。
分析后默认会在C:\Users\Administrator\Documents\DebugDiag\Reports\ 中生成报告。
查看报告

.

确认问题是: OraOLEDBpus10.dll: The specified module could not be found.
检查目录D:\oracle\product\10.2.0\client_1\BIN\,发现里面有这几个文件。
尝试执行命令 regsvr32 D:\oracle\product\10.2.0\client_1\BIN\OraOLEDB10.DLL

同样提示 OraOLEDBpus10.dll: The specified module could not be found.

复制这两个文件
D:\oracle\product\10.2.0\client_1\BIN\OraOLEDBpus10.dll
D:\oracle\product\10.2.0\client_1\BIN\OraOLEDB10us.dll

C:\Windows\SysWOW64\ 中(32位系统应复制到 system32 中)

然后再执行命令
regsvr32 D:\oracle\product\10.2.0\client_1\BIN\OraOLEDB10.DLL

提示成功。
重启IIS,然后再次打开网站,正常访问
.

Loading