feedburner

Lorem ipsum dolor sit amet,
consectetur adipisicing elit,
sed do eiusmod tempor incididunt ut labore
et dolore magna aliqua.

oracm fails on Red Hat 4

Etiquetas:

( sorry for my English, is not my first language. Sometimes is bad, sometimes is worse :P )

I've seen several people having this problem - as I had before -, here comes one explanation and a workaround


Oracle RAC 9iR2 Cluster Manager ( oracm ) installed on RedHat 4 x86_64 ( AMD64 / EM64T ). Starting oracm on first node shows only one oracm process and starting oracm on the second one dumps both oracm process on each node tracing dumps on $ORACLE_HOME/oracm/log/cm.log and the process dies.


Cause

oracm and all other oracle binaries for GNU/Linux on 9i uses the 'old kernel API' ( 2.4 series ) and now 2.6 kernels offers new improvements ( glibc, modules, etc... ) then the start up oracm script - $ORACLE_HOME/oracm/bin/ocmstart.sh - contains a verification condition to apply corrections in the execution environment to force the use of the correct libraries and avoid malfunctions on executables that only understand the old way:

$ORACLE_HOME/oracm/bin/ocmstart.sh verification:

"(...)
#
# 3. Startup
#


#check if RH3.0, then set LD_ASSUME_KERNEL for starting CM.
if [ -e /etc/redhat-release ]
then
version=`rpm -qf /etc/redhat-release --queryformat "%{VERSION}\n"`
if [ $version == 3AS -o $version == 3ES ]
then
LD_ASSUME_KERNEL=2.4.19
export LD_ASSUME_KERNEL
fi
fi
(...)
"


that's OK if we are running RedHat 3 but under RedHat 4 this condition returns false miserably :), then the LD_ASSUME_KERNEL correction is not applied and oracm crashes when trying to create new threads.


Possible Solution

You can modify the condition to return TRUE on RedHat 3 or RedHat 4 or simply, 'cause you know where are you running, force the declaration of LD_ASSUME_KERNEL=2.4.19 at the beginning of the ocmstart.sh script ( on all nodes )

"
(...)
#
# 1. Configuration
#
export LD_ASSUME_KERNEL=2.4.19
if test -z "$ORACLE_HOME"
then
echo 'ocmstart.sh: Error: environment variable ORACLE_HOME is not set'
(...)
"

Remember that you've modified this script manually and check the content after application of any patch related to Oracle Cluster Manager. Some of them could overwrite this script and the forced export LD_ASSUME_KERNEL=2.4.19 should be inserted again

After this changes you will be able to start oracm correctly on all nodes and see how each one is registered on the cluster software layer



Good explanations about LD_ASSUME_KERNEL


http://developer.novell.com/wiki/index.php/LD_ASSUME_KERNEL
http://people.redhat.com/drepper/assumekernel.html

0 comentarios:

Publicar un comentario