ORACLE11g随RHEL5系统自动启动与关闭的设置方法_oracle

写好脚本,注册好服务之后,经测试,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文件:

复制代码 代码如下:

# 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
脚本如下:

复制代码 代码如下:

#!/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

保存并退出。
现在,我要对这段脚本做一个关键解释:
第一:# chkconfig: 2345 99 10 虽是一行注释,但是确实关键的必不可少的一行,除非你不用chkconfig命令来自动生成符号连接文件,而是完全采用手工创建。否则没有这一行,执行chkconfig系统将会报出oracle11没有chkconfig服务权限的错误。
第二: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急哦脚本关闭oracle,然后从服务活动列表目录中删除那个与oracle11同名的那个文件,表示这个服务不是活动的,也就是已经被关闭。
那么为什么要做touch /var/lock/subsys/oracle11和rm -f /var/lock/subsys/oracle11这两步呢?原因是跟LINUX系统的机制有关的:LINUX的判别一个服务是否被启动的依据是在/var/lock/subsys/目录下是否与服同名的文件,若有则表示这个服务已经被启动了,在系统关闭的时候,LINUX会把这里面列出的服务全部关闭,并删掉与服务同名的文件。若一个服务被启动了,但却在这个目录里没有那个服务的同名文件,则不会关闭那个服务。网上的文章均将这个地方设置错了,所以会发现,ORACLE可以随系统启动了,但却没有随系统关闭。我也是分析了/etc/rc.d/rc.local后才发现这个原理的。经过试验,果然如此。再分析mysql的启动与关闭脚本也是这样做的,最终恍然大悟。原来如此。这个地方请大家注意了。
最后,就是将这个脚本注册成为一个系统服务就可以了,方法有二:
其一:先给脚本分配可以被执行的权限。执行下面命令:

复制代码 代码如下:

#su - root
chown oracle /etc/init.d/oracle11
chmod 775 /etc/init.d/oracle11

再创建符号链接文件。
chkconfig --add /etc/init.d/oracle11,执行这个命令就需要你在脚本中写上# chkconfig: 2345 99 10 了。这样当这个命令被执行的时候,回去oracle11文件中寻找这行注释,并解析这行注释,根据解析结果分别在/etc/rc.d/rc2.d;/etc/rc.d/rc3.d;/etc/rc.d/rc4.d;/etc/rc.d/rc5.d中创建符号连接文件S99oracle11文件,这个文件是系统启动时要执行的,其实这个文件是指向/etc/init.d/oracle11的,启动的时候系统向这个文件发送一个start参数,也就执行了oracle11文件中的start分支了。还会在/etc/rc.d/rc0.d;/etc/rc.d/rc1.d;/etc/rc.d/rc6.d中创建K10oracle11文件,这个文件时系统关闭时要执行的,其实这个文件也是指向/etc/init.d/oracle11的,关闭的时候系统向这个文件发送一个stop参数,也就执行了oracle11文件中的stop分支了。
我想你应该明白# chkconfig: 2345 99 10 中这些数字的含义了吧:指出2,3,4,5级别启动这个服务,99是在相应的/etc/rc.d/rcN.d(N为前面指定的级别,这里是2345)目录下生成的链接文件的序号(启动优先级别)S99oracle11,10为在除前面指出的级别对应的/etc/rc.d/rcN.d(N为除2345之外的级别)目录生成的链接文件的序号(服务停止的优先级别)K10oracle11。至于为什么在这些目录中创建文件和文件的命名规则,这就要您对LINUX的系统启动流程有一个熟悉的了解了,在这就不详谈了。
其二:若您想尝试一下手动创建符号连接文件的乐趣,请执行如下命令:

复制代码 代码如下:

#su - root
ln -s /etc/init.d/oracle11 /etc/rc.d/rc2.d/S99oracle11
ln -s /etc/init.d/oracle11 /etc/rc.d/rc3.d/S99oracle11
ln -s /etc/init.d/oracle11 /etc/rc.d/rc4.d/S99oracle11
ln -s /etc/init.d/oracle11 /etc/rc.d/rc5.d/S99oracle11
ln -s /etc/init.d/oracle11 /etc/rc.d/rc0.d/K10oracle11
ln -s /etc/init.d/oracle11 /etc/rc.d/rc1.d/K10oracle11
ln -s /etc/init.d/oracle11 /etc/rc.d/rc6.d/K10oracle11

作用效果和执行chkconfig --add oracle11是一样的。
到此,所以得设置过程就结束了,下面进行一下测试吧:

复制代码 代码如下:

#cd /etc/init.d
sh oracle11 start

执行后,看看/var/log目录下的oracle11log文件,里面是不是有脚本的启动分支输出信息呢?
sh oracle11 stop
执行后,看看/var/log目录下的oracle11log文件,里面是不是有脚本的关闭分支输出信息呢?
若看到信息,表示您设置成功了。若没有,请再仔细设置一遍,并注意文件的权限问题。LINUX的用户概念是很严格的。毕竟是多用户系统嘛。
文章属于作者原创,转载请注明出处。
来自:http://blog.csdn.net/kanon_lgt/

时间: 2024-09-09 18:42:47

ORACLE11g随RHEL5系统自动启动与关闭的设置方法_oracle的相关文章

Linux 下 Oracle随系统自动启动和关闭

Linux 下实现Oracle随系统自动启动和关闭 实现如下目的:     a.实现开启oracle实例自启动     b.关闭操作系统或重启操作系统前能够正常关闭Oracle数据库 a.实现系统启动oracle实例自启动步骤: 1.修改Oracle系统配置文件/etc/oratab内容,将最后一行中最后一个字符的N改为Y root用户登录修改 #vi /etc/oratab 由如下: wwl:/oracle/orahome/10.2.0/db_1:N 改为如下并保存退出 wwl:/oracle

win7系统休眠功能关闭怎么设置

    win7系统休眠功能关闭怎么设置 步骤一:打开win7 32位纯净版桌面的"计算机"然后在上方的工具栏上,点击"打开控制面板"按钮. 步骤二:我们进入了win7系统的控制面板之后,以"大图标"的方式查看所有按钮. 步骤三:我们在控制面板里面找到一个名为"电源选项"的按钮,单击这个按钮打开需要设置的窗口. 步骤四:在win7系统的电源管理窗口中,我们在左侧下方看到有一个"更改计算机睡眠时间"的端详,点

win8系统添加新用户的设置方法

win8系统添加新用户的设置方法          方法一: 1.鼠标滑到电脑屏幕的右侧,会显示"搜索"."共享"."开始"."设备"."设置"的导航条,单击"设置"; 2.这时候在屏幕的右侧会显示出设置界面,单击"更改电脑设置"; 3.现在来到"电脑设置"界面,单击左侧的"用户",然后在右侧单击"其他用户"

Win7系统自定义开始菜单的设置方法

  Win7系统自定义开始菜单的设置方法如下: 1.先用鼠标右键点击Win7的圆形"开始"按钮,然后选择"属性",打开"自定义开始菜单"的设置面板. 2.在"开始菜单"页卡中的"隐私"设置里,我们可以选择是否储存最近打开过的程序和项目,这两个功能默认为勾选.补充:如果有些朋友不想显示这些,可以在这里取消相关的勾选设置.如果不想显示个别的程序和项目,我们也可以直接从右键菜单中选择"从列表中删除&qu

Win7系统电脑同步时间服务器设置方法

  在Win7系统中我们可以通过启用时间自动同步功能来确保时间走时准确,下面系小编就为大家介绍一下Win7系统电脑同步时间服务器设置方法. 1.首先,我们鼠标右键点击任务栏中的时间位置,然后点击"更改日期和时间设置" 2.接着切换到"iNternet时间"分页下,点击"更改设置"按钮; 3.勾选"与Internet时间服务器同步",在"服务器"一栏中填入time.windows.com,然后点击"

Windows 10系统连接无线wifl网络设置方法

第一步.点击电脑桌面右下角的无线连接图标,在打开的信号列表中选择无线信号(勾选 自动连接),再点击 连接.如下图所示: 第二步.然后系统会要我们输入无线密码了,这个时间我们只需要填写你要连接的无线密码了,如果不知道可以进入无线路由器中查看,在此就不介绍了,填写好了我们点击 下一步.如下图所示: 第三步.如在弹出网络时我们只要点击 是,启用共享并连接到设备 为例.如下图所示: 在网络列表中点击该无线信号,会显示 已连接.如下图所示: 好了以上就是小编为各位整理的一篇关于Windows 10系统连接

PHP系统时区8小时差设置方法

php教程系统时区8小时差设置方法 修改php系统时区的两种方式: 1.修改php.ini文件中的设置,找到[date]下的";date.timezone=",将该项修改为date.timezone=asia/hong_kong (prc 中国时间),然后重新启动apache服务器. 2.在应用程序中,使用时间日期函数之前添加"date_default_timezone_set("asia/hong_kong")"函数 修改php.ini文件后获

Android 4.0系统的静态路由功能设置方法

Android 4.0系统的静态路由功能设置方法!如下: 1.打开WIFI 2.点击你需要连接的WIFI接入点名称. 3.输入密码以后,把输入法隐藏一下就会发现"显示密码"和"显示高级选项". 4.勾选--显示高级选项. 5.下拉一下会出现"IP设置". 6.将选项中的DHCP改为--静态. 7.改为静态以后,下面继续会出现几项,填写方式如下: ==IP地址:你手机的IP地址,一般是192.168.1.XXX(XXX可以在1-255之间,不能跟路

win7系统下Office2013登录功能设置方法

  office工具一直是办公过程中必备的一个软件,从最初的office2003到现在的2013都在不断的进步之中,功能不断的强大,操作步骤也在不断的规范,现在的office2013需要账户登入才可使用,同时支持OneDrive同步功能,这么看上去真的是变得高端不少,但是同时也带来了不便.很多习惯于以往操作方法的用户们不想登入账户,那么在win7旗舰版电脑中如何对Office2013登录功能进行设置呢?下面小编就为大家一一讲解. Office2013登录功能设置方法 1.首先,咱们在win7旗舰