tip@trylinux:~/blog$ cat oracle-forms-and-reports-11g-init-startup-script.md
# Oracle Forms and Reports 11g init startup script
Author: tip
Date: 2013-08-23 00:00:00
Tags: oracle

After pulling my hair out searching the web and trying to cobble together shell commands to start and stop Oracle Forms 11g, I finally started playing with nodemanager to script the startup and shutdown. Nodemanager can start and stop all components, except the opmn stuff, and it blocks execution until the service is started. This way I don't have to try to time stuff correctly using sleep commands and it just works a lot better.

Anyway, put this in a file /etc/init.d/forms and change the environment variables to match your environment.
Then run the following commands to install the script:

chmod 755 /etc/init.d/forms  
chkconfig --add /etc/init.d/forms





#!/bin/bash  
#  
# oracle Init file for starting and stopping Oracle Forms and Reports 11g  
#  
# chkconfig: 35 95 30  
# description: Oracle Forms and Reports 11g startup script





# Source function library  
. /etc/rc.d/init.d/functions





# Set Environment  
WLS_USER=weblogic  
WLS_PW=SUPERSECRET  
WLS_DOMAIN=MYDOMAIN  
ORACLE_OWNER="oracle"  
MIDDLEWARE_HOME="/opt/local/oracle/Middleware"  
DOMAIN_HOME="${MIDDLEWARE_HOME}/user_projects/domains/${WLS_DOMAIN}"  
WLS_HOME="${MIDDLEWARE_HOME}/wlserver_10.3"  
OPMN_CMD="${MIDDLEWARE_HOME}/asinst_1/bin/opmnctl"





# Define and ensure boot.peroperties.  
BOOT_PROPERTIES="username=${WLS_USER}\npassword=${WLS_PW}"  
mkdir -p ${DOMAIN_HOME}/servers/AdminServer/data/nodemanager  
mkdir -p ${DOMAIN_HOME}/servers/WLS_FORMS/data/nodemanager  
mkdir -p ${DOMAIN_HOME}/servers/WLS_REPORTS/data/nodemanager  
echo -e ${BOOT_PROPERTIES} > ${DOMAIN_HOME}/servers/AdminServer/data/nodemanager/boot.properties  
echo -e ${BOOT_PROPERTIES} > ${DOMAIN_HOME}/servers/WLS_FORMS/data/nodemanager/boot.properties  
echo -e ${BOOT_PROPERTIES} > ${DOMAIN_HOME}/servers/WLS_REPORTS/data/nodemanager/boot.properties  
chown -R oracle.oinstall ${DOMAIN_HOME}/servers/AdminServer/data/nodemanager  
chown -R oracle.oinstall ${DOMAIN_HOME}/servers/WLS_FORMS/data/nodemanager  
chown -R oracle.oinstall ${DOMAIN_HOME}/servers/WLS_REPORTS/data/nodemanager





# Define NodeManager startup script  
START_CMD=$(cat <startNodeManager(verbose='true', NodeManagerHome='${WLS_HOME}/common/nodemanager')  
nmConnect('${WLS_USER}','${WLS_PW}','localhost','5556','${WLS_DOMAIN}')  
nmStart('AdminServer')  
arg=\"Arguments=\\\\\" -Dweblogic.management.server=localhost:7001\\\\\"\"  
prps=makePropertiesObject(arg)  
nmStart('WLS_FORMS',props=prps)  
nmStart('WLS_REPORTS',props=prps)  
exit()  
EOF  
)





# Define NodeManager shutdown script  
STOP_CMD=$(cat <nmConnect('${WLS_USER}','${WLS_PW}','localhost','5556','${WLS_DOMAIN}')  
nmKill('WLS_REPORTS')  
nmKill('WLS_FORMS')  
nmKill('AdminServer')  
stopNodeManager()  
exit()  
EOF  
)





start() {  
  echo "Starting WLS:"  
  su - $ORACLE_OWNER -c "echo \"${START_CMD}\" | ${WLS_HOME}/common/bin/wlst.sh | grep --line-buffered -i 'Error\|Success' | grep -v INFO"  
  su - $ORACLE_OWNER -c "${OPMN_CMD} startall"  
  echo "OK"  
}





stop() {  
  echo "Stopping WLS:"  
  su - $ORACLE_OWNER -c "${OPMN_CMD} stopall"  
  su - $ORACLE_OWNER -c "echo \"${STOP_CMD}\" | ${WLS_HOME}/common/bin/wlst.sh | grep --line-buffered -i 'Error\|Success' | grep -v INFO"  
  echo "OK"  
}





restart() {  
  stop  
  start  
}





case "$1" in  
  start)  
    start  
  ;;  
  stop)  
    stop  
  ;;  
  restart)  
    restart  
  ;;  
  *)  
    echo $"Usage: $0 {start|stop|restart}"  
esac
EOF