1. 概述
将Oracle数据库升级到10.2.0.4。
2. 具体操作步骤
2.1 下载升级包
-rw-r--r-- 1 oracle oinstall 166308 Aug 18 10:05 p8575528_102044_Linux-x86-64.zip
-rw-r--r-- 1 oracle oinstall 27412455 Aug 18 10:13 p6880880_102000_Linux-x86-64.zip
-rw-r--r-- 1 oracle oinstall 22294298 Aug 18 13:11 p9352164_10204_Linux-x86-64.zip
-rw-r--r-- 1 oracle oinstall 53853693 Aug 18 13:11 p9294403_10204_Linux-x86-64.zip
软件介绍:
数据库软件:p8575528_102044_Linux-x86-64.zip
opatch补丁:p6880880_102000_Linux-x86-64.zip
数据库DB PSU:p9352164_10204_Linux-x86-64.zip
CRS PUS:p9294403_10204_Linux-x86-64.zip
2.2 基础环境检查
操作系统版本
[10:42:13oracle@node1 ~]uname -a
Linux node1 2.6.9-78.ELsmp #1 SMP Wed Jul 9 15:46:26 EDT 2008 x86_64 x86_64 x86_64 GNU/Linux
[10:42:17oracle@node1 ~]
集群件版本
[10:42:18oracle@node1 ~]crsctl query crs softwareversion
CRS software version on node [node1] is [10.2.0.1.0]
[10:42:27oracle@node1 ~]
数据库版本
[10:43:08oracle@node1 ~]sqlplus / as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on Fri May 28 10:43:11 2010
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production
With the Partitioning, Real Application Clusters, OLAP and Data Mining options
SYS@NODE1:null1>select * from v$version;
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bi
PL/SQL Release 10.2.0.1.0 - Production
CORE 10.2.0.1.0 Production
TNS for Linux: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production
[oracle@rac2-10gr2 soft]$ crs_stat -t -v
Name Type R/RA F/FT Target State Host
----------------------------------------------------------------------
ora....SM1.asm application 0/5 0/0 ONLINE ONLINE rac1-10gr2
ora....R2.lsnr application 0/5 0/0 ONLINE ONLINE rac1-10gr2
ora....gr2.gsd application 0/5 0/0 ONLINE ONLINE rac1-10gr2
ora....gr2.ons application 0/3 0/0 ONLINE ONLINE rac1-10gr2
ora....gr2.vip application 0/0 0/0 ONLINE ONLINE rac1-10gr2
ora....SM2.asm application 0/5 0/0 ONLINE ONLINE rac2-10gr2
ora....R2.lsnr application 0/5 0/0 ONLINE ONLINE rac2-10gr2
ora....gr2.gsd application 0/5 0/0 ONLINE ONLINE rac2-10gr2
ora....gr2.ons application 0/3 0/0 ONLINE ONLINE rac2-10gr2
ora....gr2.vip application 0/0 0/0 ONLINE ONLINE rac2-10gr2
ora.racdb.db application 0/1 0/1 ONLINE ONLINE rac2-10gr2
ora....oltp.cs application 0/0 0/1 ONLINE ONLINE rac1-10gr2
ora....db1.srv application 0/0 0/0 ONLINE ONLINE rac1-10gr2
ora....b1.inst application 0/5 0/0 ONLINE ONLINE rac1-10gr2
ora....b2.inst application 0/5 0/0 ONLINE ONLINE rac2-10gr2
2.3 升级CRS软件
确定升级安装包已经上传到数据服务器的/home/oracle目录下,并且确认安装包所属权限为oracle权限。 升级操作使用图形界面安装,需要在服务器现场操作。 登陆两台数据库服务器,如果是终端模式,需要切换到图形模式。终端模式切换到图形模式,只需要用root用户在终端模式下执行startx命令即可。如下
[root@rac1 ~]# startx
为了保证运行升级安装时,能够打开图形界面,需要用root用户执行如下操作。
[root@rac1 ~]# xhost + 升级操作步骤如下(如不做特殊说明,如下均为oracle用户操作):
(1) 登陆节点1,在节点1上(rac1)用oracle用户停止进程。 可以用crs_stop -all 停止所有服务。如下
[oracle@rac1 ~]$ crs_stop -all 或者逐个停止也可以。
[oracle@rac1 ~]$ srvctl stop database -d rac
[oracle@rac1 ~]$ srvctl stop nodeapps -n rac1
[oracle@rac1 ~]$ srvctl stop nodeapps -n rac2
[oracle@rac1 ~]$ /opt/app/oracle/crs/10.2.0/bin/crs_stop -all
一定要确认服务已经停止,查看crs运行状态。
[oracle@rac1 ~]#crs_stat -t
查看两个节点的所有服务stat都是offline
(2) 解压升级包
打开终端,切换到oracle用户下,切换目录到升级包目录,如下
[oracle@rac1 ~]$ su – oracle
[oracle@rac1 ~]$ cd /home/oracle
[oracle@rac1 ~]$ unzip p6810189_10204_Linux-x86-64.zip #解压操作
(3)在rac1上切换到升级包目录下,执行升级操作:
[oracle@rac1 ~]$ cd /home/oracle/Disk1 [oracle@rac1 ~]$ ./runInstaller
注意:如果不能打开图形界面,确认已经用root用户执行过xhost +
注意:在这里选择名称的下拉箭头,选crs的安装名称。name名称安装上面写。
默认继续下一步操作,系统进行升级前检查,检查结果必须都通过,否则不能进行下一步升级。
使用root用户分别在两个节点上执行如下命令操作。 执行结果如图所示。
[root@rac1 ~]#/opt/app/oracle/crs/10.2.0/bin/crsctl stop crs
在节点1上执行如下命令:
[root@rac1 ~]#/opt/app/oracle/crs/10.2.0/install/root102.sh
Creating pre-patch directory for saving pre-patch clusterware files
Completed patching clusterware files to /u01/app/oracle/crs
Relinking some shared libraries.
Relinking of patched files is complete.
WARNING: directory '/u01/app/oracle' is not owned by root
WARNING: directory '/u01/app' is not owned by root
WARNING: directory '/u01' is not owned by root
Preparing to recopy patched init and RC scripts.
Recopying init and RC scripts.
Startup will be queued to init within 30 seconds.
Starting up the CRS daemons.
Waiting for the patched CRS daemons to start.
This may take a while on some systems.
.
10204 patch successfully applied.
clscfg: EXISTING configuration version 3 detected.
clscfg: version 3 is 10G Release 2.
Successfully accumulated necessary OCR keys.
Using ports: CSS=49895 CRS=49896 EVMC=49898 and EVMR=49897.
node <nodenumber>: <nodename> <private interconnect name> <hostname>
node 1: rac1-10gr2 rac1-10gr2-priv rac1-10gr2
Creating OCR keys for user 'root', privgrp 'root'..
Operation successful.
clscfg -upgrade completed successfully
节点1运行完成后上述操作后,在节点2(rac2)上进行重复操作
检查两个节点CRS版本
[oracle@rac2-10gr2 ~]$ crsctl query crs softwareversion
CRS software version on node [rac2-10gr2] is [10.2.0.4.0]
[oracle@rac2-10gr2 soft]$ crsctl query crs softwareversion
CRS software version on node [rac2-10gr2] is [10.2.0.4.0]
CRS升级完成。
2.4 升级数据库软件
(1)登陆节点1,在节点1上(rac1)用oracle用户停止进程。
[oracle@rac1 ~]$ srvctl stop database -d rac
[oracle@rac1 ~]$ srvctl stop nodeapps -n rac1
[oracle@rac1 ~]$ srvctl stop nodeapps -n rac2
[oracle@rac1 ~]$ /opt/app/oracle/crs/10.2.0/bin/crs_stop –all
或者直接执行
[oracle@rac1 ~]$ crs_stop -all 确认服务已经停止
[oracle@rac1 ~]$ crs_stat -t
查看两个节点的所有服务stat都是offline
(2)在rac1的升级包目录下:
[oracle@rac1 ~]$ cd /home/oracle/Disk1
[oracle@rac1 ~]$ ./runInstaller
注意:在两个节点上执行覆盖文件之前,建议把/usr/local/bin做一下备份,命令如下:
[root@rac1~]#cd /usr/local/
[root@rac1~]#cp –rf bin bin.old
[root@rac2~]#cd /usr/local/
[root@rac2~]#cp –rf bin bin.old
安装最后分别在两个节点上执行如下命令。提示如图所示。
[root@rac1 ~]#/opt/app/oracle/product/10.2.0/db_1/./root.sh
执行完成后在节点2上执行如下命令
[root@rac2 ~]#/opt/app/oracle/product/10.2.0/db_1/./root.sh
2.5 升级数据字典
在升级之前需要确保CRS服务至少一个节点上已经启动,状态是ONLINE。如果没有启动,可以在任意节点执行以下命令启动CRS服务。
(1)在节点1(rac1)上用oracle用户执行如下命令:
[root@rac1 ~]# su –oracle
[oracle@rac1 ~]$ crs_start -all
[oracle@rac1 ~]$ crs_stat -t
注意:在启动的过程中会提示数据库实例无法启动,不必担心,在未执行下面脚本之前,数据实例不能启动,系统只启动集群服务。继续下面的操作。
[oracle@rac1 ~]$ sqlplus /nolog
SQL>CONN SYS AS SYSDBA
SQL> SHUTDOWN IMMEDIATE
SQL> STARTUP NOMOUNT
SQL> ALTER SYSTEM SET CLUSTER_DATABASE=FALSE SCOPE=spfile;
SQL> SHUTDOWN
(2)运行升级脚本
SQL> STARTUP UPGRADE
SQL> SPOOL patch.log
SQL> @?/rdbms/admin/catupgrd.sql #此处执行时间较长,耐心等待,测试环境上执行了约30 分钟
SQL> SHUTDOWN IMMEDIATE
SQL> SPOOL OFF
(3)编译无效对象
SQL> STARTUP SQL> @?/rdbms/admin/utlrp.sql
SQL>ALTER SYSTEM SET CLUSTER_DATABASE=TRUE scope=spfile;
SQL> SHUTDOWN IMMEDIATE SQL> STARTUP
(4)升级后检查
[root@rac1 ~]# su - oracle
[oracle@rac1 ~]$ sqlplus / as sysdba
set linesize 200
set pagesize 40
COL COMP_NAME FOR A50
COL VERSION FOR A12
COL STATUS FOR A12
SELECT COMP_NAME, VERSION, STATUS FROM SYS.DBA_REGISTRY;
COMP_NAME VERSION STATUS
-------------------------------------------------- ------------ ------------
Oracle Enterprise Manager 10.2.0.4.0 VALID
Spatial 10.2.0.4.0 VALID
Oracle interMedia 10.2.0.4.0 VALID
OLAP Catalog 10.2.0.4.0 VALID
Oracle XML Database 10.2.0.4.0 VALID
Oracle Text 10.2.0.4.0 VALID
Oracle Expression Filter 10.2.0.4.0 VALID
Oracle Rule Manager 10.2.0.4.0 VALID
Oracle Workspace Manager 10.2.0.4.3 VALID
Oracle Data Mining 10.2.0.4.0 VALID
Oracle Database Catalog Views 10.2.0.4.0 VALID
Oracle Database Packages and Types 10.2.0.4.0 VALID
JServer JAVA Virtual Machine 10.2.0.4.0 VALID
Oracle XDK 10.2.0.4.0 VALID
Oracle Database Java Packages 10.2.0.4.0 VALID
OLAP Analytic Workspace 10.2.0.4.0 VALID
Oracle OLAP API 10.2.0.4.0 VALID
Oracle Real Application Clusters 10.2.0.4.0 VALID
18 rows selected.
(5) 修改兼容性
alter system set compatible='10.2.0.4.0' scope=spfile sid='*';
重启数据库
2.6 补丁和版本检查
[oracle@rac2-10gr2 OPatch]$ ./opatch lsinventory
Invoking OPatch 10.2.0.5.1
Oracle Interim Patch Installer version 10.2.0.5.1
Copyright (c) 2010, Oracle Corporation. All rights reserved.
Oracle Home : /u01/app/oracle/product/10.2.0/db_1
Central Inventory : /u01/app/oracle/oraInventory
from : /etc/oraInst.loc
OPatch version : 10.2.0.5.1
OUI version : 10.2.0.4.0
OUI location : /u01/app/oracle/product/10.2.0/db_1/oui
Log file location : /u01/app/oracle/product/10.2.0/db_1/cfgtoollogs/opatch/opatch2016-08-18_17-03-50PM.log
Patch history file: /u01/app/oracle/product/10.2.0/db_1/cfgtoollogs/opatch/opatch_history.txt
Lsinventory Output file location : /u01/app/oracle/product/10.2.0/db_1/cfgtoollogs/opatch/lsinv/lsinventory2016-08-18_17-03-50PM.txt
--------------------------------------------------------------------------------
Installed Top-level Products (2):
Oracle Database 10g 10.2.0.1.0
Oracle Database 10g Release 2 Patch Set 3 10.2.0.4.0
There are 2 products installed in this Oracle Home.
Interim patches (2) :
Patch 8575528 : applied on Thu Aug 18 14:20:42 CST 2016
Unique Patch ID: 12363258
Created on 5 Apr 2010, 16:16:27 hrs PST8PDT
Bugs fixed:
8575528
This patch overlays patches:
9352164
This patch needs patches:
9352164
as prerequisites
Patch 9352164 : applied on Thu Aug 18 13:22:32 CST 2016
Unique Patch ID: 12307477
Created on 1 Apr 2010, 11:33:14 hrs PST8PDT
Bugs fixed:
9377578, 6418420, 7835247, 7207654, 7592346, 6724797, 7936993, 7331867
9093300, 7535152, 7552067, 5879114, 8866013, 5457450, 8344348, 7272297
Rac system comprising of multiple nodes
Local node = rac2-10gr2
Remote node = rac1-10gr2
--------------------------------------------------------------------------------
OPatch succeeded.
3. 升级PSU补丁
3.1 执行升级包
进入升级目录,运行runInstaller,按照提示进行安装:
3.2 执行DBUA时系统会提示下列错误
Exception in thread "main" java.security.AccessControlException: access denied
(java.lang.RuntimePermission setIO)at java.security.AccessControlContext.checkPermission(AccessControlContext.java:269) ……
解决方法:
在oracle 用户主目录下编辑.java.policy文件,添加内容如下(绿色粗体部分):
-------------------------------------------
grant {
permission java.security.AllPermission;
};
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26228938/viewspace-2135860/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/26228938/viewspace-2135860/