Applying PSU 12.1.0.1.1 to Oracle Restart

I was actually hoping I had already written enough about applying the PSU for 12.1.0.1.0 but today I tried to apply the patch to my Oracle Restart home in my lab VM and guess what-it wasn’t as automatic as I thought.

I must have performed the classic copy & paste error and applied the patch to the GRID_HOME only. Please don’t do this! The README clearly states you can but if you do, you will run into this mess. At the time of writing there was no hit for the error on my favourite search engine, hence this post. If you see this on a real database and not on your personal lab VM you should of course consult support what to do. This is for educational purposes only, so to say.

I initiated the patch after upgrading OPatch on the RDBMS and GRID homes. The GI PSU (17272829) has been unzipped as the grid owner (“grid”) in /u01/app/grid/stage. I always use separation of duties in my play-VMs to test the edge cases. The path included the OPatch directory from the GRID_HOME. The command I executed was:

[root@server1 ~]$ opatchauto apply /u01/app/grid/stage/17272829 \
> -oh /u01/app/grid/product/12.1.0.1/grid -ocmrf /tmp/ocm.rsp

To my surprise this completed fine. After I realised my mistake-check the -oh flag-I wanted to patch the only RDBMS home too-should be simple. I unzipped the patch as oracle in /u01/app/oracle/stage and pointed all environment variables to the RDBMS home before I executed the patch command:

[root@server1 stage]# opatchauto apply /u01/app/oracle/stage/17272829 \
> -oh /u01/app/oracle/product/12.1.0.1/dbhome_1 -ocmrf /tmp/ocm.rsp
OPatch Automation Tool
Copyright (c) 2013, Oracle Corporation.  All rights reserved.

OPatchauto version : 12.1.0.1.2
OUI version        : 12.1.0.1.0
Running from       : /u01/app/oracle/product/12.1.0.1/dbhome_1

opatchauto log file: /u01/app/grid/product/12.1.0.1/grid/cfgtoollogs/opatchauto/17272829/opatch_gi_2013-11-18_04-01-04_deploy.log

Parameter Validation: Successful

System Configuration Collection failed: oracle.osysmodel.driver.crs.productdriver.ProductDriverException: 
Unknown host name in config:server1.example.com

opatchauto failed with error code 2.

Looks like a DNS error. The log file showed this:

$ cat /u01/app/grid/product/12.1.0.1/grid/cfgtoollogs/opatchauto/17272829/opatch_gi_2013-11-18_03-43-14_deploy.log
===============START of log file================

Initializing command-line Information:
Grid Home                     : /u01/app/grid/product/12.1.0.1/grid
Patch Location                : /u01/app/oracle/stage/17272829
OCM Response File location    : /tmp/ocm.rsp
Nodename                      : server1
Analyze mode                  : false
No-restart                    : false
Patching Home(s) selected     : /u01/app/oracle/product/12.1.0.1/dbhome_1, 
Database Name specified       : false

Initialization Successful.


Parameter Validation: Successful


2013-11-18_03-43-15 :
Collect Patch Data: In Progress...
2013-11-18_03-43-16 :
Collect Patch Data: Completed.
2013-11-18_03-43-16 :
Collect Target Data: In Progress...
2013-11-18_03-43-16 :
GIPatchingHelper::createSystemInstance() called for selected homes
2013-11-18_03-43-19 :
GIPatchingHelper::createSystemInstance() Failed

oracle.osysmodel.driver.crs.AbstractCrsProductDriver.findHostByName(AbstractCrsProductDriver.java:145)
oracle.osysmodel.driver.crs.AbstractCrsProductDriver.findOrMakeHome(AbstractCrsProductDriver.java:415)
oracle.osysmodel.driver.crs.AbstractCrsProductDriver.makeDBHomes(AbstractCrsProductDriver.java:507)
oracle.osysmodel.driver.crs.CrsProductDriver.buildConfigGraph(CrsProductDriver.java:295)
oracle.osysmodel.driver.crs.CrsProductDriver.buildConfigGraph(CrsProductDriver.java:143)
oracle.opatch.gi.GIPatchingHelper.createSystemInstance(GIPatchingHelper.java:251)
oracle.opatch.gi.GIPatchingSessionInfo.createSystemInstance(GIPatchingSessionInfo.java:310)
oracle.opatch.gi.GIPatchingSessionInfo.initializeConfiguration(GIPatchingSessionInfo.java:269)
oracle.opatch.gi.GIPatchingSessionInfo.initializeConfigData(GIPatchingSessionInfo.java:288)
oracle.opatch.gi.GIPatching.process(GIPatching.java:584)
oracle.opatch.GIPatchingSession.process(GIPatchingSession.java:89)
oracle.opatch.OPatchSession.main(OPatchSession.java:2871)
oracle.opatch.OPatch.main(OPatch.java:690)
System Configuration Collection failed: oracle.osysmodel.driver.crs.productdriver.ProductDriverException: 
Unknown host name in config:server1.example.com

I double checked DNS, /etc/resolv.conf, /etc/nsswitch.conf and many other but couldn’t get to the bottom of the problem in the time I allowed myself for troubleshooting. MOS wasn’t too helpful either. The note explaining how to manually apply the GI patch was for RAC, not Oracle Restart.

Until I decided to repeat the patch from the GRID_HOME just the way I performed the first patch-but without the -oh flag-and hurray, it worked:

[root@server1 stage]# opatchauto apply /u01/app/grid/stage/17272829 -ocmrf /tmp/ocm.rsp 
OPatch Automation Tool
Copyright (c) 2013, Oracle Corporation.  All rights reserved.

OPatchauto version : 12.1.0.1.2
OUI version        : 12.1.0.1.0
Running from       : /u01/app/grid/product/12.1.0.1/grid

opatchauto log file: /u01/app/grid/product/12.1.0.1/grid/cfgtoollogs/opatchauto/17272829/opatch_gi_2013-11-18_04-48-42_deploy.log

Parameter Validation: Successful

Grid Infrastructure home:
/u01/app/grid/product/12.1.0.1/grid
RAC home(s):
/u01/app/oracle/product/12.1.0.1/dbhome_1

Configuration Validation: Successful

Patch Location: /u01/app/grid/stage/17272829
Grid Infrastructure Patch(es): 17027533 17077442 17303297 
RAC Patch(es): 17027533 17077442 

Patch Validation: Successful

Stopping RAC (/u01/app/oracle/product/12.1.0.1/dbhome_1) ... Successful

Applying patch(es) to "/u01/app/oracle/product/12.1.0.1/dbhome_1" ...
Patch "/u01/app/grid/stage/17272829/17027533" successfully applied to "/u01/app/oracle/product/12.1.0.1/dbhome_1".
Patch "/u01/app/grid/stage/17272829/17077442" successfully applied to "/u01/app/oracle/product/12.1.0.1/dbhome_1".

Applying patch(es) to "/u01/app/grid/product/12.1.0.1/grid" ...
Patch "/u01/app/grid/stage/17272829/17027533" is already installed on "/u01/app/grid/product/12.1.0.1/grid". Please rollback the existing identical patch first.
Patch "/u01/app/grid/stage/17272829/17077442" is already installed on "/u01/app/grid/product/12.1.0.1/grid". Please rollback the existing identical patch first.
Patch "/u01/app/grid/stage/17272829/17303297" is already installed on "/u01/app/grid/product/12.1.0.1/grid". Please rollback the existing identical patch first.

Starting RAC (/u01/app/oracle/product/12.1.0.1/dbhome_1) ... Successful

[WARNING] The local database(s) on "/u01/app/oracle/product/12.1.0.1/dbhome_1" is not running. SQL changes, if any, cannot be applied.

Apply Summary:
Following patch(es) are successfully installed:
RAC Home: /u01/app/oracle/product/12.1.0.1/dbhome_1: 17027533, 17077442

opatchauto ran into some warnings during patch installation (Please see log file for details):
GI Home: /u01/app/grid/product/12.1.0.1/grid: 17027533, 17077442, 17303297

opatchauto succeeded.

It seemed to have worked, the patches in the GRID_HOME were identical and skipped. In a real live situation you should consult Oracle Support to get their blessing.

Summary

Moral of the story: don’t apply the patch to a single Oracle home only, let it do the whole patch! Also ensure you run datapatch to apply the SQL changes to any database from your RDBMS home.

Advertisement