ORACLE11g随RHEL5系统自动启动与关闭的设置方法
前端之家收集整理的这篇文章主要介绍了
ORACLE11g随RHEL5系统自动启动与关闭的设置方法,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
写好脚本,注册好服务之后,经测试,ORACLE可以随RHEL启动而启动,但不能随系统关闭而关闭。在网上找答案,发现几乎所有的设置过程帖子都是从同一篇原样照抄过来的,根本就行不通。天下文章一大抄。求助他人,没有得到一个好的解决方案。无奈,自己静下心来慢慢研究分析,总算找到了问题的关键原因所在。
现在就把我的整个成功设置的过程贴出来,供大家参考,以期大家能少走弯路;另外还是要给其他人一个建议:切莫生硬照搬,断章取义,否则其害大焉!!
首先,要在RHEL中设置允许ORACLE系统自动启动,因为默认情况下是设置为不允许的。操作如下:
在root账户下修改/etc/oratab 文件:
# vi /etc/oratab
找到orcl=/db/app/oracle/product/11.1.0/db_1 :N这一行
改为:
orcl=/db/app/oracle/product/11.1.0/db_1 :Y
也就是将最后的N改为Y,意思是将不允许自动启动改为允许自动启动。
然后,是修改ORACLE自带的启动与关闭脚本,分别是dbstart和dbshut。执行这两个脚本就可以实现ORACLE脚本的启动与关闭。
在oracle账户下修改$ORACLE_HOME/bin/dbstart文件:
<div class="codetitle"><a style="CURSOR: pointer" data="56579" class="copybut" id="copybut56579" onclick="doCopy('code56579')"> 代码如下:
<div class="codebody" id="code56579">
# su - ORACLE
$ cd $ORACLE_HOME/bin
$ vi dbstart
找到 ORACLE_HOME_LISTNER=$1这一行
改为:
ORACLE_HOME_LISTNER=$ORACLE_HOME
之所以做这一步,是因为在这个脚本
自动生成的时候,也就是ORACLE被安装进RHEL的时候,这个脚本并不知道你的
ORACLE_HOME_LISTNER是什么,现在要将这个参数
显示的写明,这样就不会在执行这个脚本的时候报
ORACLE_HOME_LISTNER没有被指定的
错误了。注意:dbstart和dbshut脚本在10g之后就已经将监听器的启动与
关闭合并进数
据库实例的启动与
关闭脚本里面了。而不再是单独分开的了。
同样的方式,我们也要
修改dbshut的这个参数。这里就不再详细写出了,他们在同一个目录下。
再次,就是写一个脚本,把它
注册为一个系统服务,让它在开机与关机的时候运行。它的作用就是
调用并执行dbstart和dbshut。这样不
就实现了
数据库启动与
关闭了吗?!这个脚本被放在/etc/init.d目录中,脚本的名字是oracle11
脚本如下:
<div class="codetitle">
<a style="CURSOR: pointer" data="48293" class="copybut" id="copybut48293" onclick="doCopy('code48293')"> 代码如下:
<div class="codebody" id="code48293">
#!/bin/bash
# chkconfig: 2345 99 10
# description: Startup Script for oracle Databases
# /etc/rc.d/init.d/oradbstart
export ORACLE_BASE=/db/app/oracle/
export ORACLE_HOME=/db/app/oracle/product/11.1.0/db_1
export ORACLE_SID=orcl
export PATH=$PATH:$ORACLE_HOME/bin
case "$1" in
start)
echo "-----startup oracle-----" >> /var/log/oracle11log
su oracle -c $ORACLE_HOME/bin/dbstart
touch /var/lock/subsys/oracle11
echo "-----startup oracle successful-----" >> /var/log/oracle11log
echo "OK" stop)
echo "-----shutdwn oracle-----" >> /var/log/oracle11log
su oracle -c $ORACLE_HOME/bin/dbshut
rm -f /var/lock/subsys/oracle11
echo "-----shutdown oracle successful-----" >> /var/log/oracle11log
echo "OK" *)
echo "Usage: 'basename $0' start|stop"
exit 1
esac
exit 0
第二:su oracle -c $ORACLE_HOME/bin/dbstart 和touch /var/lock/subsys/oracle11这两行的作用是首先执行dbstart脚本启动oracle,然后在服务活动列表目录中创建一个与oracle11这个服务同名的一个
而su oracle -c $ORACLE_HOME/bin/dbshut 和rm -f /var/lock/subsys/oracle11这两行的作用是首先执行dbshut急哦脚本
那么为什么要做touch /var/lock/subsys/oracle11和rm -f /var/lock/subsys/oracle11这两步呢?原因是跟LINUX系统的机制有关的:LINUX的判别一个服务是否被启动的依据是在/var/lock/subsys/目录下是否与服同名的