linux系统oracle服务自启动

时间:2022-04-05 06:25:15

折腾了我好几个时辰了,终于知道为什么自启动脚本一直无法成功执行,原来都是空格不对惹的祸。具体步骤说明如下:

1.修改dbstart和dbshut脚本 

dbstart脚本默认值启动oracle服务,不启动监听服务,如果想在启动oracle服务的同时启动监听,就必须修改该脚本 

将ORACLE_HOME_LISTNER值设为$ORACLE_HOME(原来是为$1)   dbshut一样的道理,如果想关闭数据库服务的同时关闭监听服务也是将dbshut文件中的ORACLE_HOME_LISTNER值设为$ORACLE_HOME

2.创建oracle自启动脚本 

由于修改了dbstart和dbshut脚本,直接用这个脚本就可以实现oracle服务和监听的同时启动或关闭,因此该脚本启动或关闭数据库只要调用dbstart或dbshut脚本就可以了。如果采用默认不做修改,那么必须在该脚本中增加启动监听和关闭监听的语句

su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/lsnrctl start" su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/lsnrctl stop"

如果想开机自动启动oem或关闭自动一起关闭oem,则采用如下语句:

su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/emctl start dbconsole" 

su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/emctl stop dbconsole"

 

 该脚本只是启动oracle监听和oracle服务,且已经做了dbstart脚本的修改,因此具体的脚本如下:

 

  # !/bin/bash

  # whoami

  # root

  # chkconfig: 2345 99 01

  # /etc/init.d/orcl

  # description: starts the oracle dabase deamons

  #

  ORACLE_HOME=/oradata/oracle/112

  ORACLE_OWNER=oracle

  case "$1" in

  start)

  echo -n "Starting orcl: "

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

  touch /var/lock/subsys/orcl

  echo

  ;;

stop)

  echo -n "shutting down orcl: "

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

  rm -f /var/lock/subsys/orcl

  echo

  ;;

restart)

  echo -n "restarting orcl: "

  $0 stop

  $0 start

  echo

  ;;

  *)

  echo "Usage: `basename $0` start|stop|restart"

esac


注:原先直接从网上拷贝了脚本, 

    #!/bin/bash 这句话,前面按理是只有两个空格的,直接将这句话拷贝到linux系统后,只表示两个空格(在linux系统实际上是4个空格了,其实表示了换行加回车),因此拷贝到linux系统后,先将该非正常空格去掉。

 

3.赋予自启动脚本执行权限

chmod 775 /etc/init.d/orcl 

4. 增加配置服务

[root@localhost ~]# /sbin/chkconfig --add orcl
orcl 服务不支持 chkconfig

“服务不支持 chkconfig”:——这个提示是因为oracle自启动脚本前面必须要有以下这两行
#chkconfig: 2345 00 01
#description:oracle 11g service

当然如果不采用这个命令进行配置服务,也可以手动方式创建文件链接来完成,如下所示:

文件链接
ln -s /etc/init.d/orcl /etc/rc.d/rc2.d/S99orcl
ln -s /etc/init.d/orcl /etc/rc.d/rc3.d/S99orcl
ln -s /etc/init.d/orcl /etc/rc.d/rc4.d/S99orcl
ln -s /etc/init.d/orcl /etc/rc.d/rc5.d/S99orcl
ln -s /etc/init.d/orcl /etc/rc.d/rc0.d/K01orcl
ln -s /etc/init.d/orcl /etc/rc.d/rc1.d/K01orcl
ln -s /etc/init.d/orcl /etc/rc.d/rc6.d/K01orcl

若想删除链接,执行如下:

rm -rf /etc/rc.d/rc2.d/S99orcl
rm -rf /etc/rc.d/rc3.d/S99orcl
rm -rf /etc/rc.d/rc4.d/S99orcl
rm -rf /etc/rc.d/rc5.d/S99orcl
rm -rf /etc/rc.d/rc0.d/K0orcl
rm -rf /etc/rc.d/rc1.d/011orcl
rm -rf /etc/rc.d/rc6.d/S01orcl

5.修改 /etc/oratab 文件

vi /etc/oratab
  ORACLE_SID:ORACLE_HOME:Y   --  是否自启动将原来的N改成Y

注:没有oratab(这个文件是oracle安装时执行如下脚本后生成的)这个文件,重新执行这两个脚本
/oradata/oraInventory/orainstRoot.sh
/oradata/oracle/112/root.sh
6.测试是否配置成功

 service orcl(oracle自启动脚本名称)--用于检查配置是否成功,如果有错误会有具体的输出,根据输出结果检查修改。

service orcl start 测试是否可以成功启动oracle 

 

备注:

第二步可以替换,如果不创建oracle自启动脚本,可以直接在/etc/rc.d/rc.local文件中增加想启动的服务的语句即可

su - oracle -c "/oradata/oracle/112/bin/dbstart"
su - oracle -c "/oradata/oracle/112/bin/emctl start dbconsole"