首页 电脑 电脑学堂 查看内容

Oracle 的标准系统服务脚本 for Redhat Linux

2004-10-19 04:59 701 0

摘要: 发信人: Wwashington (Jacky), 信区: NewSoftware 标 题: Oracle 的标准系统服务脚本 for Redhat Linux 发信站: BBS 水木清华站 (Sat...
关键词: nbsp echo GREP ORA FLAG dbora Oracle then RUNLEVEL HOME

发信人: Wwashington (Jacky), 信区: NewSoftware 标 题: Oracle 的标准系统服务脚本 for Redhat Linux 发信站: BBS 水木清华站 (Sat Oct 16 22:08:19 2004), 站内 作者:Wwashington AT smth bbs 时间:2004/10/16 前言:欢迎转载,但是您必须保留原文所有信息,包括作者和时间。 一、这个跟国庆前我发表的 dbids 类似,是把数据库作为标准服务 安装到 Linux 的系统脚本。这个也是原创的,与青蛙网友分享。 二、所谓标准系统服务,应该是满足以下几条标准的后台运行程序。 1) 用 chkconfig --add 来安装,用 chkconfig --list 检查状态。 2) 用 ntsysv 来定制某个服务,是否伴随机器的启动而自动启动。 3) 在图形模式下,可以用 serviceconf 来启动、停止、重启服务。 4) 开机象系统服务那样显示 starting,关机显示 shutting down。 三、下面是具体的 dbora 脚本,在 Redhat 7.3 上通过,本人已经 验证了几十次,保证能运行。如果在您的系统不能运行,请告知。 备注:启动 lsnrctl 的时候不用 su- 而使用 su,否则失败,并且 要求使用 oracle 用户本身的 BASH_ENV。脚本开头的几个 ORA_xxx 参数都要依照实际情况写,否则会说找不到 Oracle 程序或者 pid。 DOS 格式方便发文,拷下来后请大家用 UltraEdit 转为 Unix 格式。 ------------------------------------------------------------------------ 代码: #!/bin/bash # #    /etc/rc.d/init.d/dbora # # Starts the dbora daemon # # chkconfig: 345 94 6 # description: Runs commands scheduled by the at command at the time \ #    specified when at was run, and runs batch commands when the load \ #    average is low enough. # processname: dbora # # copyright: Written by Wwashington AT smth bbs, free to distribute. \ #    You must keep everything in this file, including the copyright \ #    announcement. Study demo: atd & postgresql in /etc/rc.d/init.d # Source function library. INITD=/etc/rc.d/init.d . $INITD/functions # Source system profile. if [ -r /etc/profile ] ; then . /etc/profile ; fi ORA_SID=udb01 ORA_USER=oracle ORA_BASE=/udb01/app/oracle ORA_HOME=/udb01/app/oracle/product/8.1.7 BASH_ENV=$ORA_BASE/.bashrc test -x $ORA_HOME/bin/dbstart || exit 0 RETVAL=0 GREP_UNIX=`uname | awk '{if($1 ~ /(^SunOS|^HP-UX)/) print $1}'` if ! [ "$GREP_UNIX" = "" ] then      GREP_FLAG=ef else      GREP_FLAG=efw fi RUNLEVEL=`runlevel | awk '{ print $2 }'` # RUNLEVEL=6 case "$RUNLEVEL" in 3)     SH_FLAG=1     ;; 4)     SH_FLAG=1     ;; 5)     SH_FLAG=1     ;; *)     SH_FLAG=0     ;; esac # Below is a debug info to display Show Flag # echo RUNLEVEL=$RUNLEVEL , SH_FLAG=$SH_FLAG # #    See how we were called. # prog="dbora" start() {     # Check flag, if dbora already started, quit dbora     if [ ! -f /var/lock/subsys/dbora ]; then         echo -n $"Starting $prog: "     # This is the background exec which can work under     # both CLI (dbora) and GUI mode (serviceconf). We     # must forward stderr to a file or null, otherwise     # dbora won't start with a return code in GUI mode    echo ""    echo "[oralog] ----->"    echo "Starting Oracle8i: "    echo "-------------------------------------------------------------------------" #  Please note that forward stderr(2) to /dev/null or &- means close stderr    su - $ORA_USER -c "$ORA_HOME/bin/dbstart > /tmp/ORA-dbuplog" 2>/dev/null if [ $SH_FLAG -eq 1 ]; then    cat /tmp/ORA-dbuplog fi    echo    echo "Starting TNS Listener:"    echo "-------------------------------------------------------------------------"    su $ORA_USER -c "$ORACLE_HOME/bin/lsnrctl start > /tmp/ORA-lsnrlog" 2>&- if [ $SH_FLAG -eq 1 ]; then    cat /tmp/ORA-lsnrlog fi    pid=`pidof -s ora_pmon_$ORA_SID`    if [ "$pid" == "" ]; then       RETVAL=1;    else       RETVAL=0;    fi    [ $RETVAL -eq 0 ] && touch /var/lock/subsys/dbora    echo     fi     return $RETVAL } stop() {     echo -n $"Stopping $prog: "     # In order to use database local cmd to keep safe,     # we use dbshut instead of simply kill ora_ proc.     # When we reboot (runlevel = 0 or 6), no verbose.       # Force remove /var/lock/subsys/dbora to activate if [ $SH_FLAG -eq 1 ]; then    echo ""    echo "[oralog] ----->"    echo "Shutting down TNS Listener:"    echo "-------------------------------------------------------------------------"    su $ORA_USER -c "$ORACLE_HOME/bin/lsnrctl stop" else    su $ORA_USER -c "$ORACLE_HOME/bin/lsnrctl stop > /dev/null" fi if [ $SH_FLAG -eq 1 ]; then    echo fi if [ $SH_FLAG -eq 1 ]; then    echo "Shutting down Oracle8i: "    echo "-------------------------------------------------------------------------"    su - $ORA_USER -c "$ORA_HOME/bin/dbshut" else    su - $ORA_USER -c "$ORA_HOME/bin/dbshut > /dev/null" fi    pid=`ps -$GREP_FLAG | grep -e ora_ -e lsnr | grep -v grep | awk '{ print $2 }'` #  Show pids when shutdown failed, to see debug info #  echo $pid    if [ $pid ]; then       failure ""    else       success ""    fi     echo ""      rm -f /var/lock/subsys/dbora         return $RETVAL } restart() { echo "Restarting Oracle8i and Listener: " echo "========================================================================="     stop     start }    reload() {     restart }    status_ol() {   echo "Checking Oracle8i and Listener: "   echo "========================================================================="   su - $ORA_USER -c "$ORA_HOME/bin/dbstat" } case "$1" in start)     start     ;; stop)     stop     ;; reload|restart)     restart     ;; condrestart)     if [ -f /var/lock/subsys/dbora ]; then         restart     fi     ;; status)     status_ol     ;; *)     echo $"Usage: $0 {start|stop|restart|condrestart|status}"     exit 1 esac exit $? exit $RETVAL 刚才的文件是 /etc/rc.d/init.d/dbora,现在补充一个,$ORACLE_HOME/bin/dbstat GREP_UNIX=`uname | awk '{if($1 ~ /(^SunOS|^HP-UX)/) print $1}'` if ! [ "$GREP_UNIX" = "" ] then GREP_FILE=/usr/xpg4/bin/grep GREP_FLAG=ef else GREP_FILE=/bin/grep GREP_FLAG=efw fi echo echo "# ps -$GREP_FLAG | $GREP_FILE -e ora_ -e lsnr| grep -v grep" echo ps -$GREP_FLAG | $GREP_FILE -e ora_ -e lsnr| grep -v grep echo
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

最新评论

返回顶部