2022年设置ORACLEg随RHEL系统自动启动与关闭 .pdf

上传人:H****o 文档编号:32991752 上传时间:2022-08-09 格式:PDF 页数:5 大小:44.91KB
返回 下载 相关 举报
2022年设置ORACLEg随RHEL系统自动启动与关闭 .pdf_第1页
第1页 / 共5页
2022年设置ORACLEg随RHEL系统自动启动与关闭 .pdf_第2页
第2页 / 共5页
点击查看更多>>
资源描述

《2022年设置ORACLEg随RHEL系统自动启动与关闭 .pdf》由会员分享,可在线阅读,更多相关《2022年设置ORACLEg随RHEL系统自动启动与关闭 .pdf(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、最近, ORACLE 系统基本调试通过,是时候设置ORACLE 随 RHEL 自动启动与关闭服务的时候了,之所以把这个任务放在最后来做,是因为我觉得这个应该不会很难,但真正实施起来, 还是遇到了个不小的障碍: 写好脚本,注册好服务之后,经测试, ORACLE 可以随 RHEL 启动而启动,但不能随系统关闭而关闭。在网上找答案,发现几乎所有的设置过程帖子都是从同一篇原样照抄过来的,根本就行不通。天下文章一大抄。求助他人,没有得到一个好的解决方案。无奈,自己静下心来慢慢研究分析,总算找到了问题的关键原因所在。现在就把我的整个成功设置的过程贴出来,供大家参考, 以期大家能少走弯路;另外还是要给其他人

2、一个建议: 切莫生硬照搬,断章取义,否则其害大焉!首先,要在 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 。执行这两

3、个脚本就可以实现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

4、_HOME_LISTNER没有被指定的错误了。注意:dbstart和dbshut 脚本在 10g之后就已经将监听器的启动与关闭合并进数据库实例的启动与关闭脚本里面了。而不再是单独分开的了。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 5 页 - - - - - - - - - 同样的方式,我们也要修改dbshut 的这个参数。这里就不再详细写出了,他们在同一个目录下。再次,就是写一个脚本, 把它注册为一个系统服务, 让它在开机与关机的时候运行。它的作用就是调用并执行db

5、start和 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

6、=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 $O

7、RACLE_HOME/bin/dbshut rm -f /var/lock/subsys/oracle11 echo -shutdown oracle successful- /var/log/oracle11log echo OK ; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 5 页 - - - - - - - - - *) echo Usage: basename $0 start|stop exit 1 esac exit 0 保存并退出。现在,我要对这段脚本

8、做一个关键解释:第一: # chkconfig: 2345 99 10 虽是一行注释,但是确实关键的必不可少的一行, 除非你不用 chkconfig命令来自动生成符号连接文件,而是完全采用手工创建。否则没有这一行,执行 chkconfig系统将会报出 oracle11 没有chkconfig服务权限的错误。第二: su oracle -c $ORACLE_HOME/bin/dbstart 和 touch /var/lock/subsys/oracle11这两行的作用是首先执行dbstart脚本启动oracle ,然后在服务活动列表目录中创建一个与 oracle11这个服务同名的一个文件,表示这

9、个服务是活动的,也就是被启动的。而 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/lo

10、ck/subsys/目录下是否与服同名的文件, 若有则表示这个服务已经被启动了,在系统关闭的时候, LINUX会把这里面列出的服务全部关闭,并删掉与服务同名的文件。若一个服务被启动了,但却在这个目录里没有那个服务的同名文件,则不会关闭那个服务。 网上的文章均将这个地方设置错了,所以会发现, ORACLE 可以随系统启动了,但却没有随系统关闭。我也是分析了/etc/rc.d/rc.local后才发现这个原理的。经过试验,果然如此。再分析 mysql 的启动与关闭脚本也是这样做的,最终恍然大悟。原来如此。这个地方请大家注意了。最后,就是将这个脚本注册成为一个系统服务就可以了,方法有二:其一:先给脚

11、本分配可以被执行的权限。执行下面命令: #su - root chown oracle /etc/init.d/oracle11 chmod 775 /etc/init.d/oracle11 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 5 页 - - - - - - - - - 再创建符号链接文件。 chkconfig -add /etc/init.d/oracle11,执行这个命令就需要你在脚本中写上 # chkconfig: 2345 99 10 了。这样当这个命

12、令被执行的时候,回去 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 中创建 K10oracle

13、11文件,这个文件时系统关闭时要执行的,其实这个文件也是指向/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 之外的级别 ) 目

14、录生成的链接文件的序号 ( 服务停止的优先级别 )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/S99or

15、acle11 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 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 5 页 - - - - - - - - - ln -s /etc/init.d/or

16、acle11 /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的用户概念是很严格的。毕竟是多用户系统嘛。文章属于作者原创,转载请注明出处。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 5 页 - - - - - - - - -

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 技术总结

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁