Sunday, July 24, 2011

Apply CRS Patch to CRS_HOME only or RDBMS_HOME only


Goal

The Clusterware patches for 10g and 11g contain binaries that can be installed in the Clusterware home (CRS_HOME), and the database home (RDBMS_HOME). Due to normal upgrading of the Oracle software in a RAC environment, customers may want to maintain multiple Oracle homes of different versions. Under some situation, customers may need to apply a CRS patch to either CRS_HOME or RDBMS_HOME.

The README.txt that comes with a CRS patch generally assumes customers apply the patch to both CRS_HOME and RDBMS_HOME at the same time. This note gives instructions on what to do if customers need to apply a CRS patch to only CRS_HOME or only RDBMS_HOME.

Customers may need to do this when:

1). Customers have a mixed CRS and RDBMS version.
2). Customers need to apply a CRS patch to a single ASM instance environment, or single instance Exadata ennvironment. For example, patch ocssd.bin on single ASM instance environment; patch diskmon.bin on a single instance Exadata environment.

Solution

1. Apply a CRS patch to CRS_HOME but not to RDBMS_HOME.

Under this scenario, since CRS patch is not applied to RDBMS_HOME, one can skip the steps in README.txt related to RDBMS_HOME. An outline of the steps follows.
1). Verify that the Oracle Inventory is properly configured.
2). Unzip the PSE container file
3). Shutdown the RDBMS and ASM instances, listeners and nodeapps on all nodes before shutting down the CRS daemons.
4). Invoke the custom/scripts/prerootpatch.sh as root to unlock protected files.
5). Invoke custom/scripts/prepatch.sh -crshome <CRS_HOME>
     Note: Do not run custom/server/7<patch#>/custom/scripts/prepatch.sh -dbhome <RDBMS_HOME>
6). Patch the CRS_HOME files
     opatch napply -local -oh <CRS_HOME> -id <patch#>
     Note: Do not run opatch against RDBMS_HOME.
7). Configure CRS_HOME
     custom/scripts/postpatch.sh -crshome <CRS_HOME>
     Note: Do not run custom/server/<patch#>/custom/scripts/postpatch.sh -dbhome <RDBMS_HOME>
8). Invoke custom/scripts/postrootpatch.sh -crshome <CRS_HOME> as root
9). Determine whether the patch has been installed on CRS_HOME:
     opatch lsinventory -detail -oh <CRS_HOME>
     Note: Since the patch is not installed on RDBMS_HOME, opatch lsinventory -oh <RDBMS_HOME> will not show the patch#.

2. Apply CRS patch on RDBMS_HOME but not CRS_HOME.

Under this scenario, since CRS patch is not applied to CRS_HOME, but it is applied to RDBMS_HOME, one can skip the steps in README.txt related to CRS_HOME.
1). Verify that the Oracle Inventory is properly configured.
2). Unzip the PSE container file
3). Shutdown the RAC/ASM instances, listeners, nodeapps that runs from RDBMS_HOME. Since we are not patching CRS_HOME, CRS daemons do not need to be down.
4). Skip:  custom/scripts/prerootpatch.sh -crshome <CRS_HOME> -crsuser <username>
5). Skip: custom/scripts/prepatch.sh -crshome <CRS_HOME>
     Run: custom/server/<patch#>/custom/scripts/prepatch.sh -dbhome <RDBMS_HOME>
6). Patch the Files
     Skip 6.1 Patch the CRS home files:
                 opatch napply -local -oh <CRS_HOME> -id <patch#>
     Run: 6.2 Patch the RDBMS home files:
                 opatch napply custom/server/ -local -oh <RDBMS_HOME> -id <patch#>
7). Configure the HOME
     Skip: 7.1 Configure the CRS HOME
             custom/scripts/postpatch.sh -crshome <CRS_HOME>
     Run: 7.2 Configure the RDBMS HOME
             custom/server/<patch#>/custom/scripts/postpatch.sh -dbhome <RDBMS_HOME>
8). Skip: custom/scripts/postrootpatch.sh -crshome <CRS_HOME>
9). Verify patch is installed on RDBMS_HOME:
      opatch lsinventory -detail -oh <RDBMS_HOME>
10). Start nodeapps, listeners, ASM/RAC instances that were shutdown before the patching

1 comments:

iGorbatovsky said...

Thanks! This gave me a clue to my problem. I wonder though, why on earth "custom/server/" stands for "actual patch location"? It brought me a lot of confusion.

Post a Comment

Auto Scroll Stop Scroll