weblogic 升级bsu_Weblogic补丁升级之坑坑洼洼

[

概述

]

虽然当前国内去IOE波涛汹涌,但不可否认OracleWeblogic当前市场还有有一定使用量。所以,weblogic依然是中间件运维的重要工作之一。然而Oracleweblogic已经连续三个季度(2019年10月~2020年7月)曝出CVSS风险为9.8的高危安全漏洞,漏洞修复是一轮接着一轮,轮的哥都要吐了,但没办法,活儿还是不能拉下。本文主要是针对weblogic漏洞修复,罗列一些在weblogic安全漏洞补丁更打过程中笔者遇到的一些问题以及解决方案或思路,希望对同样做补丁升级的兄弟们有所启示。

[

坑坑洼洼

]

问题1:

weblogic补丁升级后执行BSUCOMMAND查看不到补丁信息

该问题出现在weblogic11g正常更打完PSU补丁集后,最后使用./bsu.sh–view -status=applied -prod_dir=最后查看校验一下补丁版本信息时,结果却没返回有补丁信息:

此时莫慌张,并不是你补丁安装失败了。可以关注到红线部分,此处的weblogicPatch指定了一“DownloadDir:“ ,怀疑和这个设置有关。我们尝试继续使用bsu.sh查看补丁信息,这次咱们开启debug日志来验证想法:

./bsu.sh -view -verbose -status=applied -prod_dir=/data1/weblogic/wlserver_10.3 -log=bsu.log -log_priority=debug,日志会生成在脚本当前路径。

查看日志有如下报错:

问题原因:是我们习惯将补丁放到./utils/bsu/cache_dir解压更打,而此处weblogic指定了DownloadDir这个目录,所以才产生这个问题,读取不到补丁信息。

解决方法:1)将本次更打的patch-catalog_xxxxx.xml文件拷贝到上述目录下,重命名为patch-catalog.xml。

2)重新指定本次patch_download_dir目录-patch_download_dir=/data1/weblogic/utils/bsu/cache_dir

重新查看补丁信息,如下:

问题2:升级过程中抛出OOM异常

该问题新手在更打或卸载weblogic11g补丁过程中经常会遇到,报错如下“java.lang.OutOfMemoryError:Java heap space“

问题原因:卸载或更打补丁前,未设置合理的JVM大小,导致执行过程中JVM不足,内存溢出。

解决方法:修改bsu.sh,将如下设置修改为-Xms2048m –Xmx2048m,或者内存充足的情况下,设置为更大的值即可。

问题3:weblogic12C升级过程中OPatch版本问题

该问题常出现在weblogic12c版本补丁更打过程当中,报错信息很友好,直接给出了解决方案:

问题原因:TheOPatch version is not applicable for current OUI version.

解决方法:到OracleSupport下载patch6880880,更新OPatch,命令如下:

java-jar /6880880/opatch_generic.jar -silentoracle_home=

更新后,使用opatchversion,查看当前opatch信息如下:

问题4:拷贝安装的惹的祸

某系统某次weblogicPSU补丁升级完成后,该系统出现“ORA-01461:仅能绑定要插入 LONG列的 LONG值”报错,报错之前系统只做过weblogicPSU更打,于是第一时间回滚后,问题消失,确认问题由补丁升级引起。经排查,初步判定ORA-01461报错原因应该系数据库与客户端JDBC驱动不匹配所致。当晚升级人员在补丁升级后,应用启动日志记录的数据源与库建立连接使用的驱动版本为11.2.0.3.0,日志记录如下:

而在未升级补丁时,日志记录的驱动版本为12.1.0.2.0版本,如下:

继续核实发现,该系统weblogic产品针对jdbc驱动包ojdbc6.jar做了修改(修改后驱动为12.1.0.2.0版本),而当晚升级操作人员直接使用其他系统升级完成的weblogic拷贝安装至该系统主机,相当于将修改后的ojdbc6.jar驱动包还原了,因此驱动版本变成了11.2.0.3.0,导致问题的出现。

问题原因:在没了解清楚当前系统weblogic是否做过一些特定修改下,直接拷贝安装。

解决方法:在大批量服务器进行weblogic补丁更新时,可能大家都采用过拷贝安装的方式:先打一台模板,后续直接打包weblogic产品目录拷贝解压安装到其他服务器上,以完成补丁跟新。正常情况下,如果weblogic产品内部相关包未被修改或替换,确保操作系统版本、安装目录、jdk路径及版本一致的情况下,这不失为一种有效的捷径,但是如果存在weblogic产品内部相关包未被修改或替换,那可能就会踩坑了。

问题5:补丁升级后weblogicserver启动异常

该问题常出现在weblogic产品安装用户与weblogicServer启动用户不一样的情况下,在weblogic补丁更打成功后,weblogicServer启动出现如下报错,找不到”main”方法:

问题原因:weblogic补丁更打后,weblogic产品某些子录下文件重新创建,导致WEBLOGIC_HOME下某些子目录缺少可写或可执行权限所知。

解决方法:确保weblogicserver启动用户对Weblogic_HOME下的所有子目录具有可写和可执行的权限。建议如果weblogic安装用户与weblogicdomain域部署用户不一致的情况下,更打完PSU补丁集后,请chmod–R 755 $Weblogic_HOME。

问题6:补丁升级后weblogicserver启动异常

首先说明下,该问题的出现于weblogic升级并无直接关系,是笔者在今年7月份的一次weblogic补丁升级后,遇到的一次问题。情况是老套路,升级后,应用启不起来了,应用侧一口咬定补丁升级所致,报错如下图:

说实话哥也是心虚的,我所知的确实只有我做了weblogic补丁更新,问题也是第一次遇到,趁晚上升级还有时间,赶紧到MOS上找找答案。事实证明,确实很多坑,别人都已经帮我们踩过了,找到类似的报错信息,

以上,原因1直接PASS了,原因2,可能存在config.xml或setEnv文件可能被改动或失效。顺着这个思路,找来了应用账号,直接去$DOMAIN_HOME/config下看了下config.xml文件,当晚应用侧对config.xml文件明显有改动,存在多个版本。如下截图:

后面就简单了,直接让应用先回滚config.xml文件,重启weblogicserver正常启动,问题证实与补丁升级无关。

问题原因:应用侧修改config.xml文件存在格式或内容错误,导致文件失效所致。

解决方案:碰到没见过的问题不要慌,先到官网找找资料,绝大部门的坑,别人已经替咱们踩过了。

问题7:补丁升级后weblogicserver启动异常

最后一个案例,本人暂时没有遇到,系Oracle原厂发出的一个预警,希望近期在更新PSU20200714朋友如果遇到了此问题,可以参考。

最近有客户遇到WLS打完最新PSU20200714补丁后,服务启动报错的问题。OracleACSOFM团队初步分析是由于升级完成后,SAX对是否支持解析XML文件中的外部DTD默认值做了改变(之前版本默认值为true,新版本默认值变为false)。

如果升级完成后启动服务遇到如下类似报错,则是由于该问题导致。

WARNING: Could not read file registry settings $DOMAIN_HOME/config/fmwconfig/servers//logging.xml; exception: oracle.core.ojdl.logging.LoggingConfigurationException: ODL-52050:

Could not process file $DOMAIN_HOME/config/fmwconfig/servers//logging.xml, XML parsing exception line 1, column 1.266): org.xml.sax.SAXParseException; lineNumber: 1;

columnNumber: 1266; The content of the item type “root” is incomplete, must match “(logging_configuration)”.

目前的解决方案是在WebLogicserver的启动参数中增加 -Dweblogic.xml.jaxp.allow.externalDTD=true 规避这个问题(已经过测试确认)。

[

小结

]

以上,是笔者或者同事在weblogic补丁更新过程中遇到的一些问题,以及记录下来的问题解决方案或思路,类似的问题还有很多,篇幅有限,未一一列举了。运维过程中,我们遇到的问题可能是千变万化,如何有效的去规避或者解决问题,我认为需要咱们做到以下几点:

涉及操作,请制定合理的操作方案,并虚心提交公司老人或专家审核;

正确的分析和理解错误日志,问题就解决一半了;

有效的利用互联网资源,很多坑别人都已经替你踩过了;

绝大部分问题相应产品官网均有详细的记录与解决方案,请善于查找官方资料;

学会总结记录,相同的问题你不一定能记住准确的解决方案,好记性不如烂笔头;

不要藏问题,请学会抛出问题,解决不了的提交专家或者至官网提交SR。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/357037.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

「Unity」UGUI的Text实现首行缩进的办法

我的Unity版本:5.3.5f1 直接说正事 Unity的Text组件,想实现代码拿到一段话,在前面加个缩进,让之后的字符依次后移。 有人觉得很简单,然后就这样写了: 但是尝试过的人就会发现,如果用代码在最前…

【TypeScript系列教程11】函数的使用

目录 TypeScript 函数 函数定义 实例 实例 函数返回值 实例 带参数函数 实例 JavaScript

uniapptabbar的高度是多少_【报Bug】uniapp页面底部空出了tabBar的高度

首页设置隐藏tabBarcodeindex.vueonShow() {uni.hideTabBar({success: (res) > {console.log(hideTabBar-success,res)},fail: (err) > {console.log(hideTabBar-fail,err)}});},onHide() {uni.showTabBar({success: (res) > {console.log(showTabBar-success,res)},f…

在Eclipse中配置Tomcat7.0

为了在Eclipse中进行struts2的测试,才发现自己机器上的Eclipse没有集成Tomcat,在网上找了半天,不是这个插件没有下载地址,就是那个有好多注意事项或者版本问题。结果,自己到tomcatforEclipse的插件的网上直接下载了一个,按照提供的…

【TypeScript系列教程12】Number对象的基本使用

目录 TypeScript Number 语法 Number 对象属性 JavaScript NaN 实例 prototype 实例 Number 对象方法 TypeScript Number TypeScript 与 JavaScript 类似,支持 Number 对象。 Number 对象是原始数值的包装对象。

新建maven写页面_使用 IDEA 创建 Maven Web 项目 (三)- 编写一个简单的 WEB 应用

编写 Servlet 类首先,需要在 java 目录下,创建一个名为 org.smart4j.chapter1 的包。然后,在该包下创建一个 HelloServlet 的类,代码如下:package org.smart4j.chapter1;import javax.servlet.ServletException;impor…

Datepicker

本文翻译自官网: https://angular-ui.github.io/bootstrap 目录: 1. DatePicker 2. DatePicker popup 一、DatePicker https://angular-ui.github.io/bootstrap/#/datepicker 1. 三种模式 Datepicker是灵活,完全可定制的。它有3种模式&#…

cobertura 使用_使用Cobertura,JUnit,HSQLDB,JPA涵盖您的测试

cobertura 使用你好!你好吗? 今天让我们谈谈一个非常有用的工具,名为“ Cobertura”。 该框架与我们在另一篇文章中看到的Emma框架具有相同的功能。 Cobertura和Emma之间的主要区别在于Cobertura显示带有图形的简历页面。 如果要查看有关此…

【TypeScript系列教程13】String 字符串对象的基本使用

目录 TypeScript String(字符串) 语法 String 对象属性 弦方法 TypeScript String(字符串) String 对象用于处理文本(字符串)。 语法 var txt = new String("string"); 或者更简单方式: var txt = "string";String 对象属性 下表列出了 Stri…

Matlab和C++混合编程

1 利用 mexopencv 实现各种数据的转换 int i MxArray(prhs[0]).toInt(); double d MxArray(prhs[0]).toDouble(); bool b MxArray(prhs[0]).toBool(); std::string s MxArray(prhs[0]).toString(); cv::Mat mat MxArray(prhs[0]).toMat(); // For pixels cv::Mat ndmat M…

摇杆控制方向原理_图文全面讲解多种方向控制阀的原理和区别....

液压阀是用来控制液压系统中油液的流动方向或调节其流量和压力的。方向控制阀作为液压阀的一种,利用流道的更换控制着油液的流动方向单向型方向控制阀是只允许气流沿一个方向流动的方向控制阀,如单向阀、梭阀、双压阀等换向型方向控制阀是可以改变气流流…

原型设计模式示例

本文是我们名为“ Java设计模式 ”的学院课程的一部分。 在本课程中,您将深入研究大量的设计模式,并了解如何在Java中实现和利用它们。 您将了解模式如此重要的原因,并了解何时以及如何应用模式中的每一个。 在这里查看 ! 目录 …

【TypeScript系列教程14】Array数组对象的常见的方法

目录 TypeScript Array(数组) concat() every() filter() forEach() join() lastIndexOf() map() pop() push(

DELPHI跨平台的临界替代者

在WINDOWS里面使用临界来保护多线程需要访问的共享对象&#xff0c;现在&#xff0c;DELPHI有了新的跨平台临界保护者--System.TMonitor 代码演示如下&#xff1a; FConnections : TObjectDictionary<TIdTCPConnection,TDSTCPChannel>.Create; 。。。 procedure TCMServe…

laravel 控制器中使用中间件_在 Laravel 中使用 Slack 进行异常通知

php中文网最新课程每日17点准时技术干货分享异常处理是软件开发过程中无法逃避的问题。对于一套设计良好代码高效的程序&#xff0c;出现异常的可能性会比较低&#xff0c;但这并不意味着不会出现异常,有些异常甚至会引起严重的后果&#xff0c;所以如何及时的发现程序中的异常…

【TypeScript系列教程15】TypeScript 元组

我们知道数组中元素的数据类型都是相同的,如果存储的元素数据类型不同,则需要使用元组。 元组中允许存储不同类型的元素,元组可以作为参数传递给函数。 创建元组的语法格式如下: var tuple_name = [value1,value2,value3,…value n] 声明一个元组并初始化: var mytup…

[转]ListView学习笔记(一)——缓存机制

要想优化ListView首先要了解它的工作原理&#xff0c;列表的显示需要三个元素&#xff1a;ListView、Adapter、显示的数据&#xff1b; 这里的Adapter就是用到了适配器模式&#xff0c;不管传入的是什么View在ListView中都能显示出来。 下面简单说下上图的原理&#xff1a; 1、…

jax-rs jax-ws_Tomcat上具有JAX-WS的Web服务

jax-rs jax-ws让我们假设一家企业正在一个集中式系统中维护用户身份验证详细信息。 我们需要创建一个AuthenticationService&#xff0c;它将获取凭据&#xff0c;对其进行验证并返回状态。 其余的应用程序将使用AuthenticationService对用户进行身份验证。 创建Authentication…

golang反编译_【Golang】脱胎换骨的defer(一)

Go语言的defer是一个很方便的机制&#xff0c;能够把某些函数调用推迟到当前函数返回前才实际执行。我们可以很方便的用defer关闭一个打开的文件、释放一个Redis连接&#xff0c;或者解锁一个Mutex。而且Go语言在设计上保证&#xff0c;即使发生panic&#xff0c;所有的defer调…

【TypeScript系列教程16】TypeScript 联合类型

TypeScript 联合类型 联合类型(Union Types)可以通过管道 (|) 将变量设置多种类型,赋值时可以根据设置的类型来赋值。 注意:只能赋值指定的类型,如果赋值其它类型就会报错。 创建联合类型的语法格式如下 Type1|Type2|Type3 实例 声明一个联合类型: TypeScript var …