linux下系统开机oracle自启动(方法一) ---加载为服务自启动、停止
一、dbstart 及 dbshut1. 修改Oracle系统配置文件:/etc/oratab,只有这样,Oracle 自带的dbstart和dbshut才能够发挥作用。
# vi /etc/oratab
orcl:/opt/oracle/102:Y#Entries are of the form:
#$ORACLE_SID:$ORACLE_HOME:<N|Y>Oracle数据库的自动启动及停止可籍Oracle提供的dbstart及dbshut。
这些文件又耍依靠 /etc/oratab存在才能使用(虽然更改dbshut和dbstart可解除这限制。) /etc/oratab格式如下: -------------------------------------------------------------------------------- SID:ORACLE_HOME:AUTO --------------------------------------------------------------------------------例如--------------------------------------------------------------------------------*:/opt/oracle9/product/9.2.0.4:Nboss:/opt/oracle9/product/9.2.0.4:Y--------------------------------------------------------------------------------二、 init.d 及 rc.d
要在开机关机时自动启动和结束数据库的话,你需要修改 Linux 的启动脚本文件。这并不困难,不过,我需要指出这些改动因应不同的 Linux 发行版本(slackware, debian, redhat 等)而有所不同。我这些例子适用于 Redhat 5.0。要为你所用的 Linux 作出修改。 首先,我们要建立会执行 /etc/rc.d/init.d 目录中 dbshut 及 dbstart 的脚本文件。把以下文件命名为 /etc/rc.d/init.d/oracle: ##############################################################chkconfig:2345 98 05
#description:Oracle Server#add for oracle
ORACLE_BASE=/opt/oracle9export ORACLE_BASEORACLE_HOME=$ORACLE_BASE/product/9.2.0.4export ORACLE_HOMEORACLE_SID=BOSSexport ORACLE_SIDORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/dataexport ORA_NLS33NLS_LANG=american_america.zhs16gbkexport NLS_LANGLD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/libexport LD_LIBRARY_PATHcase "$1" in
start) echo "Starting Oracle..." su oracle -c "/opt/oracle9/product/9.2.0.4/bin/lsnrctl start" su oracle -c "/opt/oracle9/product/9.2.0.4/bin/dbstart 1>$ORACLE_HOME/bin/dbstart.log 2>$ORACLE_HOME/bin/dbstart.err" echo "Started."exit 0;; stop) echo "Stoping Oracle..." su oracle -c "/opt/oracle9/product/9.2.0.4/bin/lsnrctl stop" su oracle -c "/opt/oracle9/product/9.2.0.4/bin/dbshut" echo "Stoped."exit 0;;*)
echo "Usage: $0 {start|stop}"exit 1esac
#############################################################下面是另一SHELL的-------------------------------------------------------------------------------- #!/bin/sh # #chkconfig:2345 98 05#description:Oracle Server#/etc/rc.d/init.d/oracle #解说∶启动及停止 Oracle 数据库和监听程序 #检查如何执行脚本文件 case "$1" in start) echo -n "Starting Oracle Databases: " echo "----------------------------------------------------" >> /var/log/oracle date +"! %T %a %D : Starting Oracle Databases as part of system up." >> /var/log/oracle echo "----------------------------------------------------" >> /var/log/oracle su - oracle -c dbstart >> /var/log/oracle echo "Done." echo -n "Starting Oracle Listeners: " su - oracle -c "lsnrctl start" >> /var/log/oracle echo "Done." echo "" echo "----------------------------------------------------" >> /var/log/oracle date +"! %T %a %D : Finished." >> /var/log/oracle echo "----------------------------------------------------" >> /var/log/oracle touch /var/lock/subsys/oracle ;; stop) echo -n "Shutting Down Oracle Listeners: " echo "----------------------------------------------------" >> /var/log/oracle date +"! %T %a %D : Shutting Down Oracle Databases as part of system down." >> /var/log/oracle echo "----------------------------------------------------" >> /var/log/oracle su - oracle -c "lsnrctl stop" >> /var/log/oracle echo "Done." rm -f /var/lock/subsys/oracle echo -n "Shutting Down Oracle Databases: " su - oracle -c dbshut >> /var/log/oracle echo "Done." echo "" echo "----------------------------------------------------" >> /var/log/oracle date +"! %T %a %D : Finished." >> /var/log/oracle echo "----------------------------------------------------" >> /var/log/oracle ;; restart) echo -n "Restarting Oracle Databases: " echo "----------------------------------------------------" >> /var/log/oracle date +"! %T %a %D : Restarting Oracle Databases as part of system up." >> /var/log/oracle echo "----------------------------------------------------" >> /var/log/oracle su - oracle -c dbstop >> /var/log/oracle su - oracle -c dbstart >> /var/log/oracle echo "Done." echo -n "Restarting Oracle Listeners: " su - oracle -c "lsnrctl stop" >> /var/log/oracle su - oracle -c "lsnrctl start" >> /var/log/oracle echo "Done." echo "" echo "----------------------------------------------------" >> /var/log/oracle date +"! %T %a %D : Finished." >> /var/log/oracle echo "----------------------------------------------------" >> /var/log/oracle touch /var/lock/subsys/oracle ;; *) echo "Usage: oracle {start|stop|restart}" exit 1 esac 不要吝啬於检查这个文件到底有没有真的正确地启动和停止系统中的数据库。请检查记录档(log file),看看有没有错误讯息。 弄妥这脚本文件後,我们要在正确的执行等级目录 (runlevel directories) /etc/rc.d/rcX.d 中建立及删除符号连结 (symbolic links)。 以下指令确保在执行等级 2, 3 , 4, 5 下会叫出数据库∶ $ ln -s ../init.d/oracle /etc/rc.d/rc2.d/S99oracle $ ln -s ../init.d/oracle /etc/rc.d/rc3.d/S99oracle $ ln -s ../init.d/oracle /etc/rc.d/rc4.d/S99oracle $ ln -s ../init.d/oracle /etc/rc.d/rc5.d/S99oracle 要在重新启动时停止数据库,我们需要以下连结∶ $ ln -s ../init.d/oracle /etc/rc.d/rc0.d/K01oracle # 停止 $ ln -s ../init.d/oracle /etc/rc.d/rc1.d/K01oracle # 停止 $ ln -s ../init.d/oracle /etc/rc.d/rc6.d/K01oracle # 重新启动
========================
把oracle service添加到服务里# chkconfig –add /etc/rc.d/init.d/oracle查看自动启动设置是否成功:
# chkconfig –list oracleoracle 0:关闭 1:关闭 2:关闭 3:开启 4:开启 5:开启 6:关闭*从上面可以看出level为345的都已经开启了,配置成功!===============================linux下系统开机oracle自启动(方法二)
以root身份登录:$su - root1、linux下oracle自带的dbstart和dbshut没反应: 修改Oracle系统配置文件/etc/oratab文件: #vi /etc/oratab /etc/oratab 格式为: SID:ORACLE_HOME:AUTO 把AUTO域设置为Y(大写),我的为: oradb:/opt/u01/app/oracle/product/9.2.0.4:Y只有这样,oracle 自带的dbstart和dbshut才能够发挥作用。
2、修改/etc/rc.d/rc.local配置文件 在/etc/rc.d/rc.local中加入如下内容: #vi /etc/rc.d/rc.local su - oracle -c "/u01/app/oracle/product/9.2.0.4/bin/lsnrctl start" su - oracle -c "/u01/app/oracle/product/9.2.0.4/bin/dbstart start"3、重新启动 #reboot4、连接测试(以oracle身份登录) $sqlplus "[email=sys/oracle@oradb]sys/oracle@oradb[/email]as sysdba" ... sql>5、说明自启动成功了
名称:su
使用权限:所有使用者 使用方式:su [-fmp] [-c command] [-s shell] [--help] [--version] [-] [USER [ARG]] 说明:变更为其他使用者的身份,除 root 外,需要键入该使用者的密码 参数: -f 或 --fast 不必读启动档(如 csh.cshrc 等),仅用于 csh 或 tcsh -m -p 或 --preserve-environment 执行 su 时不改变环境变数 -c command 或 --command=command 变更为帐号为 USER 的使用者并执行指令(command)后再变回原来使用者 -s shell 或 --shell=shell 指定要执行的 shell (bash csh tcsh 等),预设值为 /etc/passwd 内的该使用者(USER) shell --help 显示说明文件 --version 显示版本资讯 - -l 或 --login 这个参数加了之后,就好像是重新 login 为该使用者一样,大部份环境变数(HOME SHELL USER等等)都是以该使用者(USER)为主,并且工作目录也会改变,如果没有指定 USER ,内定是 root USER 欲变更的使用者帐号 ARG 传入新的 shell 参数 范例: su -c ls root 变更帐号为 root 并在执行 ls 指令后退出变回原使用者。 su root -f 变更帐号为 root 并传入 -f 参数给新执行的 shell。 su - clsung 变更帐号为 clsung 并改变工作目录至 clsung 的家目录(home dir)。