ITPub博客

首页 > 数据库 > Oracle > 在Oracle中,如何让Oracle DB、监听和oem开机启动

在Oracle中,如何让Oracle DB、监听和oem开机启动

Oracle 作者:张梓彤 时间:2020-08-25 09:13:51 0 删除 编辑

Oracle 提供了伴随操作系统自动重启的功能,在 Windows 中,可以修改“我的电脑 --> 管理 --> 服务 -->OracleService$ORACLE_SID ”,或直接使用 Win+R 键打开运行窗口,输入 services.msc 即可打开服务,找到相应的 Oracle 服务,然后将其属性中的启动类型修改成自动。一般在 Windows 系统上安装完后会自动设置成自动。

对于 Linux/Unix 操作系统,如果想设置自动重启,那该如何操作呢?对此 Oracle 提供了 dbstart 命令用于启动,可以有 2 种方法来配置。

方法 1 :配置 Linux 的 service 服务

1.   修改 /etc/oratab


1[root@oracle ~]
#vim /etc/oratab

2orcl:/u01/app/oracle/product/11.2.0/dbhome_1:Y      #将N改为Y

文件 /etc/oratab 由 root.sh 脚本创建,在用 DBCA 创建实例时也会更新这个文件。当 $ORACLE_SID:$ORACLE_HOME:<N|Y> 设置为 Y 时,允许实例自启动,当设置为 N 时,则不允许自启动。这个文件里的配置仅仅起一个开关的作用,其并不会具体的执行启动和关闭,具体的操作由 $ORACLE_HOME/bin/dbstart 和 dbshut 脚本来实现。这 2 个脚本在执行时会检查 /etc/oratab 文件里的配置,为 Y 时才能继续执行。

2.   修改 $ORACLE_HOME/bin/dbstart 和 $ORACLE_HOME/bin/dbshut


1[root@oracle ~]
#vim $ORACLE_HOME/bin/dbstart

2[root@oracle ~] #vim $ORACLE_HOME/bin/dbshut
3ORACLE_HOME_listener=$ORACLE_HOME ($1改为$ORACLE_HOME)

ORACLE_HOME_ listener 的位置: Oracle 11g 的 dbstart 在第 80 行, dbshut 文件中在第 50 行。

3.   建立启动脚本

使用 root 用户创建脚本:

[root@oracle ~]#vim /etc/rc.d/init.d/oracle


 1
#!/bin/bash 

2 # chkconfig: 2345 99 10 
3 # description: Startup Script for oracle Databases 
4 # /etc/rc.d/init.d/oracle
5
6export ORACLE_BASE=/u01/app/oracle/
7export ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1
8export PATH=$PATH:$ORACLE_HOME/bin
9export ORACLE_UNQNAME=PROD1
10
11echo " " >> /var/log/oraclelog
12echo `date +'%Y-%m-%d %H:%M:%S'` >> /var/log/oraclelog
13
14case "$1" in
15 start)
16echo  "-----startup oracle-----" >> / var/ log/oraclelog
17su  oracle -c  "$ORACLE_HOME/bin/dbstart"
18su  oracle -c  "$ORACLE_HOME/bin/emctl start dbconsole"
19touch / var/ lock/subsys/ oracle
20echo  `date +'%Y-%m-%d %H:%M:%S'` >> / var/ log/oraclelog
21echo  "-----startup oracle successful-----" >> / var/ log/oraclelog
22echo  "OK" 
23;;
24
25 stop)
26echo  "-----shutdown oracle-----" >> / var/ log/oraclelog
27su  oracle -c  "$ORACLE_HOME/bin/dbshut"
28su  oracle -c  "$ORACLE_HOME/bin/emctl stop dbconsole"
29rm -f / var/ lock/subsys/ oracle
30echo  `date +'%Y-%m-%d %H:%M:%S'` >> / var/ log/oraclelogg
31echo  "-----shutdown oracle successful-----" >> / var/ log/oraclelog
32echo  "OK" 
33;;
34
35restart)
36echo " -----shutdown oracle-----" >> /var/log/oraclelog
37su oracle -c "$ORACLE_HOME/bin/dbshut"
38su oracle -c "$ORACLE_HOME/bin/emctl  stop dbconsole "
39rm -f /var/lock/subsys/oracle
40echo `date +'%Y-%m-%d %H:%M:%S'` >> /var/log/oraclelog
41echo "
-----shutdown oracle successful-----" >> /var/log/oraclelog
42
43echo  "-----startup oracle-----" >> / var/ log/oraclelog
44su  oracle -c  "$ORACLE_HOME/bin/dbstart"
45su  oracle -c  "$ORACLE_HOME/bin/emctl start dbconsole"
46touch / var/ lock/subsys/ oracle
47echo  `date +'%Y-%m-%d %H:%M:%S'` >> / var/ log/oraclelog
48echo  "-----startup oracle successful-----" >> / var/ log/oraclelog
49echo  "OK" 
50;;
51
52*)
53echo "Usage: 'basename $0'  start| stop|restart " 
54exit 1
55esac
56exit 0
57


4.   给脚本设置权限


1[root@oracle ~]
# chmod 755 /etc/rc.d/init.d/oracle


5.   建立服务


1[root@oracle ~]
# chkconfig --add oracle

2[root@oracle ~] # chkconfig oracle on
3[root@oracle ~] # chkconfig --list oracle
4oracle          0:off   1:off   2:on    3:on    4:on    5:on    6:off


6.   检查是否生效

先使用 root 用户测试服务是否生效:


1[root@edsir4p1 ~]
# service oracle stop

2[root@edsir4p1 ~] # service oracle start
3[root@edsir4p1 ~] # service oracle restart


再重启 OS ,验证是否生效。

方法 2 :配置 /etc/rc.d/rc.local 文件

在配置了 /etc/oratab 和修改了 dbstart 、 dbshut 文件后,然后 将以下脚本添加 到 /etc/rc.d/rc.local 或 /etc/rc.local 文件中 (/etc/rc.local 是 /etc/rc.d/rc.local 的软连接文件) :


1export ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1

2su oracle -c $ORACLE_HOME/bin/dbstart
3export ORACLE_UNQNAME=PROD1
4su oracle -c "$ORACLE_HOME/bin/emctl  start dbconsole "
5

若环境中没有创建 EM ,则可以不用添加 ORACLE_UNQNAME ,和 emctl 这 2 行,最后就可以重启OS做测试工作了。

需要注意的是,在CentOS7 中, /etc/rc.d/rc.local 的权限被降低了,所以需要执行如下命令赋予其可执行权限:


1chmod +x /etc/rc.d/rc.local

对于这 2 种方法,需要注意的几个问题:

1.  多个实例都会自动重启。

2.  监听也会自动重启。

3.  重启的详细日志为: $ORACLE_HOME/shutdown.log 和 $ORACLE_HOME/startup.log 。

4.  oracle 用户的环境变量可以不用配置。

5.  ORACLE_UNQNAME 的作用是设置 EM 的环境变量, emctl 是启动 OEM ,若没有则可以不用设置。

6.  ORACLE_HOME 的作用是设置数据库监听的环境变量。

7.  对于ASM 、 RAC 环境,只需要将数据库资源注册的 CRS 中,即可实现开机启动。


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31483620/viewspace-2714371/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2017-08-18

  • 博文量
    10
  • 访问量
    6812