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

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

$ sqlplus / as sysdba

SQL> select * from v$version;

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

BANNER

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

Oracle Database 11g Enterprise Edition Release11.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命令确保make、ar、ld、nm执行命令包含在环境变量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:*,-bash,su - oracle,ps -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,在报错的主机上点击重新执行即可。