查看数据库版本方法如下:
以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,在报错的主机上点击重新执行即可。