oracle ha脚本,HA脚本

act_db.ksh

#!/bin/ksh

#Copyright (c) 2010, Oracle. All rights reserved.

#

#    NAME

#      act_db.ksh

#

#    DESCRIPTION

#      This shell script is the action script for start / stop / check

#      the Oracle Instance in a cold failover configuration.

#

#      Place this file in /crs/public/

#

#    MODIFIED   (MM/DD/YY)

#    swong      09/29/10 - Creation

#    swong      11/09/10 - Modification

init_env () {

export ORACLE_SID=s112032

export ORACLE_HOME=`awk -F: '{if ($1 == "'$ORACLE_SID'") {print $2; exit}}' /etc/sf/shell/db_info.txt`

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib

export SQLPLUS=$ORACLE_HOME/bin/sqlplus

}

check_db () {

process="ora_pmon_$ORACLE_SID"

check_proc=`ps -ae -o args | grep -w "ora_pmon_$ORACLE_SID" | grep -v grep | head -n 1`

if [ "$process" == "$check_proc" ]; then

DB_STATUS=`$SQLPLUS -S / as sysdba <

set echo off

set feedback off

set heading off

set pagesize 0

set linesize 300

whenever sqlerror exit failure

select status from v\\$instance;

exit

EOF`

if [ $? -ne 0 ]; then

echo "   [ERROR] Check the database $ORACLE_SID failed!"

return 1

else

if [ $DB_STATUS != 'MOUNTED' ]; then

echo "   [ERROR] The database $ORACLE_SID is $DB_STATUS but NOT mounted!"

return 1

else

return 0

fi

fi

else

echo "   [ERROR] The database $ORACLE_SID background process does NOT exist!"

return 1

fi

}

init_env

case $1 in

'start')

$SQLPLUS -S / as sysdba <

whenever sqlerror exit failure

startup nomount force

alter database mount standby database;

alter database recover managed standby database using current logfile disconnect from session;

exit

EOF

if [ $? -ne 0 ]; then

echo "   [ERROR] Fail to start the database $ORACLE_SID!"

exit 1

else

exit 0

fi

;;

'stop')

$SQLPLUS -S / as sysdba <

shutdown immediate

exit

EOF

if [ $? -ne 0 ]; then

echo "   [ERROR] Fail to shutdown the database $ORACLE_SID!"

exit 1

else

exit 0

fi

;;

'check')

check_db

if [ $? -ne 0 ]; then

exit 1

else

exit 0

fi

;;

'clean')

ps -aef | grep -w "ora_pmon_$ORACLE_SID" | grep -v grep | head -n 1 | awk '{print $2}'| xargs -i kill -9 {}

exit 0

;;

*)

echo "Usage $0 {start|stop|check|clean}"

exit 1

;;

esac

[oracle@cnsz22pl0076:/data01/tmp/llc]$cat act_db.ksh_pri

#!/bin/ksh

#Copyright (c) 2010, Oracle. All rights reserved.

#

#    NAME

#      act_db.ksh

#

#    DESCRIPTION

#      This shell script is the action script for start / stop / check

#      the Oracle Instance in a cold failover configuration.

#

#      Place this file in /crs/public/

#

#    MODIFIED   (MM/DD/YY)

#    swong      09/29/10 - Creation

#    swong      11/09/10 - Modification

init_env () {

export ORACLE_SID=s112032

export ORACLE_HOME=`awk -F: '{if ($1 == "'$ORACLE_SID'") {print $2; exit}}' /etc/sf/shell/db_info.txt`

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib

export SQLPLUS=$ORACLE_HOME/bin/sqlplus

}

check_db () {

process="ora_pmon_$ORACLE_SID"

check_proc=`ps -ae -o args | grep -w "ora_pmon_$ORACLE_SID" | grep -v grep | head -n 1`

if [ "$process" == "$check_proc" ]; then

DB_STATUS=`$SQLPLUS -S / as sysdba <

set echo off

set feedback off

set heading off

set pagesize 0

set linesize 300

whenever sqlerror exit failure

select status from v\\$instance;

exit

EOF`

if [ $? -ne 0 ]; then

echo "   [ERROR] Check the database $ORACLE_SID failed!"

return 1

else

if [ $DB_STATUS != 'OPEN' ]; then

echo "   [ERROR] The database $ORACLE_SID is $DB_STATUS but NOT opened!"

return 1

else

return 0

fi

fi

else

echo "   [ERROR] The database $ORACLE_SID background process does NOT exist!"

return 1

fi

}

init_env

case $1 in

'start')

$SQLPLUS -S / as sysdba <

whenever sqlerror exit failure

startup force

exit

EOF

if [ $? -ne 0 ]; then

echo "   [ERROR] Fail to start the database $ORACLE_SID!"

exit 1

else

exit 0

fi

;;

'stop')

$SQLPLUS -S / as sysdba <

whenever sqlerror exit failure

shutdown immediate

exit

EOF

if [ $? -ne 0 ]; then

echo "   [ERROR] Fail to shutdown the database $ORACLE_SID!"

exit 1

else

exit 0

fi

;;

'check')

check_db

if [ $? -ne 0 ]; then

exit 1

else

exit 0

fi

;;

'clean')

ps -aef | grep -w "ora_pmon_$ORACLE_SID" | grep -v grep | head -n 1 | awk '{print $2}'| xargs -i kill -9 {}

exit 0

;;

*)

echo "Usage $0 {start|stop|check|clean}"

exit 1

;;

esac

[oracle@cnsz22pl0076:/data01/tmp/llc]$cat act_lsnr.ksh

#!/bin/ksh

#Copyright (c) 2010, Oracle. All rights reserved.

#

#    NAME

#      act_lsnr.ksh

#

#    DESCRIPTION

#      This shell script is the action script for start / stop / check

#      the Oracle Listener in a cold failover configuration.

#

#      Place this file in /crs/public/

#

#    MODIFIED   (MM/DD/YY)

#    swong      09/27/10 - Creation

#    swong      11/09/10 - Modification

init_env () {

export ORACLE_SID=s112032

export ORACLE_HOME=`awk -F: '{if ($1 == "'$ORACLE_SID'") {print $2; exit}}' /etc/sf/shell/db_info.txt`

export ORA_LISTENER_NAME=${ORACLE_SID}

}

check_listener () {

process_listener="$ORACLE_HOME/bin/tnslsnr $ORA_LISTENER_NAME -inherit"

check_proc_listener=`ps -ae -o args | grep -w "tnslsnr $ORA_LISTENER_NAME" | grep -v grep | head -n 1`

if [ "$process_listener" = "$check_proc_listener" ]; then

$ORACLE_HOME/bin/lsnrctl status $ORA_LISTENER_NAME

else

return 1

fi

}

init_env

case $1 in

'start')

$ORACLE_HOME/bin/lsnrctl start $ORA_LISTENER_NAME

if [ $? -ne 0 ]; then

echo "   [ERROR] Fail to start the listener $ORA_LISTENER_NAME!"

exit 1

else

exit 0

fi

;;

'stop')

$ORACLE_HOME/bin/lsnrctl stop $ORA_LISTENER_NAME

if [ $? -ne 0 ]; then

echo "   [ERROR] Fail to stop the listener $ORA_LISTENER_NAME!"

exit 1

else

exit 0

fi

;;

'check')

check_listener

if [ $? -ne 0 ]; then

exit 1

else

exit 0

fi

;;

'clean')

ps -aef | grep -w "tnslsnr $ORA_LISTENER_NAME" | grep -v grep | head -n 1 | awk '{print $2}' | xargs -i kill -9 {}

exit 0

;;

*)

echo "Usage $0 {start|stop|check|clean}"

exit 1

;;

esac

[oracle@cnsz22pl0076:/data01/tmp/llc]$cat act_rgb.ksh

#!/bin/ksh

# Copyright (c) 2010, Oracle. All rights reserved.

#

#    NAME

#      act_rgb.sh

#

#    DESCRIPTION

#      This shell script is the action script for start / stop / check

#      the Oracle Instance in a cold failover configuration.

#

#      Place this file in /crs/public/$ORACLE_SID/. Make the directory readable/writable to the RDBMS owner.

#      Also, create a invisible directory .run under /crs/public/$ORACLE_SID/.

#      This .run directory will be used to store the runtime files. Do NOT delete them!!!

#

#      For particular database, please change ORACLE_SID value accordingly.

#

#    MODIFIED   (MM/DD/YY)

#    swong      09/27/10 - Creation

#    swong      11/09/10 - Add checking if the file exists

init_env () {

export ORACLE_SID=s112032

export ORACLE_HOME=`awk -F: '{if ($1 == "'$ORACLE_SID'") {print $2; exit}}' /etc/sf/shell/db_info.txt`

export SCRIPT_HOME=/dba/app/product/11.2.0/grid/crs/public/${ORACLE_SID}/.run

export FILENAME=$SCRIPT_HOME/.rgb_start_stop_check.${ORACLE_SID}

}

init_env

case $1 in

'start')

echo '0' > $FILENAME

;;

'stop')

echo '1' > $FILENAME

;;

'check')

read line < $FILENAME

if [ $? -ne 0 ]; then

exit 1

else

if [ $line -eq 0 ]; then

exit 0

else

exit 1

fi

fi

;;

'clean')

rm -f $FILENAME

exit 0

;;

*)

echo "Usage $0 {start|stop|check|clean}"

exit 1

;;

esac

[oracle@cnsz22pl0076:/data01/tmp/llc]$cat act_rgh.ksh

#!/bin/ksh

# Copyright (c) 2010, Oracle. All rights reserved.

#

#    NAME

#      act_rgh.sh

#

#    DESCRIPTION

#      This shell script is the action script for start / stop / check

#      the Oracle Instance in a cold failover configuration.

#

#      Place this file in /crs/public/$ORACLE_SID/. Make the directory readable/writable to the RDBMS owner.

#      Also, create a invisible directory .run under /crs/public/$ORACLE_SID/.

#      This .run directory will be used to store the runtime files. Do NOT delete them!!!

#

#      For particular database, please change ORACLE_SID value accordingly.

#

#    MODIFIED   (MM/DD/YY)

#    swong      09/27/10 - Creation

#    swong      11/09/10 - Add checking if the file exists

init_env () {

export ORACLE_SID=s112032

export ORACLE_HOME=`awk -F: '{if ($1 == "'$ORACLE_SID'") {print $2; exit}}' /etc/sf/shell/db_info.txt`

export SCRIPT_HOME=/dba/app/product/11.2.0/grid/crs/public/${ORACLE_SID}/.run

export FILENAME=$SCRIPT_HOME/.rgh_start_stop_check.${ORACLE_SID}

}

init_env

case $1 in

'start')

echo '0' > $FILENAME

;;

'stop')

echo '1' > $FILENAME

;;

'check')

read line < $FILENAME

if [ $? -ne 0 ]; then

exit 1

else

if [ $line -eq 0 ]; then

exit 0

else

exit 1

fi

fi

;;

'clean')

rm -f $FILENAME

exit 0

;;

*)

echo "Usage $0 {start|stop|check|clean}"

exit 1

;;

esac

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值