目的
weblogic每个季度都会有psu更新,打补丁操作也变成了每个季度都要做的事情,我们往往是通过登陆xshell等工具,一台一台的停服务打补丁启动服务。如果是单机部署的weblogic并且数量不多的话还好,通过手动登陆系统一套一套的打;那么如果是集群的环境而且集群是由多台weblogic服务器组成,手工的打补丁方式就显得十分低效,这样的话就由必要实现自动化打补丁方案了。
环境准备
搭建nginx服务器:存放weblogic补丁包(其他能够存放补丁包的服务器也是可以的)
weblogic 10.3.6和weblogic 12c环境各一套(10.3.6和12c两个版本打补丁的方式不同)
所有脚本要使用weblogic用户执行
weblogic10.3.6自动打补丁脚本
- 在打10.3.6的补丁之前,需要先卸载补丁,所以得有一个卸载补丁的脚本
#!/bin/bash
#PUTIL是补丁工具的路径,WLSHOME1是weblogic的家目录(不知道理解的对不对)
PUTIL=/u01/wls10/Oracle/Middleware/utils/bsu
WLSHOME1=/u01/wls10/Oracle/Middleware/wlserver_10.3
#将获取到的补丁jar包放入临时的文件,方便后续卸载补丁使用
cd ${PUTIL} && ./bsu.sh -prod_dir=${WLSHOME1} -status=applied -verbose -view | grep jar > tmp_jar
#打过weblogic10.3.6psu的人会发现有时候,上一个psu可能会是由两个jar包组成,比如a.jar和b.jar
#这两个补丁的卸载需要有一定的顺序,如果先打了a.jar然后打了b.jar,那卸载的顺序就是先卸载b.jar,再卸载a.jar
#如果卸载顺序出错,就会出现卸载补丁冲突的报错
#将查询到的tmp_jar文件通过tac命令逆序取出,为了实现上述所说的多个补丁的情况
jar_names=($(tac tmp_jar | awk '{print $NF}' | awk -F '.' '{
print $(NF-1)}'))
for jar_name in ${jar_names[@]}; do
echo "remove ${jar_name}"
cd ${PUTIL}/cache_dir && ./bsu.sh -remove -patchli