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

来源:这里教程网 时间:2026-03-03 16:08:46 作者:

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 中,即可实现开机启动。

相关推荐