Oracle Obiee 11g now is a more complex system taking longer time for startup and shutdown compared to 10g. It is better for our dev team to come up with a script running on background to manipulate the services. In order to make it smoothly work in the UNIX system(Solaris) , here are a few things you might consider to implement on UNIX environment.
Step 1:Compose the startup and shutdown script. and set the path to the your .profile in order that you could run your script from anywhere.
The code snippets below is originally from an oracle obiee 11g guru’s blog that I found very useful. I tweaked a little bit for our DEV environment.
#!/bin/bash
#
# Purpose: Start and stop Oracle Business Intelligence 11g components.
#
# description: Manage OBIEE service.
## These values must be adapted to your environment.ORACLE_OWNR=oracle
ORACLE_BASE=/oracle # Local Unix user running OBIEE
ORACLE_FMW=/oracle/middleware # Deployment root directory
export WLS_USER=weblogic # BIEE administrator name
export WLS_PW=weblogic1
BIEE_DOMAIN=bifoundation_domain # Domain name
BIEE_INSTANCE=instance1 # Instance name
BIEE_SERVER=bi_server1 # Server name
BIEE_MANAGER_URL=:7001 # Admin server URL (hostname:port)
# These should require no change.
WL_PATH=$ORACLE_FMW/wlserver_10.3/server/bin
BIEE_PATH=$ORACLE_BASE/$BIEE_DOMAIN/bin
ORACLE_INSTANCE=$ORACLE_FMW/instances/$BIEE_INSTANCE
export ORACLE_INSTANCE
START_LOG=/log/obiee-start.log #Put the log info under the dir where you could easily check on
STOP_LOG=/log/obiee-stop.log
start() {
echo "********************************************************************************"
echo "Starting Admin Server on $(date)"
echo "********************************************************************************"
su $ORACLE_OWNR -c "$BIEE_PATH/startWebLogic.sh" &
wait_for "Server started in RUNNING mode"
echo "********************************************************************************"
echo "Starting Node Manager on $(date)"
echo "********************************************************************************"
su $ORACLE_OWNR -c "$WL_PATH/startNodeManager.sh" &
wait_for "socket listener started on port"
echo "********************************************************************************"
echo "Starting Managed Server $BIEE_SERVER on $(date)"
echo "********************************************************************************"
su $ORACLE_OWNR -c "$BIEE_PATH/startManagedWebLogic.sh $BIEE_SERVER http://$BIEE_MANAGER_URL" &
wait_for "Server started in RUNNING mode"
echo "********************************************************************************"
echo "Starting BI components on $(date)"
echo "********************************************************************************"
su $ORACLE_OWNR -c "$ORACLE_INSTANCE/bin/opmnctl startall"
echo "********************************************************************************"
echo "OBIEE start sequence completed on $(date)"
echo "********************************************************************************"
}
stop() {
echo "********************************************************************************"
echo "Stopping BI components on $(date)"
echo "********************************************************************************"
su $ORACLE_OWNR -c "$ORACLE_INSTANCE/bin/opmnctl stopall"
echo "********************************************************************************"
echo "Stopping Managed Server $BIEE_SERVER on $(date)"
echo "********************************************************************************"
su $ORACLE_OWNR -c "$BIEE_PATH/stopManagedWebLogic.sh $BIEE_SERVER t3://$BIEE_MANAGER_URL $WLS_USER $WLS_PW"
echo "********************************************************************************"
echo "Stopping Node Manager on $(date)"
echo "********************************************************************************"
pkill -TERM -u $ORACLE_OWNR -f "weblogic\\.NodeManager"
pkill -TERM -u $ORACLE_OWNR -f "java -client -Xms32m -Xmx200m -XX"
echo "********************************************************************************"
echo "Stopping Admin Server on $(date)"
echo "********************************************************************************"
su $ORACLE_OWNR -c "$BIEE_PATH/stopWebLogic.sh $WLS_USER $WLS_PW"
echo "********************************************************************************"
echo "OBIEE stop sequence completed on $(date)"
echo "********************************************************************************"
}
wait_for() {
res=0
while [[ ! $res -gt 0 ]]
do
res=$(tail -5 "$START_LOG" | fgrep -c "$1")
sleep 5
done
}
case "$1" in
start)
echo "********************************************************************************"
echo "Starting Oracle Business Intelligence on $(date)"
echo "Logs are sent to $START_LOG"
echo "********************************************************************************"
start &> $START_LOG
;;
stop)
echo "********************************************************************************"
echo "Stopping Oracle Business Intelligence on $(date)"
echo "Logs are sent to $STOP_LOG"
echo "********************************************************************************"
stop &> $STOP_LOG
;;
status)
echo "********************************************************************************"
echo "Oracle BIEE components status...."
echo "********************************************************************************"
su $ORACLE_OWNR -c "$ORACLE_INSTANCE/bin/opmnctl status"
;;
restart)
$0 stop
$0 start
;;
*)
echo "Usage: $(basename $0) start|stop|restart|status"
exit 1
esac
exit 0
Step 2. We are using the script to pass in the two parameters: WLS_USER and WLS_PW. Otherwise you might have to input the value during the startup. You also need to modify startManagedWebLogic.sh under dir: BIEE_PATH. Comment out the following lines in the red box to prevent the original script from replacing the two key values.

Step 3. Now you could be able to use the script.
Appendix: Kill Processes Running On a Particular Port if you don’t have lsof on your UNIX box. The following example shows that if you want to find the current process id that is running on port 9556.
$for x in `ps -ef | sed 1d | awk '{print $2}'`
> do
> echo $x
> pfiles $x 2>/dev/null | grep "port: 9556"
> done
The results looks like below:
...
4193
5054
5055
4206
4200
5225
4620
sockname: AF_INET 0.0.0.0 port: 9556
sockname: AF_INET 0.0.0.0 port: 9556
5061
7550
...
So now you get 4620 as the process id and you could do: ps -ef | grep 4620 to check the process details.