使用OPatch给Oracle打补丁

本文介绍如何在Oracle 11g数据库上安装PSU16补丁包,包括准备工作、关闭数据库进程、应用补丁及验证安装等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

查看数据库版本方法如下:

oracle用户登录数据库,查看数据库版本。

$ sqlplus / as sysdba

SQL> select * from v$version;

输出信息包含如下类似信息。

BANNER

--------------------------------------------------------------------------------

Oracle Database 11g Enterprise Edition Release 11.1.0.7.0- 64bit Production

PL/SQL Release 11.1.0.7.0 - Production

CORE    11.1.0.7.0      Production

TNS for Linux: Version 11.1.0.7.0 - Production

NLSRTL Version 11.1.0.7.0 – Production

如上所示,11.1.0.7.0即为Oracle数据库的当前版本。

 

OPatch工具(opatch版本必须为11.1.0.8.2以上)、PSU16——p16619896_111070_Linux-x86-64.zip 补丁包解压在$ORACLE_HOME

~> opatch version  查询opatch的版本

 

使用which命令确保makearldnm执行命令包含在环境变量PATH

~> which make

/usr/bin/make

~> cd $ORACLE_HOME

~> unzip p16619896_111070_Linux-x86-64.zip

 

检查当前是否已安装整改要求的补丁包

~> opatch lsinventory -all

检查补丁冲突。

> export PATH=$ORACLE_HOME/OPatch:$PATH

> opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir ./ 16619896

 

关闭数据库所有进程。

oracle用户登录执行以下命令关闭数据库所有进程。

~> lsnrctl stop

~> sqlplus / as sysdba

SQL> shutdown immediate

SQL> exit

查看是否存在oracle进程。

~> ps -ef |grep -v grep |grep oracle

~> kill -9<PID>

 

执行补丁包

~> cd $ORACLE_HOME/16619896

~> opatch apply

 

oracle用户登录执行以下命令修正数据库的SQL文件。

~> cd $ORACLE_HOME/rdbms/admin

~> sqlplus /nolog

SQL> CONNECT / AS SYSDBA

SQL> STARTUP

SQL> @catbundle.sql psu apply

SQL>QUIT

 

oracle用户登录执行以下命令检查数据字典是否已经重新编译。

~> sqlplus / as sysdba

SQL> SELECT * FROM registry$history where ID = '6452863';

如果此sql有一行或多行数据返回,则不需要执行以下命令;如果没有数据返回(no rows selected),则需要执行以下操作。

oracle用户登录执行以下命令重新编译数据字典。

~> cd $ORACLE_HOME/cpu/view_recompile

> sqlplus /nolog

SQL> CONNECT / AS SYSDBA

SQL> @recompile_precheck_jan2008cpu.sql

SQL> SHUTDOWN IMMEDIATE

SQL> STARTUP UPGRADE

SQL> @view_recompile_jan2008cpu.sql

SQL> SHUTDOWN

SQL> STARTUP

SQL> QUIT

 

检查打PSU16包是否成功,包含关键字“Patch 16619896

~> opatch lsinventory –all

 

如果执行该命令有类似如下报错,则可能是oracle进程未完全关闭。

Prerequisite check "CheckActiveFilesAndExecutables" FAILED.

The details are:Following executables are active :/opt/oracle/app/oracle/product/11.1.0/mos7100/bin/oracle

Log file location: /opt/oracle/app/oracle/product/11.1.0/mos7100/cfgtoollogs/opatch/16619896_Sep_27_2013_18_07_54/apply2013-09-27_18-07-54PM_1.log

Recommended actions: OPatch needs to modify files which are being used by some processes.

OPatch FAILED with ERROR code 41

 

按照如下步骤解决:

1.    oracle用户登录执行以下命令关闭数据库所有进程。

~> lsnrctl stop

~> sqlplus / as sysdba

SQL> shutdown immediate

SQL> exit

2.    查看是否存在oracle进程。

~> ps -ef |grep -v grep |grep oracle

3.    杀掉除sshd:*-bashsu - oracleps -ef以外的其他进程

~> kill -9 <PID>

4.  删除文件锁 

cd /opt/oracle/app/oracle/product/11.1.0/mos7100/.patch_storage

rm patch_lock

5.  ideploy的当前任务中的Step Two后打上断点,选择单击Step Two,在报错的主机上点击重新执行即可。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值