Oracle 设置自启动

发布时间:2020-08-03 发布网站:编程之家
编程之家收集整理的这篇文章主要介绍了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,根据情况自行修改路径。

[[email protected] ~]$ su   #切换到root
Password:                   #输入root密码
[[email protected] oracle]# vim /etc/oratab  #编辑
[[email protected] 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 #修改位置 [[email protected] 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之后有空格,需要引号,第二行加不加引号都可以。修改完保存退出即可。

添加结果:

[[email protected] /]# vim /etc/rc.d/rc.local
[[email protected] /]# 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 [[email protected] /]# 

 

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

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

以root身份登录到系统,创建以oracle命名的文件 
[[email protected] ~]$ su 
Password: 
[[email protected] 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

执行结果正常:

[[email protected] 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. [[email protected] 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

执行结果:

[[email protected] 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用户,打开一个终端:

[[email protected] ~]$ 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",has 1 handler(s) for this service... The command completed successfully 

 

查看oracle服务状态

[[email protected] ~]$ 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: [email protected]/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 [[email protected] ~]$ 

 

最后,确认自启动成功。

 

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,根据情况自行修改路径。

[[email protected] ~]$ su   #切换到root
Password:                   #输入root密码
[[email protected] oracle]# vim /etc/oratab
[[email protected] 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,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 [[email protected] 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之后有空格,需要引号,第二行加不加引号都可以。修改完保存退出即可。

代码如下:

[[email protected] /]# vim /etc/rc.d/rc.local
[[email protected] /]# 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 [[email protected] /]#

 

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

[[email protected] /]# 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用户,打开一个终端:

[[email protected] ~]$ lsnrctl status   # 查看监听状态

LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 11-OCT-2017 23:05:06 Copyright (c) 1991,has 1 handler(s) for this service... The command completed successfully 

 

查看oracle服务状态

[[email protected] ~]$ 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: [email protected]/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 [[email protected] ~]$

 

确认自启动成功。

总结

以上是编程之家为你收集整理的Oracle 设置自启动全部内容,希望文章能够帮你解决Oracle 设置自启动所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您喜欢交流学习经验,点击链接加入编程之家官方QQ群:1065694478
编程之家官方公众号

微信公众号搜索 “ 程序精选 ” ,选择关注!

微信公众号搜索 “ 程序精选 ”
精选程序员所需精品干货内容!