Oracle 设置自启动

1. 环境准备

1.1 系统

  操作系统:CentOS 7(64位)

1.2 工具/软件

  已安装完成的Oracle11g(64位); 
  创建数据库实例,本文中数据库实例名:test;$ORACLE_SID:testsid

2. 方法/步骤

2.1 配置/etc/oratab

以root身份登录到linux系统,编辑/etc/oratab文件,找到 
testsid:/data/oracle/product/11.2.0/db_1:N 
,改为 
testsid:/data/oracle/product/11.2.0/db_1:Y 
注意:/data/oracle/product/11.2.0/db_1为安装的$ORACLE_HOME,根据情况自行修改路径。

[oracle@zm-centos7 ~]$ su   #切换到root
Password:                   #输入root密码
[root@zm-centos7 oracle]# vim /etc/oratab  #编辑
[root@zm-centos7 oracle]# cat /etc/oratab  #查看
#
tsid:/data/oracle/product/11.2.0/db_1:N


# This file is used by ORACLE utilities.  It is created by root.sh
# and updated by the Database Configuration Assistant when creating # a database. # A colon, ':', is used as the field terminator. A new line terminates # the entry. Lines beginning with a pound sign, '#', are comments. # # Entries are of the form: # $ORACLE_SID:$ORACLE_HOME:<N|Y>: # # The first and second fields are the system identifier and home # directory of the database respectively. The third filed indicates # to the dbstart utility that the database should , "Y", or should not, # "N", be brought up at system boot time. # # Multiple entries with the same $ORACLE_SID are not allowed. # # testsid:/data/oracle/product/11.2.0/db_1:Y #修改位置 [root@zm-centos7 oracle]# 

 

2.2 配置/etc/rc.d/rc.local

添加如下脚本:

su oracle -lc "/data/oracle/product/11.2.0/db_1/bin/lsnrctl start"
su oracle -lc /data/oracle/product/11.2.0/db_1/bin/dbstart
  • 1
  • 2

其中第一行因为lsnrctl之后有空格,需要引号,第二行加不加引号都可以。修改完保存退出即可。

添加结果:

[root@zm-centos7 /]# vim /etc/rc.d/rc.local
[root@zm-centos7 /]# cat /etc/rc.d/rc.local
#!/bin/bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file. # # In contrast to previous versions due to parallel execution during boot # this script will NOT be run after all other services. # # Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure # that this script will be executed during boot. # add start su oracle -lc "/data/oracle/product/11.2.0/db_1/bin/lsnrctl start" su oracle -lc /data/oracle/product/11.2.0/db_1/bin/dbstart # add end touch /var/lock/subsys/local # mount -a [root@zm-centos7 /]# 

 

截止此处,配置都与之前的配置方法相同,后面将配置Oracle服务启动脚本。

2.3 在/etc/init.d/下创建Oracle服务启动脚本

以root身份登录到系统,创建以oracle命名的文件 
[oracle@zm-centos7 ~]$ su 
Password: 
[root@zm-centos7 oracle]# vim /etc/init.d/oracle 
将以下脚本代码复制到文件里(注意修改oracle路径)

#!/bin/sh
# chkconfig: 345 61 61
# description: Oracle 11g R2 AutoRun Servimces
# /etc/init.d/oracle
# # Run-level Startup script for the Oracle Instance, Listener, and # Web Interface export ORACLE_BASE=/data/oracle #根据个人情况修改路径 export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1 export ORACLE_SID=testsid #改成自己的ORACLE_SID:testsid export PATH=$PATH:$ORACLE_HOME/bin ORA_OWNR="oracle" # if the executables do not exist -- display error if [ ! -f $ORACLE_HOME/bin/dbstart -o ! -d $ORACLE_HOME ] then echo "Oracle startup: cannot start" exit 1 fi # depending on parameter -- startup, shutdown, restart # of the instance and listener or usage display case "$1" in start) # Oracle listener and instance startup su $ORA_OWNR -lc $ORACLE_HOME/bin/dbstart echo "Oracle Start Succesful!OK." ;; stop) # Oracle listener and instance shutdown su $ORA_OWNR -lc $ORACLE_HOME/bin/dbshut echo "Oracle Stop Succesful!OK." ;; reload|restart) $0 stop $0 start ;; *) echo $"Usage: `basename $0` {start|stop|reload|reload}" exit 1 esac exit 0

 

 

保存退出

2.4 检查一下脚本能否正确执行

将oracle脚本文件赋予执行权限 
说明:/etc/init.d -> /etc/rc.d/init.d 其中/etc/init.d为link文件,所以执行哪个目录下的Oracle脚本都应该可以。

执行脚本:

# cd /etc/rc.d/init.d
# chmod +x oracle

 

执行结果:

[root@zm-centos7 /]# cd /etc/rc.d/init.d
[root@zm-centos7 init.d]# chmod +x oracle
[root@zm-centos7 init.d]# ll oracle -rwxr-xr-x 1 root root 984 Oct 13 14:34 oracle

 

执行oracle脚本

./oracle start
./oracle stop

执行结果正常:

[root@zm-centos7 init.d]# ./oracle start
ORACLE_HOME_LISTNER is not SET, unable to auto-start Oracle Net Listener Usage: /data/oracle/product/11.2.0/db_1/bin/dbstart ORACLE_HOME Processing Database instance "testsid": log file /data/oracle/product/11.2.0/db_1/startup.log Oracle Start Succesful!OK. [root@zm-centos7 init.d]# ./oracle stop ORACLE_HOME_LISTNER is not SET, unable to auto-stop Oracle Net Listener Usage: /data/oracle/product/11.2.0/db_1/bin/dbshut ORACLE_HOME Processing Database instance "testsid": log file /data/oracle/product/11.2.0/db_1/shutdown.log Oracle Stop Succesful!OK. 

 

这里需要注意了,在启动Oracle服务的时候,提示“ORACLE_HOME_LISTNER is not SET, unable to auto-start Oracle Net Listener”,大体意思是“Oracle监听没有配置,监听没能启动”。 
下面就需要配置一下监听,让启动数据库的时候也把监听一起启动。

2.5 配置Oracle监听开机自启动服务

修改dbstart和dbshut启动关闭脚本,使其启动数据库的同时也自动启动监听器(即启动数据库时启动监听器,停止数据库时停止监听器): 
执行脚本:

# vim /data/oracle/product/11.2.0/db_1/bin/dbstart
找到下面的代码:
ORACLE_HOME_LISTNER=$1
将其改为
ORACLE_HOME_LISTNER=$ORACLE_HOME

 

Dbstart修改结果:

# Set path if path not set (if called from /etc/rc)
SAVE_PATH=/bin:/usr/bin:/etc:${PATH} ; export PATH
SAVE_LLP=$LD_LIBRARY_PATH

# First argument is used to bring up Oracle Net Listener #ORACLE_HOME_LISTNER=$1 ORACLE_HOME_LISTNER=$ORACLE_HOME if [ ! $ORACLE_HOME_LISTNER ] ; then echo "ORACLE_HOME_LISTNER is not SET, unable to auto-start Oracle Net Listener" echo "Usage: $0 ORACLE_HOME" else LOG=$ORACLE_HOME_LISTNER/listener.log 

 

同样也修改dbshut脚本:

# vim /data/oracle/product/11.2.0/db_1/bin/dbshut
找到下面的代码:
ORACLE_HOME_LISTNER=$1
将其改为
ORACLE_HOME_LISTNER=$ORACLE_HOME

 

Dbshut修正结果:

# Set path if path not set (if called from /etc/rc)
SAVE_PATH=/bin:/usr/bin:/etc:${PATH} ; export PATH
SAVE_LLP=$LD_LIBRARY_PATH

# The this to bring down Oracle Net Listener #ORACLE_HOME_LISTNER=$1 ORACLE_HOME_LISTNER=$ORACLE_HOME if [ ! $ORACLE_HOME_LISTNER ] ; then echo "ORACLE_HOME_LISTNER is not SET, unable to auto-stop Oracle Net Listener" echo "Usage: $0 ORACLE_HOME" else LOG=$ORACLE_HOME_LISTNER/listener.log 

 

2.6 再度执行Oracle服务脚本

执行脚本:

cd /etc/rc.d/init.d
./oracle start

 

执行结果:

[root@zm-centos7 /]# cd /etc/rc.d/init.d
[root@zm-centos7 init.d]# ./oracle start
Processing Database instance "testsid": log file /data/oracle/product/11.2.0/db_1/startup.log Oracle Start Succesful!OK. 

 

发现之前关于监听的提示消失了,测试成功。

2.7 加入自动启动行列

执行脚本:

ln –s /etc/rc.d/init.d/oracle /etc/rc0.d/K61oracle
ln –s /etc/rc.d/init.d/oracle /etc/rc2.d/S61oracle ln –s /etc/rc.d/init.d/oracle /etc/rc3.d/S61oracle ln –s /etc/rc.d/init.d/oracle /etc/rc4.d/S61oracle ln –s /etc/rc.d/init.d/oracle /etc/rc6.d/K61oracle 

 

执行结果:

[root@zm-centos7 /]# ln -s /etc/rc.d/init.d/oracle /etc/rc2.d/S61oracle
[root@zm-centos7 /]# ln -s /etc/rc.d/init.d/oracle /etc/rc3.d/S61oracle
[root@zm-centos7 /]# ln -s /etc/rc.d/init.d/oracle /etc/rc4.d/S61oracle [root@zm-centos7 /]# ln -s /etc/rc.d/init.d/oracle /etc/rc0.d/K61oracle [root@zm-centos7 /]# ln -s /etc/rc.d/init.d/oracle /etc/rc6.d/K61oracle [root@zm-centos7 init.d]# ll /etc/rc0.d/ total 0 lrwxrwxrwx 1 root root 23 Oct 13 16:07 K61oracle -> /etc/rc.d/init.d/oracle ……省略100字

 

将 oracle服务加入到系统服务

chkconfig --level 234 oracle on chkconfig --add oracle 

 

检查 oracle服务是否已经生效

chkconfig --list  oracle
  • 1

执行结果:

[root@zm-centos7 init.d]# chkconfig --list  oracle

Note: This output shows SysV services only and does not include native
      systemd services. SysV configuration data might be overridden by native systemd configuration. If you want to list systemd services use 'systemctl list-unit-files'. To see services enabled on particular target use 'systemctl list-dependencies [target]'. oracle 0:off 1:off 2:on 3:on 4:on 5:on 6:off

 

2.8 最后重启机器,确认自启动结果

以oracle用户,打开一个终端:

[oracle@zm-centos7 ~]$ lsnrctl status   # 查看监听状态

LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 11-OCT-2017 23:05:06 Copyright (c) 1991, 2009, Oracle. All rights reserved. Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))) STATUS of the LISTENER ------------------------ Alias LISTENER Version TNSLSNR for Linux: Version 11.2.0.1.0 - Production Start Date 11-OCT-2017 23:02:22 Uptime 0 days 0 hr. 2 min. 45 sec Trace Level off Security ON: Local OS Authentication SNMP OFF Listener Parameter File /data/oracle/product/11.2.0/db_1/network/admin/listener.ora Listener Log File /data/oracle/diag/tnslsnr/zm-centos7/listener/alert/log.xml Listening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))) Services Summary... Service "test" has 1 instance(s). Instance "testsid", status READY, has 1 handler(s) for this service... Service "testsidXDB" has 1 instance(s). Instance "testsid", status READY, has 1 handler(s) for this service... The command completed successfully 

 

查看oracle服务状态

[oracle@zm-centos7 ~]$ ps -ef |grep ora
oracle    3053     1  0 23:02 ?        00:00:00 /data/oracle/product/11.2.0/db_1/bin/tnslsnr LISTENER -inherit
oracle 3283 1 0 23:03 ? 00:00:00 ora_pmon_testsid oracle 3285 1 0 23:03 ? 00:00:00 ora_vktm_testsid oracle 3289 1 0 23:03 ? 00:00:00 ora_gen0_testsid oracle 3291 1 0 23:03 ? 00:00:00 ora_diag_testsid oracle 3293 1 0 23:03 ? 00:00:00 ora_dbrm_testsid oracle 3295 1 0 23:03 ? 00:00:00 ora_psp0_testsid oracle 3297 1 0 23:03 ? 00:00:00 ora_dia0_testsid oracle 3299 1 0 23:03 ? 00:00:00 ora_mman_testsid oracle 3301 1 0 23:03 ? 00:00:00 ora_dbw0_testsid oracle 3303 1 0 23:03 ? 00:00:00 ora_lgwr_testsid oracle 3305 1 0 23:03 ? 00:00:00 ora_ckpt_testsid oracle 3307 1 0 23:03 ? 00:00:00 ora_smon_testsid oracle 3309 1 0 23:03 ? 00:00:00 ora_reco_testsid oracle 3311 1 0 23:03 ? 00:00:00 ora_mmon_testsid oracle 3313 1 0 23:03 ? 00:00:00 ora_mmnl_testsid oracle 3315 1 0 23:03 ? 00:00:00 ora_d000_testsid oracle 3317 1 0 23:03 ? 00:00:00 ora_s000_testsid oracle 3364 1 0 23:03 ? 00:00:00 ora_p000_testsid oracle 3366 1 0 23:03 ? 00:00:00 ora_p001_testsid oracle 3368 1 0 23:03 ? 00:00:00 ora_qmnc_testsid oracle 3563 1 0 23:03 ? 00:00:00 ora_cjq0_testsid oracle 3577 1 0 23:03 ? 00:00:00 ora_q000_testsid oracle 3579 1 0 23:03 ? 00:00:00 ora_q001_testsid oracle 3633 1 0 23:03 ? 00:00:00 ora_vkrm_testsid root 3792 1241 0 23:04 ? 00:00:00 sshd: oracle [priv] oracle 3801 3792 0 23:04 ? 00:00:00 sshd: oracle@pts/0 oracle 3806 3801 0 23:04 pts/0 00:00:00 -bash oracle 3914 1 0 23:06 ? 00:00:00 ora_j000_testsid oracle 3916 1 0 23:06 ? 00:00:00 ora_j001_testsid oracle 3926 3806 0 23:07 pts/0 00:00:00 ps -ef oracle 3927 3806 0 23:07 pts/0 00:00:00 grep --color=auto ora [oracle@zm-centos7 ~]$ 

 

最后,确认自启动成功。

 

1. 环境准备

1.1 系统

操作系统:CentOS 7(64位)

1.2 工具/软件

已安装完成的Oracle11g(64位); 
创建数据库实例,本文中数据库实例名:test;$ORACLE_SID:testsid

2. 方法/步骤

2.1 配置/etc/oratab

以root身份登录到linux系统,编辑/etc/oratab文件,找到 
testsid:/data/oracle/product/11.2.0/db_1:N 
,改为 
testsid:/data/oracle/product/11.2.0/db_1:Y 
注意:/data/oracle/product/11.2.0/db_1为安装的$ORACLE_HOME,根据情况自行修改路径。

[oracle@zm-centos7 ~]$ su   #切换到root
Password:                   #输入root密码
[root@zm-centos7 oracle]# vim /etc/oratab
[root@zm-centos7 oracle]# cat /etc/oratab
#
tsid:/data/oracle/product/11.2.0/db_1:N


# This file is used by ORACLE utilities.  It is created by root.sh
# and updated by the Database Configuration Assistant when creating # a database. # A colon, ':', is used as the field terminator. A new line terminates # the entry. Lines beginning with a pound sign, '#', are comments. # # Entries are of the form: # $ORACLE_SID:$ORACLE_HOME:<N|Y>: # # The first and second fields are the system identifier and home # directory of the database respectively. The third filed indicates # to the dbstart utility that the database should , "Y", or should not, # "N", be brought up at system boot time. # # Multiple entries with the same $ORACLE_SID are not allowed. # # testsid:/data/oracle/product/11.2.0/db_1:Y [root@zm-centos7 oracle]#

 

2.2 配置/etc/rc.d/rc.local

添加如下行: 
su oracle -lc “/data/oracle/product/11.2.0/db_1/bin/lsnrctl start” 
su oracle -lc /data/oracle/product/11.2.0/db_1/bin/dbstart 
其中第一行因为lsnrctl之后有空格,需要引号,第二行加不加引号都可以。修改完保存退出即可。

代码如下:

[root@zm-centos7 /]# vim /etc/rc.d/rc.local
[root@zm-centos7 /]# cat /etc/rc.d/rc.local
#!/bin/bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file. # # In contrast to previous versions due to parallel execution during boot # this script will NOT be run after all other services. # # Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure # that this script will be executed during boot. su oracle -lc "/data/oracle/product/11.2.0/db_1/bin/lsnrctl start" su oracle -lc /data/oracle/product/11.2.0/db_1/bin/dbstart touch /var/lock/subsys/local # mount -a [root@zm-centos7 /]#

 

如果是在以前的centos版本中,这样就可以了。但是centos7 的/etc/rc.local不会开机执行,认真查看/etc/rc.local文件的内容就发现问题的原因了

[root@zm-centos7 /]# cat /etc/rc.d/rc.local
#!/bin/bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file. # # In contrast to previous versions due to parallel execution during boot # this script will NOT be run after all other services. # # Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure # that this script will be executed during boot. 

 

翻译一下:

这个文件是为了兼容性的问题而添加的。 
强烈建议创建自己的systemd服务或udev规则来在开机时运行脚本而不是使用这个文件。 
与以前的版本引导时的并行执行相比较,这个脚本将不会在其他所有的服务后执行。 
请记住,你必须执行“chmod +x /etc/rc.d/rc.local”来确保确保这个脚本在引导时执行。

查看一下/etc/rc.d/rc.local的权限

[root@zm-centos7 /]# ll /etc/rc.d/rc.local
-rw-r--r-- 1 root root 484 Oct 11 17:17 /etc/rc.d/rc.local
  • 1
  • 2

发现没有执行权限,按照说明的内容执行命令:

[root@zm-centos7 bin]# chmod +x /etc/rc.d/rc.local
[root@zm-centos7 bin]# reboot     #重启机器,确认结果

2.3 重启机器,确认自启动结果

以oracle用户,打开一个终端:

[oracle@zm-centos7 ~]$ lsnrctl status   # 查看监听状态

LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 11-OCT-2017 23:05:06 Copyright (c) 1991, 2009, Oracle. All rights reserved. Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))) STATUS of the LISTENER ------------------------ Alias LISTENER Version TNSLSNR for Linux: Version 11.2.0.1.0 - Production Start Date 11-OCT-2017 23:02:22 Uptime 0 days 0 hr. 2 min. 45 sec Trace Level off Security ON: Local OS Authentication SNMP OFF Listener Parameter File /data/oracle/product/11.2.0/db_1/network/admin/listener.ora Listener Log File /data/oracle/diag/tnslsnr/zm-centos7/listener/alert/log.xml Listening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))) Services Summary... Service "test" has 1 instance(s). Instance "testsid", status READY, has 1 handler(s) for this service... Service "testsidXDB" has 1 instance(s). Instance "testsid", status READY, has 1 handler(s) for this service... The command completed successfully 

 

查看oracle服务状态

[oracle@zm-centos7 ~]$ ps -ef |grep ora
oracle    3053     1  0 23:02 ?        00:00:00 /data/oracle/product/11.2.0/db_1/bin/tnslsnr LISTENER -inherit
oracle 3283 1 0 23:03 ? 00:00:00 ora_pmon_testsid oracle 3285 1 0 23:03 ? 00:00:00 ora_vktm_testsid oracle 3289 1 0 23:03 ? 00:00:00 ora_gen0_testsid oracle 3291 1 0 23:03 ? 00:00:00 ora_diag_testsid oracle 3293 1 0 23:03 ? 00:00:00 ora_dbrm_testsid oracle 3295 1 0 23:03 ? 00:00:00 ora_psp0_testsid oracle 3297 1 0 23:03 ? 00:00:00 ora_dia0_testsid oracle 3299 1 0 23:03 ? 00:00:00 ora_mman_testsid oracle 3301 1 0 23:03 ? 00:00:00 ora_dbw0_testsid oracle 3303 1 0 23:03 ? 00:00:00 ora_lgwr_testsid oracle 3305 1 0 23:03 ? 00:00:00 ora_ckpt_testsid oracle 3307 1 0 23:03 ? 00:00:00 ora_smon_testsid oracle 3309 1 0 23:03 ? 00:00:00 ora_reco_testsid oracle 3311 1 0 23:03 ? 00:00:00 ora_mmon_testsid oracle 3313 1 0 23:03 ? 00:00:00 ora_mmnl_testsid oracle 3315 1 0 23:03 ? 00:00:00 ora_d000_testsid oracle 3317 1 0 23:03 ? 00:00:00 ora_s000_testsid oracle 3364 1 0 23:03 ? 00:00:00 ora_p000_testsid oracle 3366 1 0 23:03 ? 00:00:00 ora_p001_testsid oracle 3368 1 0 23:03 ? 00:00:00 ora_qmnc_testsid oracle 3563 1 0 23:03 ? 00:00:00 ora_cjq0_testsid oracle 3577 1 0 23:03 ? 00:00:00 ora_q000_testsid oracle 3579 1 0 23:03 ? 00:00:00 ora_q001_testsid oracle 3633 1 0 23:03 ? 00:00:00 ora_vkrm_testsid root 3792 1241 0 23:04 ? 00:00:00 sshd: oracle [priv] oracle 3801 3792 0 23:04 ? 00:00:00 sshd: oracle@pts/0 oracle 3806 3801 0 23:04 pts/0 00:00:00 -bash oracle 3914 1 0 23:06 ? 00:00:00 ora_j000_testsid oracle 3916 1 0 23:06 ? 00:00:00 ora_j001_testsid oracle 3926 3806 0 23:07 pts/0 00:00:00 ps -ef oracle 3927 3806 0 23:07 pts/0 00:00:00 grep --color=auto ora [oracle@zm-centos7 ~]$

 

确认自启动成功。

转载于:https://www.cnblogs.com/Justsoso-WYH/p/9558344.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值