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

[经验分享] 一次windows漏洞导致的ora-07445错误整修记录

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-2-18 11:44:43 | 显示全部楼层 |阅读模式
前段时间,有客户反应他们的oracle数据库监听起不来了,发来的系统报错日志为:

错误应用程序 TNSLSNR.EXE,版本0.0.0.0,错误模块orahasgen10.dll,版本10.2.0.1,错误地址0x0000000000353d0。

客户做的是MSCS双机,但是主机的监听起不来之后,它也不自动切到备机上。最后客户关掉主服务器后,所有资源才切到备机上,之后就是数据库在备机上运行,主服务器待修。

于是我远程到客户那边,让客户重新启动主机,修改了主机的配置信息后,直接启动监听,竟然成功起来了。于是,我让客户主机先运行着(不挂载库,只是跑着实例和监听)。之后,我查看了oracle监听的日志和数据库的日志,没有发现有价值的错误信息。只是在oracle的警告日志中发现了连续多条这样的信息:

ORA-07445: 出现异常错误: 核心转储 [ACCESS_VIOLATION] [unable_to_trans_pc] [PC:0x78EE1CD6] [ADDR:0x15A0] [UNABLE_TO_READ] []

我通过查询http://ora-07445.ora-code.com/以及其他的帖子得出,这是一个由于操作系统错误引发的错误或者是跟ora-0600一样属于oracle的内部错误。

我首先怀疑的是oracle的bug问题,于是我跟应用商联系,确认他们应用使用的oracle版本是否是10.2.0.1,因为同事告诉我oracle10g的10.2.0.4版本是比较稳定的。我得到的答案是他们应用的客户使用的数据库版本都是10.2.0.1。

看了半天的日志,依旧不能确定问题在哪。

后来去了客户现场,发现主服务器监听还显示正在运行状态。但是我刷新服务,发现监听处于停止状态,于是我手动启动监听,没有任何报错,但是立刻刷新服务,则监听重新显示为停止状态。看来,监听确实存在问题。

首先怀疑orahasgen10.dll模块有问题,于是从网上下载这个模块,当时不清楚放到哪个位置,于是直接放到了c:\windows\system32\目录下,并且使用regsvr32 /s “c:\windows\system32\orahasgen10.dll”进行注册。

之后,我删除当前监听,重启重新建立监听服务。然后把集群资源切到主服务器上,让主服务器挂载上数据库运行。这样运行了大约18个小时,主服务器监听又宕掉了,还是一样的报错:

错误应用程序 TNSLSNR.EXE,版本0.0.0.0,错误模块orahasgen10.dll,版本10.2.0.1,错误地址0x0000000000353d0。

这次问题发生的时间我正好在现场观察,我发现这包TNSLSNR.EXE错误之前,首先出现了这样一条错误:

错误应用程序 svchost.exe,版本 5.2.3790.1830,错误模块 netapi32.dll,版本 5.2.3790.1830,错误地址 0x000521a2。

于是检查上次服务宕机时间的系统日志,发现确实在包TNSLSNR.EXE.错误之前也报了这样一个错误。后来又查看了数据库cdump目录下的”实例名core.log”文件,通过此文件对错误发生时内存信息的记录,发现orahasgen10.dll模块存在于“$ORACLE_HOME\BIN\”目录下。原本对dll模块的操作都是无用功。

在网上查了关于netapi32.dll报错的信息。发现是微软的漏洞,具体信息参考:

http://social.microsoft.com/Foru ... wsserversystemzhchs

http://support.microsoft.com/kb/958644/zh-cn

解决办法就是打补丁:KB958644。

http://www.microsoft.com/zh-cn/download/details.aspx?id=7605

打完这个补丁,将数据库重新迁回主服务器运行,观察,现在过去一周左右了,未发现错误。

重新梳理下整个过程,应该确实是由于netapi32.dll导致windows溢出的漏洞,使得网络功能不能正常使用,网络的失常使得监听报错,造成数据库宕机,并报ora-07445的错误。


运维网声明 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-15109-1-1.html 上篇帖子: linux下彻底删除oracle 下篇帖子: oracle中正则表达式的使用 windows 记录
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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