Thursday, September 6, 2012

OBIEE Start & Stop Script in Linux

Start/Stop OBIEE 11g Services in Linux using script

Hi,

Till few days back I had been struggling on obiee 11g services start/stop on Linux as if there is any development work and obiee has to be restarted then I have to stop the weblogic, bi server and bi presentation services in proper sequence and same applies for starting. I was looking some automated way, hence running a single stop command can stop the all bi services and a single start would do for all bi services to start.

I have found an interesting script on an Oracle Forum and its really very nicely written, using the below script we can start/stop/check status of bi services. I put this script file in linux runlevel, hence every time server reboots, it stops and starts the bi services automatically. And if required, we can manually stop and start the bi services with a single command.

Below is the script:

#!/bin/bash
# File:    /etc/init.d/obiee
# Purpose: Start and stop Oracle Business Intelligence 11g components.
#
# chkconfig: 2345 99 10
# description: Manage OBIEE service.
#
# These values must be adapted to your environment.
ORACLE_OWNR=obi                  # Local Unix user running OBIEE
ORACLE_FMW=/MiddlewareHome        # Deployment root directory
                                   
BIEE_USER=weblogic                 # BIEE administrator name
BIEE_PASSWD=<put weblogic's password>               # BIEE administrator password               
BIEE_DOMAIN=bifoundation_domain           # Domain name
BIEE_INSTANCE=instance1            # Instance name
BIEE_SERVER=bi_server1               # Server name
BIEE_MANAGER_URL=x.x.x.x:port#     # Admin server URL (hostname:port)    
# These should require no change.
WL_PATH=$ORACLE_FMW/wlserver_10.3/server/bin
BIEE_PATH=$ORACLE_FMW/user_projects/domains/$BIEE_DOMAIN/bin
ORACLE_INSTANCE=$ORACLE_FMW/instances/$BIEE_INSTANCE
export ORACLE_INSTANCE
START_LOG=/var/log/obiee-start.log
STOP_LOG=/var/log/obiee-stop.log
SUBSYS=obiee
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 $BIEE_USER $BIEE_PASSWD"
    echo "********************************************************************************"
    echo "Stopping Node Manager on $(date)"
    echo "********************************************************************************"
    pkill -TERM -u $ORACLE_OWNR -f "weblogic\\.NodeManager"
    
    echo "********************************************************************************"
    echo "Stopping Admin Server on $(date)"
    echo "********************************************************************************"
    su $ORACLE_OWNR -c "$BIEE_PATH/stopWebLogic.sh"
    
    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 &
        touch /var/lock/subsys/$SUBSYS
    ;;
    stop)
        echo "********************************************************************************"
        echo "Stopping Oracle Business Intelligence on $(date)"
        echo "Logs are sent to $STOP_LOG"
        echo "********************************************************************************"
        stop &> $STOP_LOG
        rm -f /var/lock/subsys/$SUBSYS
    ;;
    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



Deployment Steps:

In order for the procedure to go through smoothly, you need to provide the admin credentials (username/password, defaulting to weblogic/weblogic) in three different places:

1. In configuration file <FMW_HOME>/user_projects/domains/<domain name>/servers/AdminServer/security/boot.properties for the administration server;

If boot.properties file is not available then create a new one with the below entries:

username=[your user, usually weblogic]
pasword=[password for account above]


The next time you start weblogic, it will encrypt the file.

2. In script <FMW_HOME>/user_projects/domains/<domain name>/bin/startManagedWebLogic.sh (variables WLS_USER and WLS_PW) for the managed server;

3. In the startup script itself (variables BIEE_USER and BIEE_PASSWD) for shutting down the managed server.

Complete logs are available in /var/log/obiee-start (-stop).log files.

To Start OBIEE:
 /etc/init.d/./obiee start 

To Stop OBIEE:
 /etc/init.d/./obiee stop

To Check the Status of OBIEE:
 /etc/init.d/./obiee status

I think, it will really help the readers of this blog and at the same time I would like to thank to Chris (On Oracle Forum) for sharing such a nice script.

Bye,
Saurabh

No comments:

Post a Comment