leon1509 发表于 2013-1-29 15:14:50

转:oracle随系统启动的脚本

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

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

脚本位置:
$ORACLE_HOME/bin/dbstart$ORACLE_HOME/bin/dbshut
启动脚本中有一个路径变量值设置错误 要手动修正
$ sed -n '78p' $ORACLE_HOME/bin/dbstart ORACLE_HOME_LISTNER=/ade/vikrkuma_new/oracle $ sed -i 's!/ade/vikrkuma_new/oracle!$ORACLE_HOME!' $ORACLE_HOME/bin/dbstart $ sed -n '78p' $ORACLE_HOME/bin/dbstart ORACLE_HOME_LISTNER=$ORACLE_HOME $
要想使dbstart命令生效 还需要修改/etc/oratab里的内容
$ grep $ORACLE_SID /etc/oratab ora10g:/u01/oracle/product/10.2.0:N $
改成
ora10g:/u01/oracle/product/10.2.0:Y
之后就可以使用dbstart和dbshut来启停数据库了
$ ps -ef | grep ora_ | grep -v grep $ dbstart Processing Database instance "ora10g": log file /u01/oracle/product/10.2.0/startup.log $ ps -ef | grep ora_ | grep -v grep oracle   12359   10 07:24 ?      00:00:00 ora_pmon_ora10g oracle   12361   10 07:24 ?      00:00:00 ora_psp0_ora10g oracle   12363   11 07:24 ?      00:00:00 ora_mman_ora10g oracle   12365   10 07:24 ?      00:00:00 ora_dbw0_ora10g oracle   12367   11 07:24 ?      00:00:00 ora_lgwr_ora10g oracle   12369   10 07:24 ?      00:00:00 ora_ckpt_ora10g oracle   12371   13 07:24 ?      00:00:00 ora_smon_ora10g oracle   12373   10 07:24 ?      00:00:00 ora_reco_ora10g oracle   12375   11 07:24 ?      00:00:00 ora_cjq0_ora10g oracle   12377   17 07:24 ?      00:00:00 ora_mmon_ora10g oracle   12379   10 07:24 ?      00:00:00 ora_mmnl_ora10g oracle   12381   10 07:24 ?      00:00:00 ora_d000_ora10g oracle   12383   10 07:24 ?      00:00:00 ora_s000_ora10g oracle   12388   11 07:24 ?      00:00:00 ora_qmnc_ora10g oracle   12394   1 12 07:24 ?      00:00:00 ora_j000_ora10g $ dbshut $ ps -ef | grep ora_ | grep -v grep $
借助这两个命令结合shell_script写个自己的脚本

$ cat /etc/rc.d/init.d/dbora#!/bin/bash# chkconfig: 35 85 90# description: Oracle auto start-stop script.# AUTH:seker . /etc/init.d/functionsstart(){ if ps aux | grep ora_ | grep -v grep &>/dev/null thenecho -n $"cannot start database: database is already running."failure $"cannot start database: database is already running."echoexit 1 elseecho -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 thenecho -n $"Stoping Database: "daemon su - $ORA_OWNER -c "dbshut" && rm -f /var/lock/subsys/`basename $0`echo elseecho -n $"cannot stop database:Database is not already running."failure $"cannot stop database:Database is not already running."echoexit 1 fi}ORA_OWNER=oraclecase "$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$
添加到启动脚本目录
# chmod +x /etc/rc.d/init.d/dbora # chkconfig --add dbora
也可以使用service调用
# service dbora stop # service dbora start
页: [1]
查看完整版本: 转:oracle随系统启动的脚本