Oracle 10g RAC 升级(CPU Update)之--升级数据库软件

系统环境:

操作系统:RedHat EL5

Cluster: Oracle CRS 10.2.0.1.0

Oracle:  Oracle 10.2.0.1.0

如图所示:RAC 系统架构


wKiom1NxfHvgSL6BAAGvUOVml00464.jpg

二、升级数据库软件

升级数据库软件需要关闭每个节点的DBMS Instance、ASM Instance、Listener等service。

[oracle@node1 ~]$ srvctl stop database -d prod
[oracle@node1 ~]$ srvctl stop asm -n node1
[oracle@node1 ~]$ srvctl stop asm -n node2
[oracle@node1 ~]$ srvctl stop listener -n node1
[oracle@node1 ~]$ srvctl stop listener -n node2

[root@node1 ~]# crs_stat -t
Name           Type           Target    State     Host        
------------------------------------------------------------
ora....SM1.asm application    ONLINE    ONLINE    node1       
ora....E1.lsnr application    OFFLINE   OFFLINE         
ora.node1.gsd  application    ONLINE    ONLINE    node1       
ora.node1.ons  application    ONLINE    ONLINE    node1       
ora.node1.vip  application    ONLINE    ONLINE    node1       
ora....SM2.asm application    OFFLINE   OFFLINE               
ora....E2.lsnr application    OFFLINE   OFFLINE               
ora.node2.ons  application    OFFLINE   OFFLINE               
ora.node2.vip  application    OFFLINE   OFFLINE               
ora.prod.db    application    ONLINE    ONLINE    node2       
ora....d1.inst application    ONLINE    ONLINE    node1       
ora....d2.inst application    OFFLINE   OFFLINE

以Oracle的身份进行升级,补丁包和CRS采用相同的补丁包

wKioL1Nxff-BPC9ZAAPAyzvvdxY635.jpg

此处,选择“Oracle 软件”安装目录

wKioL1NxfjXjdXFtAAVVlc0dhPk343.jpg

此处可以略过

wKioL1NxfnbjJkgUAASPJOSV9Is773.jpg

开始升级安装

wKiom1Nxfr6ThyvNAAQ7TevEkuQ887.jpg

按照提示,在node节点执行脚本(数据库软件升级只需在一个节点完成即可)

[root@node1 ~]# /u01/app/oracle/product/10.2.0/db_1/root.sh
Running Oracle10 root.sh script...
The following environment variables are set as:
    ORACLE_OWNER= oracle
    ORACLE_HOME=  /u01/app/oracle/product/10.2.0/db_1
Enter the full pathname of the local bin directory: [/usr/local/bin]: 
The file "dbhome" already exists in /usr/local/bin.  Overwrite it? (y/n) 
[n]: y
   Copying dbhome to /usr/local/bin ...
The file "oraenv" already exists in /usr/local/bin.  Overwrite it? (y/n) 
[n]: y
   Copying oraenv to /usr/local/bin ...
The file "coraenv" already exists in /usr/local/bin.  Overwrite it? (y/n) 
[n]: y
   Copying coraenv to /usr/local/bin ...
Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root.sh script.
Now product-specific root actions will be performed.

[root@node2 ~]# /u01/app/oracle/product/10.2.0/db_1/root.sh

@脚本运行成功后,即可完成数据库软件的升级!


升级过程遇到的问题:

wKioL1Nxf7eSyfb7AAUiDhl8N-w752.jpg

提示:tnslsnr 进程未关闭!

查看CRS service:

[oracle@node1 ~]$ crs_stat -t
Name           Type           Target    State     Host        
------------------------------------------------------------
ora....SM1.asm application    OFFLINE   OFFLINE               
ora....E1.lsnr application    ONLINE    ONLINE    node1       
ora.node1.gsd  application    ONLINE    ONLINE    node1       
ora.node1.ons  application    ONLINE    ONLINE    node1       
ora.node1.vip  application    ONLINE    ONLINE    node1       
ora....SM2.asm application    OFFLINE   OFFLINE               
ora....E2.lsnr application    ONLINE    ONLINE    node2       
ora.node2.gsd  application    ONLINE    ONLINE    node2       
ora.node2.ons  application    ONLINE    ONLINE    node2       
ora.node2.vip  application    ONLINE    ONLINE    node2       
ora.prod.db    application    OFFLINE   OFFLINE               
ora....d1.inst application    OFFLINE   OFFLINE               
ora....d2.inst application    OFFLINE   OFFLINE

错误原因:应该是忘记关闭节点上的Listener service

解决方法:关闭Listener service          

[oracle@node1 ~]$ srvctl stop listener -h
Usage: srvctl stop listener -n <node_name> [-l <lsnr_name_list>]
    -n <node>           Node name
    -l "<lsnr,...>"     Comma separated listener names
    -h                  Print usage
[oracle@node1 ~]$ srvctl stop listener -n node1
[oracle@node1 ~]$ srvctl stop listener -n node2
[oracle@node1 ~]$ netstat -an |grep 1521

@至此问题解决