Oracle 11g系统怎么设置自动启动与关闭
admin
2023-04-30 04:42:21
0

Oracle 11g系统自动启动与关闭的设置方法

第一步:要在Linux中设置允许ORACLE系统自动启动,因为默认情况下是设置为不允许的。

1.在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,将不允许自动启动改为允许自动启动。

2.修改ORACLE自带的启动与关闭脚本,分别是dbstart和dbshut。执行这两个脚本就可以实现ORACLE脚本的启动与关闭。

在oracle账户下修改$ORACLE_HOME/bin/dbstart文件:

$ vi $ORACLE_HOME/bin dbstart

找到 ORACLE_HOME_LISTNER=$1这一行

改为:ORACLE_HOME_LISTNER=$ORACLE_HOME

之所以做这一步,是因为在这个脚本自动生成的时候,也就是ORACLE被安装进Linux的时候,这个脚本并不知道你的 ORACLE_HOME_LISTNER是什么,现在要将这个参数显示的写明,这样就不会在执行这个脚本的时候报 ORACLE_HOME_LISTNER没有被指定的错误了。

注意:dbstart和dbshut脚本在10g版本之后就已经将监听器的启动与关闭合并进数据库实例的启动与关闭脚本里面了,而不再是单独分开的了。

同样的方式,也要修改dbshut的这个参数。这里就不再详细写出了,他们在同一个目录下。

第二步:写一个脚本,把它注册为一个系统服务,让它在开机与关机的时候运行。它的作用就是调用并执行dbstart和dbshut。这样不就实现了数据库启动与关闭了。

这个脚本被放在/etc/init.d目录中,脚本的名字是oracle

脚本代码如下:

#!/bin/bash

# chkconfig: 2345 96 11

# description:Startup Script for oracle Databases

#/etc/rc.d/init.d/oradbstart

exportORACLE_BASE=/u01/app/oracle/

export ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1

exportORACLE_SID=ORDB

exportPATH=$PATH:$ORACLE_HOME/bin

case "$1"in

start)

echo"-----startup oracle-----" >> /var/log/oraclelog

su - oracle -c"$ORACLE_HOME/bin/dbstart"

touch/var/lock/subsys/oracle

echo"-----startup oracle successful-----" >> /var/log/oraclelog

echo "OK"

;;

stop)

echo"-----shutdwn oracle-----" >> /var/log/oraclelog

su - oracle -c"$ORACLE_HOME/bin/dbshut"

rm -f/var/lock/subsys/oracle

echo"-----shutdown oracle successful-----" >> /var/log/oraclelog

echo "OK"

;;

reload|restart)

$0 stop

$1 start

;;

*)

echo "Usage:'basename $0' start|stop|reload|restart"

exit 1

esac

exit 0保存并退出。

现在,我要对这段脚本做一个关键解释:

第一:# chkconfig: 2345 99 10 虽是一行注释,但是确实关键的必不可少的一行, 除非你不用chkconfig命令来自动生成符号连接文件,而是完全采用手工创建。否则没有这一行,执行chkconfig系统将会报出oracle没有chkconfig服务权限的错误。

第二:su - oracle -c $ORACLE_HOME/bin/dbstart 和touch /var/lock/subsys/oracle这两行的作用是首先执行dbstart脚本启动oracle,然后在服务活动列表目录中创建一个与oracle这个服务同名的一个文件,表示这个服务是活动的,也就是被启动的。

而su - oracle -c $ORACLE_HOME/bin/dbshut 和rm -f /var/lock/subsys/oracle这两行的作用是首先执行dbshut脚本关闭oracle,然后从服务活动列表目录中删除那个与oracle同名的那个文件,表示这个服务不是活动的,也就是已经被关闭。

那么为什么要做touch /var/lock/subsys/oracle和rm -f /var/lock/subsys/oracle这两步呢?原因是跟Linux系统的机制有关的:Linux的判别一个服务是否被启动的依据是在/var/lock/subsys/目录下是否有与服务名相同的文件,若有则表示这个服务已经被启动了,在系统关闭的时候,Linux会把这里面列出的服务全部关闭,并删掉与服务同名的文件。若一个服务被启动了,但却在这个目录里没有那个服务的同名文件,则不会关闭那个服务。

网上的文章均将这个地方设置错了,所以会发现,ORACLE可以随系统启动了,但却没有随系统关闭。我也是分析了/etc/rc.d/rc.local后才发现这个原理的。经过试验,果然如此。再分析mysql的启动与关闭脚本也是这样做的,最终恍然大悟。原来如此。这个地方请大家注意了。

最后,就是将这个脚本注册成为一个系统服务就可以了,方法有二:

其一:先给脚本分配可以被执行的权限。执行下面命令:

代码如下:

#su - root

chown oracle /etc/init.d/oracle

chmod 775 /etc/init.d/oracle

再创建符号链接文件。

chkconfig --add /etc/init.d/oracle,执行这个命令就需要你在脚本中写上

# chkconfig: 2345 99 10 了。这样当这个命令被执行的时候,会去oracle文件中寻找这行注释,并解析这行注释,根据解析结果分别在/etc/rc.d/rc2.d;/etc/rc.d/rc3.d;/etc/rc.d/rc4.d;/etc/rc.d/rc5.d中创建符号连接文件S99oracle文件,这个文件是系统启动时要执行的,其实这个文件是指向/etc/init.d/oracle的,启动的时候系统向这个文件发送一个start参数,也就执行了oracle文件中的start分支了。

另外还会在/etc/rc.d/rc0.d;/etc/rc.d/rc1.d;/etc/rc.d/rc6.d中创建K10oracle文件,这个文件时系统关闭时要执行的,其实这个文件也是指向/etc/init.d/oracle的,关闭的时候系统向这个文件发送一个stop参数,也就执行了oracle文件中的stop分支了。

我想你应该明白# chkconfig: 2345 99 10 中这些数字的含义了吧:

指出2,3,4,5级别启动这个服务,99是在相应的/etc/rc.d/rcN.d(N为前面指定的级别,这里是2345)目录下生成的链接文件的序号(启动优先级别)S99oracle,10为在除前面指出的级别对应的/etc/rc.d/rcN.d(N为除2345之外的级别)目录生成的链接文件的序号(服务停止的优先级别)K10oracle。至于为什么在这些目录中创建文件和文件的命名规则,这就要您对Linux的系统启动流程有一个熟悉的了解了,在这就不详谈了。

其二:若您想尝试一下手动创建符号连接文件的乐趣,请执行如下命令:

代码如下:

#su - root

ln -s /etc/init.d/oracle/etc/rc.d/rc2.d/S99oracle

ln -s /etc/init.d/oracle/etc/rc.d/rc3.d/S99oracle

ln -s /etc/init.d/oracle/etc/rc.d/rc4.d/S99oracle

ln -s /etc/init.d/oracle/etc/rc.d/rc5.d/S99oracle

ln -s /etc/init.d/oracle/etc/rc.d/rc0.d/K10oracle

ln -s /etc/init.d/oracle/etc/rc.d/rc1.d/K10oracle

ln -s /etc/init.d/oracle/etc/rc.d/rc6.d/K10oracle

其实手动这样操作作用效果和执行chkconfig --add oracle是一样的。

到此,所有设置就完成了,下面进行一下测试:

#cd /etc/init.d

sh oracle start 或者service oracle start

执行后,看看/var/log目录下的oraclelog文件,里面是不是有脚本的启动分支输出信息呢?

sh oracle stop或者service oracle stop

执行后,看看/var/log目录下的oraclelog文件,里面是不是有脚本的关闭分支输出信息呢?

若看到信息,表示您设置成功了。若没有,请再仔细设置一遍,并注意文件的权限问题。 

相关内容

热门资讯

烈焰熊熊,堪比“原子弹”,欧洲... 据美国有线电视新闻网(CNN)7月29日报道,席卷法国西南部的大片野火燃烧得如此猛烈,以至于形成了一...
外交部:对日本熊本县地震遇难者... 据凤凰卫视报道,针对日本熊本县发生强震造成人员伤亡,中国外交部发言人毛宁7月29日在例行记者会上表示...
高铁喧哗被劝阻后叫嚣全家体制内... “女子高铁喧哗被劝阻后叫嚣全家体制内”一事迎来官方通报。据新京报报道,7月29日,辽宁北票市公安局发...
广东专业蓝牙耳机定制厂家推荐,... 在珠三角腹地,广东早已成为全球蓝牙耳机产业链的“心脏地带”。从深圳华强北的声学元件批发,到东莞、惠州...
格雷厄姆葬礼变地缘竞价场!两大... 有些葬礼,送别的是逝者;有些葬礼,演的却是活人最现实的政治博弈。当地时间7月28日,美国老牌鹰派参议...
一道小学数学题难住3名医学博士... 3名不同学校的博士同做一道数学题,谁最厉害?近日,一陕西网友发布的视频引发热议。29日,视频发布者“...
华为全新“小艺任务”亮相:整合... 7月29日,在华为鸿蒙电脑新品技术沟通会上,终端云服务小艺业务部总裁贾永利宣布,小艺将迎来“从对话到...
广西日报特稿《王的猜想》火了,... 澎湃新闻记者 蒋子文 实习生 汤煜炜为应对外界购买纸质版特稿《王的猜想》的热情,《广西日报》宣布紧急...
月租20元内!2026年平价云... 不少手游玩家、账号运营从业者挑选云手机时,首要诉求就是低价够用,想要控制每月支出在20元以内,同时兼...
诺奖得主如何看待王虹境遇?“我... 中村修二(2014年诺贝尔物理学奖得主)【导读】近日王虹与邓煜双双获得2026年菲尔兹奖,成为了首批...