Jagjeet's Oracle Blog!

December 13, 2009

How to convert RAC Enabled binaries for Non-RAC usage

Filed under: Uncategorized — Tags: , , — Jagjeet Singh @ 7:46 am

I have been using Oracle on Virtualized Environment, hence it’s very frequent for me to build a new virtual machine to test out new features.

I had to copy Oracle 10g binaries from one of my RAC instance to a Non-RAC Server. Normal practice I follow is to copy  the Oracle binaries and relink again with “relink all” option. if required, we can attach copied oracle home with central  inventory using “./runInstaller -silent -attachHome” option.

After copying and relinking, when I tried to start my instance I got below error.

SQL*Plus: Release – Production on Sat Oct 17 16:30:46 2009

Copyright (c) 1982, 2005, Oracle. All rights reserved.

Enter user-name: / as sysdba
Connected to an idle instance.

SQL> startup
ORA-29702: error occurred in Cluster Group Service operation

SQL> ho oerr ora 29702

29702, 00000, “error occurred in Cluster Group Service operation”
// *Cause: An unexpected error occurred while performing a CGS operation.
// *Action: Verify that the LMON process is still active. Also,
// check the Oracle LMON trace files for errors.

This error message indicates that it can’t start the instance since CRS is not available. I realized this is because of RAC-Enabled binaries.

Below option can be used to check if software binaries are RAC-Enabled or not. Output as 1 indicate RAC-Enabled binaries.

[oracle@js lib]$ nm -r $ORACLE_HOME/rdbms/lib/libknlopt.a | grep -c kcsm.o

To turn off RAC

$ cd $ORACLE_HOME/rdbms/lib
$ make -f ins_rdbms.mk rac_off
# Relink Oracle
$ make -f ins_rdbms.mk ioracle

[oracle@js lib]$ make -f ins_rdbms.mk rac_off

rm -f /u01/app/oracle/product/10g/lib/libskgxp10.so
cp /u01/app/oracle/product/10g/lib//libskgxpd.so /u01/app/oracle/product/10g/lib/libskgxp10.so
rm -f /u01/app/oracle/product/10g/lib/libskgxn2.so
cp /u01/app/oracle/product/10g/lib//libskgxns.so \
/usr/bin/ar d /u01/app/oracle/product/10g/rdbms/lib/libknlopt.a kcsm.o
/usr/bin/ar cr /u01/app/oracle/product/10g/rdbms/lib/libknlopt.a /u01/app/oracle/product/10g/rdbms/lib/ksnkcs.o

[oracle@js lib]$ make -f ins_rdbms.mk ioracle
chmod 755 /u01/app/oracle/product/10g/bin
– Linking Oracle

Now it’s returning 0 which indicates it’s not RAC-Enabled binaries.

oracle@js lib]$ nm -r libknlopt.a | grep -c kcsm.o

There could be another situation where because of network problem ( or any other .. ) you are not able to start-up the CRS (this does happen !!).  Your first priority is to make database up & available for critical applications irrespective of it’s mode (RAC or Non-RAC).

This option can be used to make database up quickly. you also need to set Cluster_Database=false in parameter file.

To turn On RAC

$ cd $ORACLE_HOME/rdbms/lib
$ make -f ins_rdbms.mk rac_on
# Relink Oracle
$ make -f ins_rdbms.mk ioracle


Blog at WordPress.com.