This is the mail archive of the
cluster-cvs@sourceware.org
mailing list for the cluster.
cluster: RHEL5 - rgmanager: Fix up multiple Oracle instance handling
- From: Lon Hohberger <lon at fedoraproject dot org>
- To: cluster-cvs-relay at redhat dot com
- Date: Thu, 21 May 2009 14:28:18 +0000 (UTC)
- Subject: cluster: RHEL5 - rgmanager: Fix up multiple Oracle instance handling
Gitweb: http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=1e9e9ee1f1ba6449f1de3c0261fbfd4aebc03cd3
Commit: 1e9e9ee1f1ba6449f1de3c0261fbfd4aebc03cd3
Parent: 94baaa8813089f1496b8a2564ec1874ea97c1f60
Author: Lon Hohberger <lhh@redhat.com>
AuthorDate: Thu May 21 09:37:15 2009 -0400
Committer: Lon Hohberger <lhh@redhat.com>
CommitterDate: Thu May 21 10:27:58 2009 -0400
rgmanager: Fix up multiple Oracle instance handling
Note that you can only have one instance start/manage
Enterprise Manager. You must set all other instances
to "base" type (see metadata).
Resolvs: 471226
Signed-off-by: Lon Hohberger <lhh@redhat.com>
---
rgmanager/src/resources/oracledb.sh | 75 +++++++++++++++++++++++-----------
1 files changed, 51 insertions(+), 24 deletions(-)
diff --git a/rgmanager/src/resources/oracledb.sh b/rgmanager/src/resources/oracledb.sh
index 86f4b74..5c7b15c 100755
--- a/rgmanager/src/resources/oracledb.sh
+++ b/rgmanager/src/resources/oracledb.sh
@@ -1,6 +1,6 @@
#!/bin/bash
#
-# Copyright 2003-2004, 2006-2007 Red Hat, Inc.
+# Copyright 2003-2004, 2006-2008 Red Hat, Inc.
#
# Author(s):
# Hardy Merrill <hmerrill at redhat.com>
@@ -51,6 +51,7 @@ declare SCRIPTDIR="`dirname $0`"
[ -n "$OCF_RESKEY_user" ] && ORACLE_USER=$OCF_RESKEY_user
[ -n "$OCF_RESKEY_home" ] && ORACLE_HOME=$OCF_RESKEY_home
[ -n "$OCF_RESKEY_name" ] && ORACLE_SID=$OCF_RESKEY_name
+[ -n "$OCF_RESKEY_listener_name" ] && ORACLE_LISTENER=$OCF_RESKEY_listener_name
[ -n "$OCF_RESKEY_lockfile" ] && LOCKFILE=$OCF_RESKEY_lockfile
[ -n "$OCF_RESKEY_type" ] && ORACLE_TYPE=$OCF_RESKEY_type
[ -n "$OCF_RESKEY_vhost" ] && ORACLE_HOSTNAME=$OCF_RESKEY_vhost
@@ -90,7 +91,7 @@ declare SCRIPTDIR="`dirname $0`"
#
# 5. Type of Oracle Database. Currently supported: 10g 10g-iAS(untested!)
#
-[ -n "$ORACLE_TYPE" ] || ORACLE_TYPE=10g
+[ -n "$ORACLE_TYPE" ] || ORACLE_TYPE="base-em"
#
# 6. Oracle virtual hostname. This is the hostname you gave Oracle during
@@ -150,7 +151,21 @@ meta_data()
<content type="string"/>
</parameter>
- <parameter name="user" unique="1" required="1">
+ <parameter name="listener_name" unique="1">
+ <longdesc lang="en">
+ Oracle Listener Instance Name. If you have multiple
+ instances of Oracle running, it may be necessary to
+ have multiple listeners on the same machine with
+ different names.
+ </longdesc>
+ <shortdesc lang="en">
+ Oracle Listener Instance Name
+ </shortdesc>
+ <content type="string"/>
+ </parameter>
+
+
+ <parameter name="user" required="1">
<longdesc lang="en">
Oracle user name. This is the user name of the Oracle
user which the Oracle AS instance runs as.
@@ -161,7 +176,7 @@ meta_data()
<content type="string"/>
</parameter>
- <parameter name="home" unique="1" required="1">
+ <parameter name="home" required="1">
<longdesc lang="en">
This is the Oracle (application, not user) home directory.
This is configured when you install Oracle.
@@ -172,11 +187,13 @@ meta_data()
<content type="string"/>
</parameter>
- <parameter name="type" required="1">
+ <parameter name="type" required="0">
<longdesc lang="en">
- This is the Oracle installation type.
- Only "10g" and "10g-ias" are supported, and 10g-ias is
- untested.
+ This is the Oracle installation type:
+ base - Database Instance and Listener only
+ base-em (or 10g) - Database, Listener, Enterprise Manager,
+ and iSQL*Plus
+ ias (or 10g-ias) - Internet Application Server (Infrastructure)
</longdesc>
<shortdesc lang="en">
Oracle Installation Type
@@ -209,8 +226,8 @@ meta_data()
<action name="status" timeout="10"/>
<action name="monitor" timeout="10"/>
- <action name="status" depth="10" timeout="30" interval="5m"/>
- <action name="monitor" depth="10" timeout="30" interval="5m"/>
+ <action name="status" depth="10" timeout="30" interval="30"/>
+ <action name="monitor" depth="10" timeout="30" interval="30"/>
<action name="meta-data" timeout="5"/>
<action name="verify-all" timeout="5"/>
@@ -285,7 +302,7 @@ start_db()
grep -q "failure" $logfile
if [ $? -eq 0 ]; then
rm -f $tmpfile
- echo "ORACLE_SID Incorrectly set?"
+ echo "ORACLE_SID Incorrectly set?"
echo "See $logfile for more information."
return 1
fi
@@ -347,7 +364,8 @@ force_cleanup()
declare pids
declare pid
- pids=`ps ax | grep $ORACLE_HOME | grep -v grep | awk '{print $1}'`
+ # Patch from Shane Bradley to fix 471266
+ pids=`ps ax | grep $ORACLE_HOME | grep "ora_.*_${ORACLE_SID}" | grep -v grep | awk '{print $1}'`
initlog -n $SCRIPT -s "<err> Not all Oracle processes exited cleanly, killing"
@@ -467,8 +485,9 @@ get_lsnr_status()
#
for (( i=$RESTART_RETRIES ; i; i-- )) ; do
- action "Restarting Oracle listener:" lsnrctl start
- lsnrctl status >& /dev/null
+ action "Restarting Oracle listener:" lsnrctl start \
+ $ORACLE_LISTENER
+ lsnrctl status $ORACLE_LISTENER >& /dev/null
if [ $? == 0 ] ; then
break # Listener was (re)started and is running fine
fi
@@ -670,7 +689,16 @@ validation_checks()
#
# If we don't know the type, we're done
#
- [ "$ORACLE_TYPE" = "10g" ] || [ "$ORACLE_TYPE" = "10g-ias" ] || oops ORACLE_TYPE
+ if [ "$ORACLE_TYPE" = "base" ]; then
+ # Other names for base
+ ORACLE_TYPE="base"
+ elif [ "$ORACLE_TYPE" = "10g" ] || [ "$ORACLE_TYPE" = "base-em" ]; then
+ ORACLE_TYPE="base-em"
+ elif [ "$ORACLE_TYPE" = "10g-ias" ] || [ "$ORACLE_TYPE" = "ias" ]; then
+ ORACLE_TYPE="ias"
+ else
+ oops ORACLE_TYPE
+ fi
#
# If the hostname is zero-length, fix it
@@ -712,12 +740,12 @@ validation_checks()
start_oracle()
{
faction "Starting Oracle Database:" start_db || return 1
- action "Starting Oracle Listener:" lsnrctl start || return 1
+ action "Starting Oracle Listener:" lsnrctl start $ORACLE_LISTENER || return 1
- if [ "$ORACLE_TYPE" = "10g" ]; then
+ if [ "$ORACLE_TYPE" = "base-em" ]; then
action "Starting iSQL*Plus:" isqlplusctl start || return 1
action "Starting Oracle EM DB Console:" emctl start dbconsole || return 1
- elif [ "$ORACLE_TYPE" = "10g-ias" ]; then
+ elif [ "$ORACLE_TYPE" = "ias" ]; then
action "Starting Oracle EM:" emctl start em || return 1
action "Starting iAS Infrastructure:" opmnctl startall || return 1
fi
@@ -740,16 +768,16 @@ stop_oracle()
return 0
fi
- if [ "$ORACLE_TYPE" = "10g" ]; then
+ if [ "$ORACLE_TYPE" = "base-em" ]; then
action "Stopping Oracle EM DB Console:" emctl stop dbconsole || return 1
action "Stopping iSQL*Plus:" isqlplusctl stop || return 1
- elif [ "$ORACLE_TYPE" = "10g-ias" ]; then
+ elif [ "$ORACLE_TYPE" = "ias" ]; then
action "Stopping iAS Infrastructure:" opmnctl stopall || return 1
action "Stopping Oracle EM:" emctl stop em || return 1
fi
faction "Stopping Oracle Database:" stop_db || return 1
- action "Stopping Oracle Listener:" lsnrctl stop
+ action "Stopping Oracle Listener:" lsnrctl stop $ORACLE_LISTENER
faction "Waiting for all Oracle processes to exit:" exit_idle
if [ $? -ne 0 ]; then
@@ -785,7 +813,6 @@ status_oracle()
{
declare -i subsys_lock=1
declare -i last
- declare -i depth=$1
#
# Check for lock file. Crude and rudimentary, but it works
@@ -804,12 +831,12 @@ status_oracle()
update_status $? $last
last=$?
- if [ "$ORACLE_TYPE" = "10g" ]; then
+ if [ "$ORACLE_TYPE" = "base-em" ]; then
# XXX Add isqlplus status check?!
emctl status dbconsole 2>&1 | grep "is running"
update_status $? $last
last=$?
- elif [ "$ORACLE_TYPE" = "10g-ias" ]; then
+ elif [ "$ORACLE_TYPE" = "ias" ]; then
# Check & report opmn / opmn-managed process status
get_opmn_status $subsys_lock
update_status $? $last