1.现象描述
oracle 12.1.0.2 WINDOWS环境.
oravssw.exe 进程的内存持续增长,导致数据库宕机。
2.BUG分析
Bug 19835650 - Windows: VSS oravssw.exe memory leak (Doc ID 19835650.8)
Versions confirmed as being affected:受影响的版本:
12.1.0.2 (Server Patch Set) --当前数据库就是该版本。
12.1.0.1 (Base Release)
11.2.0.4
3.处理方法
12.1的版本首次修复:
12.1.0.2.160419 (Apr 2016) Bundle Patch for Windows Platforms
12.1.0.1.0 是一个基础版本。
4.打补丁修复
补丁下载位置:
https://support.oracle.com/epmos/faces/DocumentDisplay?_afrLoop=81493224618717&id=1454618.1&_adf.ctrl-state=12guo8rdq4_197
补丁:
APR2016(12.1.0.2.160419) --首次修复oravssw.exe内存增长的bug;
这边数据库是安装的12.1.0.2.0 的基础版本。在该版本上存在bug,确认会出现oravssw.exe进程内存增长的情况,首次修复该问题是:APR2016(12.1.0.2.160419)在这个版本中。也可以下载12.1.0.2系列补丁中比这个版本更高的补丁进行修复。
临时解决方法就是:定期重启 oravssw.exe进程。
5.补丁修复
29831650 我们使用该补丁进行修复。
(1)备份
1.备份
在打补丁之前开开始备份数据库。物理或逻辑备份均可。
rman 物理备份。
expdp 逻辑备份。
cp app app_bak 安装目录备份。
(2)打补丁
--具体目录根据实际修改。
set ORACLE_SID=orcl --写具体的实例名
set ORACLE_HOME=c:\app\product\12.1.0\dbhome_1
set PATH=%ORACLE_HOME%\perl\bin;%PATH%
--1.关闭数据库。
sqlplus / as sysdba
shu immediate
exit
--2.关闭监听
lsnrctl stop
--3.备份安装目录
cp app app_bak
--4. 备份原来的OPatch目录。
mv OPatch OPatch_bak
--5.解压新的补丁工具并打补丁
unzip p29831650_121020_MSWIN-x86-64.zip
cd 29831650
opatch apply
--6.打补丁后SQL应用
--启动数据库
sqlplus / as sysdba
startup
--执行SQL补丁。
cd %ORACLE_HOME%/OPatch
datapatch -verbose
--7.如果有RMAN的CATALOG库,catalog库也需要升级,如果没有使用则忽略。
#rman catalog username/password@alias
#RMAN> UPGRADE CATALOG;
(3)卸载补丁
补丁失败卸载方法
--1.回滚包
set ORACLE_SID=orcl
set ORACLE_HOME=c:\app\product\12.1.0\dbhome_1
set PATH=%ORACLE_HOME%\perl\bin;%PATH%
(1)关闭数据库
sqlplus / as sysdba
shu immediate
(2)关闭监听
lsnrctl status
(3)回滚补丁包
opatch rollback -id 29831650
--2.回滚SQL
(1)启动数据库
sqlplus / as sysdba
startup
(2)回滚SQL补丁
cd %ORACLE_HOME%/OPatch
datapatch -verbose
(3)查看补丁情况
select * from dba_registry_sqlpatch;