diff -r 854c65db6e06 resources/OCF/oralsnr
--- a/resources/OCF/oralsnr	Fri Mar 07 18:40:31 2008 +0100
+++ b/resources/OCF/oralsnr	Sat Mar 08 02:53:57 2008 +0900
@@ -25,6 +25,7 @@
 #	OCF_RESKEY_home (optional; else read it from /etc/oratab)
 #	OCF_RESKEY_user (optional; user to run the listener)
 #	OCF_RESKEY_listener (optional; defaults to LISTENER)
+#	OCF_RESKEY_restart_once (optional; deafult to "false")
 #
 # Initialization:
 
@@ -102,6 +103,14 @@ Defaults to LISTENER.
 <content type="string" default="" />
 </parameter>
 
+<parameter name="restart_once" unique="0">
+<longdesc lang="en">
+Automatic restart parameter at the time of the monitor error of Listener.
+</longdesc>
+<shortdesc lang="en">restart_once</shortdesc>
+<content type="boolean" default="false" />
+</parameter>
+
 </parameters>
 
 <actions>
@@ -169,7 +178,7 @@ setoraenv() {
 	LD_LIBRARY_PATH=$ORACLE_HOME/lib
 	LIBPATH=$ORACLE_HOME/lib
 	TNS_ADMIN=$ORACLE_HOME/network/admin
-	pATH=$ORACLE_HOME/bin:$ORACLE_HOME/dbs:$PATH
+	PATH=$ORACLE_HOME/bin:$ORACLE_HOME/dbs:$PATH
 	export ORACLE_SID ORACLE_HOME ORACLE_OWNER TNS_ADMIN
 	export LD_LIBRARY_PATH LIBPATH
 }
@@ -181,7 +190,7 @@ runasdba() {
 	if [ "$US" = "$ORACLE_OWNER" ]; then
 		$SH
 	else
-		su $ORACLE_OWNER
+		su - $ORACLE_OWNER
 	fi
 }
 
@@ -268,10 +277,19 @@ oralsnr_monitor() {
 		: good
 		#ocf_log info "Listener $listener running"
 		return $OCF_SUCCESS
-    else
+    	else
+        	if [ "${OCF_RESKEY_CRM_meta_interval:-0}" -ne "0" -a "${restart_once}" = "true" ]; then
+            		ocf_log info "Listener $listener not running, restart only monitor..."
+            		oralsnr_start
+            		if oralsnr_status && tnsping
+            		then
+                		: good
+                		return $OCF_SUCCESS
+            		fi
+        	fi
 		ocf_log info "Listener $listener not running"
 		return $OCF_NOT_RUNNING
-    fi
+    	fi
 }
 
 #
@@ -335,6 +353,7 @@ then
   ocf_log err "$0 must be run as root or $ORACLE_OWNER"
   exit $OCF_ERR_PERM
 fi
+restart_once=${OCF_RESKEY_restart_once:-"false"}
 
 # What kind of method was invoked?
 case "$1" in
@@ -368,3 +387,5 @@ esac
 
 #
 # vim:tabstop=4:shiftwidth=4:textwidth=0:wrapmargin=0
+
+
