【环境介绍】

系统环境:Solaris + Oracle 11R2 + OGG + 脚本定时任务统计信息收集

【背景描述】

基于集团的安全检查,需要对数据库版本进行漏洞扫描,漏洞扫描中存在RBDMS和JVM类型的漏洞,需要通过升级小版本的PSU和OJVM来修复漏洞。下面大概说明一下升级的注意部分和出现问题的解决。

【问题处理】

升级时一般在晚上操作,在升级数据库前注意的问题(由于脚本较多,这里贴脚本,如果有需要脚本可以留言):

提前进行数据库软件备份(可排除aud小文件,备份小文件多导致备份时间很长,建议可以提前一天备份),数据备份(数据库全备);

数据库参数备份,工程完成后参数对比(历史原因导致启动数据库pfile文件参数不同导致主机资源耗尽或者其他问题);

停止涉及数据库定时任务(防止大事务导致数据库停止有问题);

停止数据库自动统计信息或者手动脚本的统计信息收集(导致升级后编译时不能进行);

停止其他软件对数据库的操作(OGG等,OGG进程卡主);

操作系统空间需要大于35G(如果空间不足可能触发BUG:

10131946 GRID PATCHES REQUIRE 22GB OF FREE SPACE
12791141 PATCH 12311357: WITH 35GB FREE SPACE : ERROR: REQUIRED AMOUNT OF SPACE
1088455.1 opatch CheckSystemSpace Fails With Error Code 73 While Applying GI PSU);

操作系统LANG字符问题(可触发BUG,导致升级报错),建议默认使用英文字符;

补丁冲突(DB,有些针对one of patch冲突需要在升级前回退,GI),平台检测。

操作数据库升级前,再次进行检查数据库补丁冲突,平台检测,但是补丁需要特殊.so文件验证是在停止数据库实例后进行检查,也是经常出现的文件占用的问题。

检查信息:

grid@XXXDB01:/opt/oracle/app/oracle_base/patch/26636028$ $ORACLE_HOME/OPatch/opatch prereq CheckActiveFilesAndExecutables -phBaseDir ./26635745
Oracle Interim Patch Installer version 11.2.0.3.18
Copyright (c) 2018, Oracle Corporation.  All rights reserved.

PREREQ session

Oracle Home       : /opt/oracle/app/grid_home
Central Inventory : /opt/oracle/app/oraInventory
   from           : /opt/oracle/app/grid_home/oraInst.loc
OPatch version    : 11.2.0.3.18
OUI version       : 11.2.0.4.0
Log file location : /opt/oracle/app/grid_home/cfgtoollogs/opatch/opatch2018-04-27_01-50-50AM_1.log

Invoking prereq "checkactivefilesandexecutables"

......

Prereq "checkActiveFilesAndExecutables" for patch 17478514 failed.

The details are:

Following executables are active :
/opt/oracle/app/grid_home/bin/oracle
/opt/oracle/app/grid_home/lib/libclntsh.so.11.1

Prereq "checkActiveFilesAndExecutables" for patch 18031668 passed.

.......

Prereq "checkActiveFilesAndExecutables" for patch 26392168 passed.

OPatch succeeded.

省略部分内容,可以看到对特殊文件检查时发现被占用。查看是哪个进程占用:

grid@xxxxDB01:/opt/oracle/app/oracle_base/patch/26636028$ fuser /opt/oracle/app/grid_home/lib/libclntsh.so.11.1
/opt/oracle/app/grid_home/lib/libclntsh.so.11.1:     9465m    9447m    9331m    9210m    8889m    8750m    8578m    8498m    8496m    8494m    8417m    8416m    8395m    21708m    8361m    8286m    8164m   14225m   14198m   14186m

但是存在一个进程,且是root用户占用,集群不能停止该进程:

root@xxxDB01:/opt/oracle/app/oracle_base/patch/26636028# ps -ef |grep /opt/oracle/app/grid_home/jdk/bin/sparcv9/java
    root 21708  4111   0 02:37:17 pts/1       0:00 grep /opt/oracle/app/grid_home/jdk/bin/sparcv9/java

正常情况下,占用该文件的位grid用户,在升级数据库时会停止这些进程。

[grid@xxxx01 ~]$ fuser /u01/app/11.2.0/grid/lib/libclntsh.so.11.1
/u01/app/11.2.0/grid/lib/libclntsh.so.11.1:  2400m  2411m  2422m  2432m  2491m  2623m  2837m  2885m  2887m  2984m  2985m  3029m  3046m

[grid@xxxx01 ~]$ ps -ef |egrep '2400|2411|2422|2432|2491|2623|2837|2885|2887|2984|2985|3029|3046'
grid      2400     1  0 10:48 ?        00:00:00 /u01/app/11.2.0/grid/bin/oraagent.bin
grid      2411     1  0 10:48 ?        00:00:00 /u01/app/11.2.0/grid/bin/mdnsd.bin
grid      2422     1  0 10:48 ?        00:00:00 /u01/app/11.2.0/grid/bin/gpnpd.bin
grid      2432     1  0 10:48 ?        00:00:00 /u01/app/11.2.0/grid/bin/gipcd.bin
grid      2491     1  0 10:48 ?        00:00:00 /u01/app/11.2.0/grid/bin/ocssd.bin
grid      2623     1  0 10:49 ?        00:00:00 /u01/app/11.2.0/grid/bin/evmd.bin
grid      2837  2623  0 10:50 ?        00:00:00 /u01/app/11.2.0/grid/bin/evmlogger.bin -o /u01/app/11.2.0/grid/evm/log/evmlogger.info -l /u01/app/11.2.0/grid/evm/log/evmlogger.log
grid      2885     1  0 10:50 ?        00:00:00 /u01/app/11.2.0/grid/bin/scriptagent.bin
grid      2887     1  0 10:50 ?        00:00:00 /u01/app/11.2.0/grid/bin/oraagent.bin
grid      2984     1  0 10:50 ?        00:00:00 /u01/app/11.2.0/grid/opmn/bin/ons -d
grid      2985  2984  0 10:50 ?        00:00:00 /u01/app/11.2.0/grid/opmn/bin/ons -d
grid      3029     1  0 10:50 ?        00:00:00 /u01/app/11.2.0/grid/bin/tnslsnr LISTENER_SCAN1 -inherit
grid      3046     1  0 10:50 ?        00:00:00 /u01/app/11.2.0/grid/bin/tnslsnr LISTENER -inherit

【解决办法】

关于特殊.so文件验证发现文件被占用时,使用以下方法确认:

若有文件被占用,把占用进程杀掉:

opatch error code 73: Prerequisite check "CheckActiveFilesAndExecutables" failed. (文档 ID 1942237.1)

通过核查为OC4J资源online导致特殊文件被该进程占用,使用crsctl stat res -t查看OC4J资源状态,该资源会导致8888漏洞,建议停止该资源,关于修改OC4J可查看官方文档

Security Vulnerability Scan detects Exposed Port on ora.oc4j Resource (文档 ID 1922349.1)

Oracle Containers for J2EE端口8888,Oracle Remote Method Invocation端口23792,23943,是ora.oc4j Resource产生的漏洞。该漏洞在Grid PSU 11.2.0.3.4及更高版本中得到解决。
修复方法
一:停止OC4J资源:srvctl stop oc4j,禁用OC4J服务:srvctl disable oc4j,确认业务没有涉及OC4J资源服务后,建议使用该方法停止OC4J资源。
二:修改OC4J资源的配置文件禁止该端口,How To Disable The OC4J RMIS Port (文档 ID 1369115.1)
如果停止资源后还存在其他用户进程占用文件,可以使用kill方式杀掉该进程(遇到其他用户连接占用该文件)。
 
升级PSU完成之后该版本触发BUG 22730454修改文件$ORACLE_HOME/lib/libsqlplus.so权限640为644。
Permission Of $OH/LIB/LIBSQLPLUS.SO changes from 644 TO 640 on applying 11.2.0.4/12.1.0.2 DBPSU (文档 ID 2201729.1)

【总结】

在工程中,一定确保工程前环境已经检查完成,这样才能使过程中遇到更多的问题。

在升级中遇到问题,仔细查看升级日志中的报错信息,才能准确判断产生问题的原因。

方案准备一定要充分,方案审核一定要仔细,遇到问题后一定要在方案中添加内容,防止下次工程遇到同样的问题。

ORACLE升级PSU&OJVM注意的问题及遇到问题解决思路的更多相关文章

  1. Oracle 11.2.0.4单实例打PSU,OJVM PSU补丁快速参考

    写在前面: 1.Oracel打每个补丁的操作有时存在差异,所以不管多熟悉,都应该在打任何补丁之前阅读新补丁中附带的readme. 2.Oracle每季度都会更新一个最新的PSU,本文最新指的是当前最新 ...

  2. Oracle 11.2.0.4 DataGuard 环境打PSU,OJVM PSU补丁快速参考

    环境:RHEL6.5 + Oracle 11.2.0.4 DataGuard physical standby 主库和备库都是单节点. 需求:主备库同时应用160719的PSU和OJVM PSU补丁. ...

  3. Oracle Recommended Patches -- "Oracle JavaVM Component Database PSU" (OJVM PSU) Patches (文档 ID 1929745.1)

    From: https://support.oracle.com What is "Oracle JavaVM Component Database PSU" ? Oracle J ...

  4. oracle数据库psu升级(本实验是将10.2.0.3.12升级到10.2.0.3.15)

    psu升级(本实验是将10.2.0.3.12升级到10.2.0.3.15) 一.解压安装包自定义存放路径为/home/oracle/yjb/psu/10.2.0.3.15cd /home/oracle ...

  5. Oracle-11g-R2(11.2.0.3.x)RAC Oracle Grid & Database 零宕机方式升级 PSU(自动模式)

    升级环境: 1.源库版本: Grid Infrastructure:11.2.0.3.13 Database:11.2.0.3.13 2.目标库版本: Grid Infrastructure:11.2 ...

  6. oracle数据库 PSU,SPU(CPU),Bundle Patches 和 Patchsets 补丁号码快速参考 (文档 ID 1922396.1)

    数据库 PSU,SPU(CPU),Bundle Patches 和 Patchsets 补丁号码快速参考 (文档 ID 1922396.1) 文档内容   用途   详细信息   Patchsets ...

  7. [Oracle] CPU/PSU补丁安装教程

    什么是CPU/PSU Oracle CPU的全称是Critical Patch Update, Oracle对于其产品每个季度发行一次安全补丁包,通常是为了修复产品中的安全隐患. Oracle PSU ...

  8. [Oracle] CPU/PSU补丁安装详细教程

    Oracle CPU的全称是Critical Patch Update, Oracle对于其产品每个季度发行一次安全补丁包,通常是为了修复产品中的安全隐患,以下是对CPU/PSU补丁安装的具体操作步骤 ...

  9. 【转】Oracle Database PSU/CPU

    转自: http://www.cnblogs.com/ebs-blog/archive/2011/07/28/2167232.html 1. 什么是PSU/CPU?CPU: Critical Patc ...

随机推荐

  1. LeetCode算法题-License Key Formatting(Java实现)

    这是悦乐书的第241次更新,第254篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第108题(顺位题号是482).您将获得一个表示为字符串S的许可证密钥,该字符串仅包含字 ...

  2. 推荐六款炫酷的HTML5效果插件

    1. HTML5 3D图片阴影翻转动画 效果很酷 分享一款很酷的HTML5 3D动画特效,这款3D特效可以为你的图片增加阴影的效果,而且可以让图片在鼠标滑过的时候出现3D翻转的动画效果.这和HTML5 ...

  3. C#基础知识之属性

    其实属性大家经常用,可以说是非常熟悉了,这里就记录一下我那天突然对属性产生的疑惑.为什么需要使用属性?属性的好处是什么? 一.什么是属性? 属性(Property) 是类(class).结构(stru ...

  4. 使用opencv进行简单的手势检测[by Python]

    代码参考于:https://github.com/rainyear/lolita/issues/8 简单的手势识别,基本思路是基于皮肤检测,皮肤的颜色在HSV颜色空间下与周围环境的区分度更高,从RGB ...

  5. nodeJS之crypto模块md5和Hmac加密

    nodeJS之crypto模块md5和Hmac加密 原文地址:https://www.cnblogs.com/tugenhua0707/p/9128690.html 在nodejs中,可以使用cryp ...

  6. CentOS下部署Redis集群

    一.部署环境 服务器三台: 10.10.15.41(配置运行两个实例,端口:6379,6380) 10.10.15.42(配置运行两个实例,端口:6381,6382) 10.10.15.43(配置运行 ...

  7. 如何在Jupyter里以不同的运行模式使用Pyspark

    假设你的环境已经安装好了以下东西,如何详细的安装它们不在本文的讨论范围之内 具体的可疑参考三分钟搞定jupyter和pyspark整合 anaconda2 findspark pyspark 这里多说 ...

  8. .NET 开源项目 Polly 介绍

    今天介绍一个 .NET 开源库:Polly,它是支持 .NET Core 的,目前在 GitHub 的 Star 数量已经接近 5 千,它是一个强大且实用的 .NET 库. Polly 介绍 官方对 ...

  9. openstack基础:网络

    Neutron 功能 Neutron 为整个 OpenStack 环境提供网络支持,包括二层交换,三层路由,负载均衡,防火墙和 *** 等.Neutron 提供了一个灵活的框架,通过配置,无论是开源还 ...

  10. Django生命周期 URL ----> CBV 源码解析-------------- 及rest_framework APIView 源码流程解析

    一.一个请求来到Django 的生命周期   FBV 不讨论 CBV: 请求被代理转发到uwsgi: 开始Django的流程: 首先经过中间件process_request (session等) 然后 ...