“rootcrs.pl -prepatch” fails when applying Windows Bundlepatch to GI

When applying Bundlepatches to a Grid Infrastructure installation on Windows, one needs to execute the “rootcrs.pl -prepatch” srcipt in order to stop and unlock the clusterware stack. Sometimes this script ends up with the following error:

C:\Windows\system32>%ORACLE_HOME%\perl\bin\perl -I%ORACLE_HOME%\perl\lib -I%ORACLE_HOME%\crs\install %ORACLE_HOME%\crs\install\rootcrs.pl -prepatch
Using configuration parameter file: D:\app\grid\12.1.0.2\crs\install\crsconfig_params
2015/12/14 13:39:12 CLSRSC-546: The Grid Infrastructure processes identified by the following PIDs (9596) are still active.

Died at d:\app\grid\12.1.0.2\crs\install/crspatch.pm line 732.

This in turns prevents the patch procedure to complete successfully because the “rootcrs.pl -postpatch” execution will find out that the unlock did not complete without error.
Obviously one should only proceed when the prepatch completed without any issues. Looking for the PID mentioned in the error message using either Windows Taskmanager or ProcessExplorer did not return any result. There is no process with that PID. It is kind of a orphaned process. Let’s find out where the PID comes from by looking into the logfile under

%ORACLE_HOME%\cfgtoollogs\crsconfig\crspatch_<servername>_<timestamp>.log

Search the file for the PID showes something like this:

2015-12-14 13:33:21: PID in <D:\app\oracle\crsdata\<servername>\output\crsd_scriptagent_system.pid> is: 9596
2015-12-14 13:33:21: The GI process identified by PID<9596> is running

Now one can replace the PID in that file, 9596 in this case, with a simple 0. Do leave the *.pid file empty since this would lead to another error:

C:\Windows\system32>%ORACLE_HOME%\perl\bin\perl -I%ORACLE_HOME%\perl\lib -I%ORACLE_HOME%\crs\install %ORACLE_HOME%\crs\install\rootcrs.pl -prepatch
Using configuration parameter file: D:\app\grid\12.1.0.2\crs\install\crsconfig_params
Can't kill a non-numeric process ID at d:\app\grid\12.1.0.2\crs\install/crsutils.pm line 12324.

Thrust me, use a 0 and the “rootcrs.pl -prepatch” will complete successfully.
There are a some more things I run into which I will explain in upcoming blog posts.
So long, thanks for reading.

Advertisements