1、Oracle 在 linux 下的开机自启动(详细) 分类: ORACLE 2009-07-01 13:46 3264 人阅读 评论(0) 收藏 举报 linux 下系统开机 oracle 自启动(方法一) -加载为服务自启动、停止一、dbstart 及 dbstop Oracle 数据库的自动启动及停止可籍 Oracle 提供的 dbstart 及 dbshut 档达成 (在 7.3.3.0.0 中)。这些文件又耍依靠 /etc/oratab 存在才能使用(虽然更改 dbshut 和 dbstart 档可使解除这限制。) /etc/oratab 档格式如下: - SID:ORACLE_HOM
2、E: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 作出修改,请先参考你手头上的 Linux 文件。(虽然这实际上应该适用于所有 Sys V UNIX。) 首先,我们要建立会
3、执行 /etc/rc.d/init.d 目录中 dbshut 及 dbstart 的脚本文件。把以下文件命名为 /etc/rc.d/init.d/oracle: #chkconfig:2345 98 05#description:Oracle Server#add for oracleORACLE_BASE=/opt/oracle9export ORACLE_BASEORACLE_HOME=$ORACLE_BASE/product/9.2.0.4export ORACLE_HOMEORACLE_SID=BOSSexport ORACLE_SIDORA_NLS33=$ORACLE_HOME/oc
4、ommon/nls/admin/dataexport ORA_NLS33NLS_LANG=american_america.zhs16gbkexport NLS_LANGLD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/libexport LD_LIBRARY_PATHcase “$1“ instart)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
5、/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 #下面
6、是另一 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/oracl
7、e 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/sub
8、sys/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
9、 “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 Or
10、acle 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/oracl
11、e 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
12、 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 要在重新启动时停止数据库,我
13、们需要以下连结 $ 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:开启
14、 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 自带
15、的 dbstart 和 dbshut 才能够发挥作用。2、修改/etc/rc.d/rc.local 配置文件在/etc/rc.d/rc.local 中加入如下内容: #vi /etc/rc.d/rc.localsu - 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/oracleoradbsys/oracleoradb/emailas sysdba“.sql5、说明自启动成功了