Oracle 11gR2是目前新系统应用比较广泛的Oracle版本,根据官方路线图,11.2.0.4是11g末期的一个版本。应该说,11gR2之后,Oracle直接提供了完整升级版本,可以直接安装高版本的数据库系统,不需要从基础版本逐步升级。
本篇主要记录以11.2.0.4为基础,单实例条件下Oracle补丁安装过程。
1、补丁包和环境介绍
首先确定数据库版本,笔者以一台全新安装Oracle 11gR2单实例进行安装,具体版本为11.2.0.4。
SQL> select * from v$version;
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
PL/SQL Release 11.2.0.4.0 - Production
CORE 11.2.0.4.0 Production
TNS for Linux: Version 11.2.0.4.0 - Production
NLSRTL Version 11.2.0.4.0 – Production
进行操作的补丁文件如下:
[root@XXX-PROD-DB upload]# cd patch/
[root@XXX-PROD-DB patch]# ls -l
total 282772
-rw-r--r--. 1 root root 407030 Jul 15 09:03 p19852360_112040_Generic.zip
-rw-r--r--. 1 root root 71580583 Jul 15 09:03 p20299013_112040_Linux-x86-64.zip
-rw-r--r--. 1 root root 12335412 Jul 15 09:03 p20299015_112040_Linux-x86-64.zip
-rw-r--r--. 1 root root 40486165 Jul 15 09:03 p20406239_112040_Linux-x86-64.zip
-rw-r--r--. 1 root root 112087303 Jul 15 09:02 p20834611_112040_Linux-x86-64.zip
-rw-r--r--. 1 root root 52648436 Jul 15 09:02 p6880880_112000_Linux-x86-64.zip
注意:其中p6880880_112000_Linux-x86-64.zip是新版本OPatch,一般而言打补丁都需要更新最新的OPatch。
2、升级OPatch组件
首先需要以覆盖方式升级OPatch组件。
[oracle@XXX-PROD-DB ~]$ cd $ORACLE_HOME
[oracle@XXX-PROD-DB dbhome_1]$ ls -l | grep OPatch
drwxr-xr-x. 8 oracle oinstall 4096 Jul 16 10:08 OPatch
备份OPatch目录,并用解压zip文件替换。
[oracle@XXX-PROD-DB dbhome_1]$ cp /upload/patch/p6880880_112000_Linux-x86-64.zip $ORACLE_HOME
[oracle@XXX-PROD-DB dbhome_1]$ ls -l | grep p6880880_112000_Linux-x86-64.zip
-rw-r--r--. 1 oracle oinstall 52648436 Aug 4 08:42 p6880880_112000_Linux-x86-64.zip
[oracle@XXX-PROD-DB dbhome_1]$ mv OPatch OPatch_BK
[oracle@XXX-PROD-DB dbhome_1]$ ls -l | grep OPatch
drwxr-xr-x. 8 oracle oinstall 4096 Jul 16 10:08 OPatch_BK
解压OPatch文件。
[root@XXX-PROD-DB ~]# cd /u01/app/oracle/product/11.2.0/dbhome_1
[root@XXX-PROD-DB dbhome_1]# ls -l | grep p6880880_112000_Linux-x86-64.zip
-rw-r--r--. 1 oracle oinstall 52648436 Aug 4 08:42 p6880880_112000_Linux-x86-64.zip
[root@XXX-PROD-DB dbhome_1]# unzip p6880880_112000_Linux-x86-64.zip
[root@XXX-PROD-DB dbhome_1]# ls -l | grep OPatch
drwxr-x---. 10 root root 4096 Mar 31 17:10 OPatch
drwxr-xr-x. 8 oracle oinstall 4096 Jul 16 10:08 OPatch_BK
[root@XXX-PROD-DB dbhome_1]# chown -R oracle:oinstall OPatch
[root@XXX-PROD-DB dbhome_1]# ls -l | grep OPatch
drwxr-x---. 10 oracle oinstall 4096 Mar 31 17:10 OPatch
drwxr-xr-x. 8 oracle oinstall 4096 Jul 16 10:08 OPatch_BK
OPatch是一个命令脚本工具,为方便起见,可以将其加入到PATH环境变量中。
[oracle@XXX-PROD-DB dbhome_1]$ cd ~
[oracle@XXX-PROD-DB ~]$ vi .bash_profile
(篇幅原因,有省略……)
ORACLE_SID=XXXCDB
ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1
PATH=$PATH:$ORACLE_HOME/bin:/u01/app/oracle/product/11.2.0/dbhome_1/OPatch
export ORACLE_SID
export ORACLE_BASE
export ORACLE_HOME
export PATH
".bash_profile" 23L, 409C written
查看OPatch版本。
[oracle@XXX-PROD-DB ~]$ opatch version
OPatch Version: 11.2.0.3.10
OPatch succeeded.
2、补丁19852360_112040
补丁19852360_112040是一个简单的补丁,主要是针对JDBC相关的补丁类型。原则上,不需要进行关库操作。
[root@XXX-PROD-DB patch]# unzip p19852360_112040_Generic.zip
Archive: p19852360_112040_Generic.zip
creating: 19852360/
inflating: 19852360/README.txt
creating: 19852360/files/
creating: 19852360/files/jdbc/
(篇幅原因,有省略……)
inflating: 19852360/etc/xml/GenericActions.xml
inflating: 19852360/etc/xml/ShiphomeDirectoryStructure.xml
进入解压目录,注意:要确保补丁文件的文件权限设置。
[oracle@XXX-PROD-DB ~]$ cd /upload/patch/
[oracle@XXX-PROD-DB patch]$ ls -l
total 282776
drwxr-xr-x. 4 oracle oinstall 4096 Oct 20 2014 19852360
-rw-r--r--. 1 root root 407030 Jul 15 09:03 p19852360_112040_Generic.zip
[oracle@XXX-PROD-DB patch]$ cd 19852360/
[oracle@XXX-PROD-DB 19852360]$ ls -l
total 20
drwxr-xr-x. 4 oracle oinstall 4096 Oct 20 2014 etc
drwxr-xr-x. 3 oracle oinstall 4096 Oct 20 2014 files
-rw-rw-r--. 1 oracle oinstall 10858 Oct 28 2014 README.txt
[oracle@XXX-PROD-DB 19852360]$