转:oracle随系统启动的脚本

原贴地址: http://space.itpub.net/26162300/viewspace-704722

添加oracle随系统启动的脚本
启动脚本已随安装的软件安装到系统 不需要自己编写

脚本位置:
  $ORACLE_HOME/bin/dbstart
  $ORACLE_HOME/bin/dbshut

启动脚本中有一个路径变量值设置错误 要手动修正

 [oracle@dba ~]$ sed -n '78p' $ORACLE_HOME/bin/dbstart
 ORACLE_HOME_LISTNER=/ade/vikrkuma_new/oracle
 [oracle@dba ~]$ sed -i 's!/ade/vikrkuma_new/oracle!$ORACLE_HOME!' $ORACLE_HOME/bin/dbstart
 [oracle@dba ~]$ sed -n '78p' $ORACLE_HOME/bin/dbstart
 ORACLE_HOME_LISTNER=$ORACLE_HOME
 [oracle@dba ~]$

要想使dbstart命令生效 还需要修改/etc/oratab里的内容
 [oracle@dba ~]$ grep $ORACLE_SID /etc/oratab
 ora10g:/u01/oracle/product/10.2.0:N
 [oracle@dba ~]$

改成
 ora10g:/u01/oracle/product/10.2.0:Y

之后就可以使用dbstart和dbshut来启停数据库了
 [oracle@dba ~]$ ps -ef | grep ora_ | grep -v grep
 [oracle@dba ~]$ dbstart
 Processing Database instance "ora10g": log file /u01/oracle/product/10.2.0/startup.log
 [oracle@dba ~]$ ps -ef | grep ora_ | grep -v grep
 oracle   12359     1  0 07:24 ?        00:00:00 ora_pmon_ora10g
 oracle   12361     1  0 07:24 ?        00:00:00 ora_psp0_ora10g
 oracle   12363     1  1 07:24 ?        00:00:00 ora_mman_ora10g
 oracle   12365     1  0 07:24 ?        00:00:00 ora_dbw0_ora10g
 oracle   12367     1  1 07:24 ?        00:00:00 ora_lgwr_ora10g
 oracle   12369     1  0 07:24 ?        00:00:00 ora_ckpt_ora10g
 oracle   12371     1  3 07:24 ?        00:00:00 ora_smon_ora10g
 oracle   12373     1  0 07:24 ?        00:00:00 ora_reco_ora10g
 oracle   12375     1  1 07:24 ?        00:00:00 ora_cjq0_ora10g
 oracle   12377     1  7 07:24 ?        00:00:00 ora_mmon_ora10g
 oracle   12379     1  0 07:24 ?        00:00:00 ora_mmnl_ora10g
 oracle   12381     1  0 07:24 ?        00:00:00 ora_d000_ora10g
 oracle   12383     1  0 07:24 ?        00:00:00 ora_s000_ora10g
 oracle   12388     1  1 07:24 ?        00:00:00 ora_qmnc_ora10g
 oracle   12394     1 12 07:24 ?        00:00:00 ora_j000_ora10g
 [oracle@dba ~]$ dbshut
 [oracle@dba ~]$ ps -ef | grep ora_ | grep -v grep
 [oracle@dba ~]$

借助这两个命令结合shell_script写个自己的脚本

[oracle@dba ~]$ cat /etc/rc.d/init.d/dbora
#!/bin/bash
# chkconfig: 35 85 90
# description: Oracle auto start-stop script.
# AUTH:seker
 
. /etc/init.d/functions
start(){
 if ps aux | grep ora_ | grep -v grep &>/dev/null
 then
  echo -n $"cannot start database: database is already running."
  failure $"cannot start database: database is already running."
  echo
  exit 1
 else
  echo -n $"Starting Database: "
  daemon su - $ORA_OWNER -c "dbstart" && touch /var/lock/subsys/`basename $0`
  echo
 fi
 
}
stop(){
 if ps aux | grep ora_ | grep -v grep &>/dev/null
 then
  echo -n $"Stoping Database: "
  daemon su - $ORA_OWNER -c "dbshut" && rm -f /var/lock/subsys/`basename $0`
  echo
 else
  echo -n $"cannot stop database:Database is not already running."
  failure $"cannot stop database:Database is not already running."
  echo
  exit 1
 fi
}
ORA_OWNER=oracle
case "$1" in
    start)
 start
 ;;
    stop)
 stop
 ;;
    emstart)
 su - $ORA_OWNER  -c 'emctl status dbconsole &>/dev/null && echo "OEM is already running" || emctl start dbconsole'
 ;;
    emstop)
 su - $ORA_OWNER  -c 'emctl status dbconsole &>/dev/null && emctl stop dbconsole || echo "OEM is not running"'
 ;;
    isqlstart)
 su - $ORA_OWNER  -c  'ps aux | grep 'isqlplus/config/server.xml' | grep -v grep &>/dev/null || isqlplusctl start'
 ;;
    isqlstop)
 su - $ORA_OWNER  -c  'ps aux | grep 'isqlplus/config/server.xml' | grep -v grep &>/dev/null && isqlplusctl stop ||  echo "isqlplus is not running"'
 ;;
    lsnstart)
 su - $ORA_OWNER  -c  'lsnrctl status &>/dev/null && echo "listen is already running" || lsnrctl start &>/dev/null'
 ;;
    lsnstop)
 su - $ORA_OWNER  -c  'lsnrctl status &>/dev/null && lsnrctl stop &>/dev/null || echo "lsnrctl is not already running"'
 ;;
 *)
 echo "USAGE: $0 {start|stop|lsnstart|lsnstop|emstart|emstop|isqlstart|isqlstop}"
 echo -e "\tstart     : database start"
 echo -e "\tstop      : database stop"
 echo -e "\tlsnstart  : listen start"
 echo -e "\tlsnstop   : listen stop"
 echo -e "\temstart   : OEM start"
 echo -e "\temstop    : OEM stop"
 echo -e "\tisqlstart : isqlplus start"
 echo -e "\tisqlstop  : isqlplus stop"
esac
[oracle@dba ~]$

添加到启动脚本目录
 [root@dba ~]# chmod +x /etc/rc.d/init.d/dbora
 [root@dba ~]# chkconfig --add dbora

也可以使用service调用
 [root@dba ~]# service dbora stop
 [root@dba ~]# service dbora start

你可能感兴趣的:(oracle,脚本,bash)