暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Windows平台下的打p33776715 遇到bug解决方案

yangtao 2024-10-23
146

Windows平台下的打p33776715 遇到bug解决方案

Author by :杨涛 2024-10-23

问题背景

由于客户安全加固需要,在当前windows 2008下 对oracle 11204 数据库打 2022的psu补丁解决漏洞扫描问题,对数据库进行加固。在打补丁过程中遇到bug的处理步骤及解决思路。

实施过程及错误

等应用停止完成侯,然后shutdown数据库和 lsnrctl stop 监听,

按照要求先停止oracle服务。停下下面的oracle服务。服务里面把oracle 都停止掉。

d1c75babae9df6316c6c98a75fd7a4e

图1- oracle service 停止前

D:\patch\33776715>set ORACLE_HOME=D:\app\jw5493\product\11.2.0\dbhome_1

D:\patch\33776715>%ORACLE_HOME%\OPatch\opatch apply

升级提示 win平台 UtilSession 失败: Prerequisite check “CheckActiveFilesAndExecutables” failed.

问题定位及解决

3.1问题1 win平台打patch,提示UtilSession 失败: Prerequisite check

win平台打patch,提示UtilSession 失败: Prerequisite check “CheckActiveFilesAndExecutables” failed.

报错是由于oracle有活动进程导致oaptch失败。

C:\Users\Administrator\Desktop\nmgOracle补丁\34474433>E:\app\Administrator\produ

ct\11.2.0\dbhome_1\OPatch\opatch apply ./

Oracle 临时补丁程序安装程序版本 11.2.0.3.40

版权所有 (c) 2023, Oracle Corporation。保留所有权利。

 

Oracle 主目录       :E:\app\ADMINI~1\product\112~1.0\dbhome_1

主产品清单:C:\Program Files\Oracle\Inventory

   来自           :

OPatch 版本    :11.2.0.3.40

OUI 版本       :11.2.0.4.0

日志文件位置:E:\app\ADMINI~1\product\112~1.0\dbhome_1\cfgtoollogs\opatch\opatch

2023-04-20_18-05-20下午_1.log

 

Verifying environment and performing prerequisite checks...

Prerequisite check "CheckActiveFilesAndExecutables" failed.

The details are:

 

Following active files/executables/libs are used by ORACLE_HOME :E:\app\ADMINI~1

\product\112~1.0\dbhome_1

E:\app\ADMINI~1\product\112~1.0\dbhome_1\bin\oraxml11.dll

E:\app\ADMINI~1\product\112~1.0\dbhome_1\bin\orahasgen11.dll

E:\app\ADMINI~1\product\112~1.0\dbhome_1\bin\oraocr11.dll

E:\app\ADMINI~1\product\112~1.0\dbhome_1\bin\oraocrb11.dll

E:\app\ADMINI~1\product\112~1.0\dbhome_1\bin\oraocrutl11.dll

E:\app\ADMINI~1\product\112~1.0\dbhome_1\bin\oran11.dll

E:\app\ADMINI~1\product\112~1.0\dbhome_1\bin\orantcp11.dll

E:\app\ADMINI~1\product\112~1.0\dbhome_1\bin\oranl11.dll

E:\app\ADMINI~1\product\112~1.0\dbhome_1\bin\orancrypt11.dll

E:\app\ADMINI~1\product\112~1.0\dbhome_1\bin\orapls11.dll

E:\app\ADMINI~1\product\112~1.0\dbhome_1\bin\orageneric11.dll

E:\app\ADMINI~1\product\112~1.0\dbhome_1\bin\oraclient11.dll

E:\app\ADMINI~1\product\112~1.0\dbhome_1\bin\oracommon11.dll

E:\app\ADMINI~1\product\112~1.0\dbhome_1\rdbms\mesg\diaus.msb

E:\app\ADMINI~1\product\112~1.0\dbhome_1\bin\oraplc11.dll

E:\app\ADMINI~1\product\112~1.0\dbhome_1\bin\oraplp11.dll

E:\app\ADMINI~1\product\112~1.0\dbhome_1\bin\orannzsbb11.dll

E:\app\ADMINI~1\product\112~1.0\dbhome_1\bin\orazt11.dll

E:\app\ADMINI~1\product\112~1.0\dbhome_1\bin\oraztkg11.dll

E:\app\ADMINI~1\product\112~1.0\dbhome_1\bin\oraldapclnt11.dll

E:\app\ADMINI~1\product\112~1.0\dbhome_1\bin\oracore11.dll

E:\app\ADMINI~1\product\112~1.0\dbhome_1\bin\oracell11.dll

E:\app\ADMINI~1\product\112~1.0\dbhome_1\bin\oraasmclnt11.dll

E:\app\ADMINI~1\product\112~1.0\dbhome_1\bin\orannzsbb11.dll

E:\app\ADMINI~1\product\112~1.0\dbhome_1\bin\orazt11.dll

E:\app\ADMINI~1\product\112~1.0\dbhome_1\bin\oraztkg11.dll

 

UtilSession 失败: Prerequisite check "CheckActiveFilesAndExecutables" failed.

Log file location: E:\app\ADMINI~1\product\112~1.0\dbhome_1\cfgtoollogs\opatch\o

patch2023-04-20_18-05-20下午_1.log

 

OPatch failed with error code = 73

根据网上和mos查询发现,可以用如下命令查出活动进程。

通过tasklist命令找出来占用的进程名称和进程号

E:\app\Administrator\product\11.2.0\dbhome_1\OPatch>tasklist /M ora*

 

映像名称                       PID 模块

========================= ======== ============================================

esfdaemon.exe                 1296 oracleclientsvc.dll, oracleengine.dll,

                                   oracledatasource.dll, oraclecore.dll,

                                   OraClient11.Dll, oracore11.dll,

                                   oranls11.dll, oraunls11.dll, orauts.dll,

                                   oracommon11.dll, orasnls11.dll,

                                   orageneric11.dll, oraxml11.dll, oran11.dll,

                                   oranl11.dll, orantcp11.dll, oranldap11.dll,

                                   orannzsbb11.dll, oraldapclnt11.dll,

                                   orancrypt11.dll, orazt11.dll, oranro11.dll,

                                   oranhost11.dll, orancds11.dll,

                                   orantns11.dll, oraztkg11.dll, orapls11.dll,

                                   oraslax11.dll, oravsn11.dll, oraplp11.dll,

                                   orahasgen11.dll, oraocr11.dll,

                                   oraocrb11.dll, oraasmclnt11.dll,

                                   oracell11.dll, oraocrutl11.dll,

                                   orasql11.dll, OraPlc11.Dll, oranbeq11.dll

plsqldev.exe                 29840 OraClient11.Dll, oracore11.dll,

                                   oranls11.dll, oraunls11.dll, orauts.dll,

                                   oracommon11.dll, orasnls11.dll,

                                   orageneric11.dll, oraxml11.dll, oran11.dll,

                                   oranl11.dll, orantcp11.dll, oranldap11.dll,

                                   orannzsbb11.dll, oraldapclnt11.dll,

                                   orancrypt11.dll, orazt11.dll, oranro11.dll,

                                   oranhost11.dll, orancds11.dll,

                                   orantns11.dll, oraztkg11.dll, orapls11.dll,

                                   oraslax11.dll, oravsn11.dll, oraplp11.dll,

                                   orahasgen11.dll, oraocr11.dll,

                                   oraocrb11.dll, oraasmclnt11.dll,

                                   oracell11.dll, oraocrutl11.dll,

                                   orasql11.dll, OraPlc11.Dll

可以在任务管理器中直接把相关进程kill掉,也可以通过taskkill /F /im 进程名方式杀掉进程,然后再次检查占用情况,无任何进程占用的情况下,就可以直接打patch

E:\app\Administrator\product\11.2.0\dbhome_1\OPatch>tasklist /M ora*

信息: 没有运行的任务匹配指定标准。

0fbfbb9bf9afdc16207e2b1851389f7

图2 数据库进程查询

我在windows 任务管理器找到4208的进程杀掉后,又自动起来,导致升级还是报错。

最后发现根因是Windows Management Instruction(WMI) 引起的,是微软提供的一种管理系统资源的核心技术,尤其在Windows 2000、Windows XP和Windows Server 2003及其后续版本中成为操作系统的一部分。WMI基于Distributed Management Task Force(DMTF)制定的行业标准,允许管理员、开发者以及自动化工具访问、配置、管理和监控几乎所有的Windows资源。

6632c1006f505384bc59dd7b9706799

当把Windows Management Instruction 服务停止后 opath apply 成功。

继续进行数据库字典升级的时候,

Sqlplus 提示如下错误。真的是一波未平一波又起。

图三 sqlplus 错误截图

3.2 打PSU后,启动sqlplus报"Error 57 initializing SQL*Plus"的处理

最近一个客户打数据库补丁,环境是windows 2008R2下的Oracle 11.2.0.4.0版本,PSU打到p33776715_112040_MSWIN-x86-64.在windows系统中停止所有Oracle相关应用,安照补丁说明打补丁一切都正常。当打完补丁起sqlplus时报错如下:

Error 57 initializing SQL*Plus
Error loading message shared library

  一番百度谷歌各种修改权限都没法解决,后来想是不是遭遇了BUG。

  后来发现遇到了BUG 29367372。需要安装Microsoft Visual C++ 2005 Service Pack 1 Redistributable Package MFC Security Update’ (Version 8.0.50727.6195) , available at https://www.microsoft.com/en-us/download/details.aspx?id=26347。

下载安装vcredist_x64,然后再打PSU补丁到11.2.0.4.201020,启动sqlplus,一切顺利。

至此,问题都得到完美解决!

总结

在打oracle 补丁的时候,一定要做好数据库的备份和数据库安装目录的备份。备份重于一切!

文章转载自yangtao,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论