################start_tt.sh#######################
#! /bin/sh
#擷取tt的狀态,
# 若為standby,則call ttrepstateset('ACTIVE'),exit 0,表示正常
# 若為active,exit 0,表示正常
# 若未idle,exit 1,表示異常,res啟動失敗,切換res至對端節點
# mod by jzh at June 18,2012
FLAG_DIR="/etc/hacmp"
TT_HOME="/tt/TimesTen/tt60"
TT_USER="tt"
TT_DSNAME="ocs"
#check tt(daemon & ram) status
tt_status=0
tt_status=`su $TT_USER -c "echo 'select 1+1 from dual;'|$TT_HOME/bin/ttisql $TT_DSNAME 2>&1"|grep "< 2 >"|wc -l`
if [ $tt_status -eq 0 ];then #tt status abnormal
#check and start daemon
ds_status=`su $TT_USER -c "$TT_HOME/bin/ttstatus 2>&1" |grep "Could not connect to the TimesTen daemon"|wc -l`
if [ $ds_status -eq 1 ];then #daemon Abnormal
su $TT_USER -c "$TT_HOME/bin/ttdaemonadmin -start 2>&1" #start daemon
fi;
fi;
#check and start ram
ds_status=1
ram_status=0
ds_status=`su $TT_USER -c "$TT_HOME/bin/ttstatus 2>&1" |grep "Could not connect to the TimesTen daemon"|wc -l`
ram_status=`su $TT_USER -c "echo 'select 1+1 from dual;'|$TT_HOME/bin/ttisql $TT_DSNAME 2>&1"|grep "< 2 >"|wc -l`
if [ $ds_status -eq 0 ] && [ $ram_status -eq 0 ];then
su $TT_USER -c "$TT_HOME/bin/ttadmin -rampolicy always $TT_DSNAME 2>&1" #ram load
fi;
#check and start rep
ram_status=0
rep_status=0
ram_status=`su $TT_USER -c "echo 'select 1+1 from dual;'|$TT_HOME/bin/ttisql $TT_DSNAME 2>&1"|grep "< 2 >"|wc -l`
rep_status=`su $TT_USER -c "$TT_HOME/bin/ttstatus" |grep "Replication agent is running"|wc -l`
if [ $ram_status -eq 1 ] && [ $rep_status -eq 0 ];then
su $TT_USER -c "$TT_HOME/bin/ttadmin -reppolicy always $TT_DSNAME 2>&1" #rep start
fi;
#check cserver
if [ `ps -ef|grep 'ttcserver -verbose' |grep -v 'grep'|wc -l` -eq 0 ];then
su $TT_USER -c "$TT_HOME/bin/ttdaemonadmin -startserver 2>&1" #start cserver
fi;
tt_status=0
rep_status=0
tt_status=`su $TT_USER -c "echo 'select 1+1 from dual;'|$TT_HOME/bin/ttisql $TT_DSNAME 2>&1"|grep "< 2 >"|wc -l`
rep_status=`su $TT_USER -c "$TT_HOME/bin/ttstatus" |grep "Replication agent is running"|wc -l`
if [ $tt_status -eq 1 ] && [ $rep_status -eq 1 ];then #All status normal
#check rep state
rep_state=`su $TT_USER -c "echo 'call ttrepstateget;'|$TT_HOME/bin/ttisql $TT_DSNAME 2>&1"|grep "^<"|awk '{print $2}'`
if [ -f "$FLAG_DIR/tt_rep_state.lock" ] && [ $rep_state = 'IDLE' ];then
bef_rep_state=`cat $FLAG_DIR/tt_rep_state.lock|cut -d ',' -f 2`
cat /dev/null > $FLAG_DIR/tt_rep_state.lock
if [ $bef_rep_state = 'ACTIVE' ];then
su $TT_USER -c "echo 'call ttrepstateset( \047active\047 );'|$TT_HOME/bin/ttisql $TT_DSNAME 2>&1"
fi;
fi;
rep_state=`su $TT_USER -c "echo 'call ttrepstateget;'|$TT_HOME/bin/ttisql $TT_DSNAME 2>&1"|grep "^<"|awk '{print $2}'`
if [ $rep_state = 'ACTIVE' ];then
exit 0;
elif [ $rep_state = 'STANDBY' ];then
su $TT_USER -c "echo 'call ttrepstateset( \047active\047 );'|$TT_HOME/bin/ttisql $TT_DSNAME 2>&1";
exit 0;
elif [ $rep_state = 'IDLE' ];then
exit 1;
fi;
else
exit 1; #abnormal-exit
fi;
################stop_tt.sh#######################
#! /bin/sh
#停止應用、斷開連接配接
#執行,逾時後強制切換
#call ttreppolicy('manual');call ttrepstop;
#call ttrepdeactivate;
#call ttrepolicy('always')
FLAG_DIR="/etc/hacmp"
TT_HOME="/tt/TimesTen/tt60"
TT_USER="tt"
TT_DSNAME="ocs"
TT_REP_WAIT=60 ##seconds
rep_state=`su $TT_USER -c "echo 'call ttrepstateget;'|$TT_HOME/bin/ttisql $TT_DSNAME 2>&1"|grep "^<"|awk '{print $2}'`
if [ $rep_state = 'ACTIVE' ];then
kill -9 `su $TT_USER -c "echo 'call ttDataStoreStatus;'|$TT_HOME/bin/ttisql $TT_DSNAME 2>&1|grep 'application'|cut -d ',' -f 2"`
su $TT_USER -c "$TT_HOME/bin/ttdaemonadmin -stopserver 2>&1" #stop cserver daemon
while [ $TT_REP_WAIT -gt 0 ]
do
if [ `su $TT_USER -c "echo 'call ttrepsubscriberwait(,,,,5);'|$TT_HOME/bin/ttisql $TT_DSNAME 2>&1"|grep '< 00 >'|wc -l` -eq 1 ];then
su $TT_USER -c "$TT_HOME/bin/ttadmin -reppolicy manual $TT_DSNAME 2>&1"
su $TT_USER -c "echo 'call ttrepstop;'|$TT_HOME/bin/ttisql $TT_DSNAME 2>&1"
su $TT_USER -c "echo 'call ttrepdeactivate;'|$TT_HOME/bin/ttisql $TT_DSNAME 2>&1"
su $TT_USER -c "$TT_HOME/bin/ttadmin -reppolicy always $TT_DSNAME 2>&1"
echo `/usr/bin/date '+%Y%m%d'`','$rep_state >> $FLAG_DIR/tt_rep_state.lock
TT_REP_WAIT=-100
else
TT_REP_WAIT=$(expr $TT_REP_WAIT - 5);
fi;
done;
if [ $TT_REP_WAIT -eq -100 ];then
exit 0;
else
exit 1;
fi;
fi;
################start_tt_rep.sh#######################
#! /bin/sh
#擷取tt的狀态,
# 若為standby,則call ttrepstateset('ACTIVE'),exit 0,表示正常
# 若為active,exit 0,表示正常
# 若未idle,exit 1,表示異常,res啟動失敗,切換res至對端節點
FLAG_DIR="/etc/hacmp"
TT_HOME="/tt/TimesTen/tt70"
TT_USER="tt"
TT_DSNAME="ocs"
#check tt(daemon & ram) status
tt_status=0
tt_status=`su $TT_USER -c "echo 'select 1+1 from dual;'|$TT_HOME/bin/ttisql $TT_DSNAME 2>&1"|grep "< 2 >"|wc -l`
if [ $tt_status -eq 0 ];then #tt status abnormal
#check and start daemon
ds_status=`su $TT_USER -c "$TT_HOME/bin/ttstatus 2>&1" |grep "Could not connect to the TimesTen daemon"|wc -l`
if [ $ds_status -eq 1 ];then #daemon Abnormal
su $TT_USER -c "$TT_HOME/bin/ttdaemonadmin -start 2>&1" #start daemon
fi;
#check and start ram
ds_status=1
ram_status=0
ds_status=`su $TT_USER -c "$TT_HOME/bin/ttstatus 2>&1" |grep "Could not connect to the TimesTen daemon"|wc -l`
ram_status=`su $TT_USER -c "echo 'select 1+1 from dual;'|$TT_HOME/bin/ttisql $TT_DSNAME 2>&1"|grep "< 2 >"|wc -l`
if [ $ds_status -eq 0 ] && [ $ram_status -eq 0 ];then
su $TT_USER -c "$TT_HOME/bin/ttadmin -rampolicy always $TT_DSNAME 2>&1" #ram load
fi;
#check and start rep
ram_status=0
rep_status=0
ram_status=`su $TT_USER -c "echo 'select 1+1 from dual;'|$TT_HOME/bin/ttisql $TT_DSNAME 2>&1"|grep "< 2 >"|wc -l`
rep_status=`su $TT_USER -c "$TT_HOME/bin/ttstatus" |grep "Replication agent is running"|wc -l`
if [ $ram_status -eq 1 ] && [ $rep_status -eq 0 ];then
su $TT_USER -c "$TT_HOME/bin/ttadmin -reppolicy always $TT_DSNAME 2>&1" #rep start
fi;
fi;
tt_status=0
rep_status=0
tt_status=`su $TT_USER -c "echo 'select 1+1 from dual;'|$TT_HOME/bin/ttisql $TT_DSNAME 2>&1"|grep "< 2 >"|wc -l`
rep_status=`su $TT_USER -c "$TT_HOME/bin/ttstatus" |grep "Replication agent is running"|wc -l`
if [ $tt_status -eq 1 ] && [ $rep_status -eq 1 ];then #All status normal
#check rep state
rep_state=`su $TT_USER -c "echo 'call ttrepstateget;'|$TT_HOME/bin/ttisql $TT_DSNAME 2>&1"|grep "^<"|awk '{print $2}'`
if [ -f "$FLAG_DIR/tt_rep_state.lock" ] && [ $rep_state = 'IDLE' ];then
bef_rep_state=`cat $FLAG_DIR/tt_rep_state.lock|cut -d ',' -f 2`
cat /dev/null > $FLAG_DIR/tt_rep_state.lock;
su $TT_USER -c "echo 'call ttrepstateset(\'$bef_rep_state\');'|$TT_HOME/bin/ttisql $TT_DSNAME 2>&1";
fi;
rep_state=`su $TT_USER -c "echo 'call ttrepstateget;'|$TT_HOME/bin/ttisql $TT_DSNAME 2>&1"|grep "^<"|awk '{print $2}'`
if [ $rep_state = 'ACTIVE' ];then
exit 0;
elif [ $rep_state = 'STANDBY' ];then
su $TT_USER -c "echo 'call ttrepstateset(\'ACTIVE\');'|$TT_HOME/bin/ttisql $TT_DSNAME 2>&1";
exit 0;
elif [ $rep_state = 'IDLE' ];then
exit 1;
fi;
else
exit 1; #abnormal-exit
fi;
################stop_tt_rep.sh#######################
#! /bin/sh
#停止應用、斷開連接配接
#執行,逾時後強制切換
#call ttreppolicy('manual');call ttrepstop;
#call ttrepdeactivate;
#call ttrepolicy('always')
FLAG_DIR="/etc/hacmp"
TT_HOME="/tt/TimesTen/tt70"
TT_USER="tt"
TT_DSNAME="ocs"
rep_state=`su $TT_USER -c "echo 'call ttrepstateget;'|$TT_HOME/bin/ttisql $TT_DSNAME 2>&1"|grep "^<"|awk '{print $2}'`
su $TT_USER -c "$TT_HOME/bin/ttdaemonadmin -stopserver 2>&1" #stop cserver daemon
su $TT_USER -c "echo 'call ttrepsubscriberwait(,,,,-1);'|$TT_HOME/bin/ttisql $TT_DSNAME 2>&1"
su $TT_USER -c "$TT_HOME/bin/ttadmin -reppolicy manual $TT_DSNAME 2>&1"
su $TT_USER -c "echo 'call ttrepstop;'|$TT_HOME/bin/ttisql $TT_DSNAME 2>&1"
su $TT_USER -c "echo 'call ttrepdeactivate;'|$TT_HOME/bin/ttisql $TT_DSNAME 2>&1"
su $TT_USER -c "$TT_HOME/bin/ttadmin -reppolicy always $TT_DSNAME 2>&1"
echo `/usr/bin/date '+%Y%m%d'`','$rep_state >> $FLAG_DIR/tt_rep_state.lock