如何启动oracle命令(Oracle-OracleDB监听和oem开机启动)(1)

1.Windows

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

如何启动oracle命令(Oracle-OracleDB监听和oem开机启动)(2)

Linux

对于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:23459910 3#description:StartupScriptfororacleDatabases 4#/etc/rc.d/init.d/oracle 5 6exportORACLE_BASE=/u01/app/oracle/ 7exportORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1 8exportPATH=$PATH:$ORACLE_HOME/bin 9exportORACLE_UNQNAME=PROD1 10 11echo"">>/var/log/oraclelog 12echo`date '%Y-%m-%d%H:%M:%S'`>>/var/log/oraclelog 13 14case"$1"in 15start) 16echo"-----startuporacle-----">>/var/log/oraclelog 17suoracle-c"$ORACLE_HOME/bin/dbstart" 18suoracle-c"$ORACLE_HOME/bin/emctlstartdbconsole" 19touch/var/lock/subsys/oracle 20echo`date '%Y-%m-%d%H:%M:%S'`>>/var/log/oraclelog 21echo"-----startuporaclesuccessful-----">>/var/log/oraclelog 22echo"OK" 23;; 24 25stop) 26echo"-----shutdownoracle-----">>/var/log/oraclelog 27suoracle-c"$ORACLE_HOME/bin/dbshut" 28suoracle-c"$ORACLE_HOME/bin/emctlstopdbconsole" 29rm-f/var/lock/subsys/oracle 30echo`date '%Y-%m-%d%H:%M:%S'`>>/var/log/oraclelogg 31echo"-----shutdownoraclesuccessful-----">>/var/log/oraclelog 32echo"OK" 33;; 34 35restart) 36echo"-----shutdownoracle-----">>/var/log/oraclelog 37suoracle-c"$ORACLE_HOME/bin/dbshut" 38suoracle-c"$ORACLE_HOME/bin/emctlstopdbconsole" 39rm-f/var/lock/subsys/oracle 40echo`date '%Y-%m-%d%H:%M:%S'`>>/var/log/oraclelog 41echo"-----shutdownoraclesuccessful-----">>/var/log/oraclelog 42 43echo"-----startuporacle-----">>/var/log/oraclelog 44suoracle-c"$ORACLE_HOME/bin/dbstart" 45suoracle-c"$ORACLE_HOME/bin/emctlstartdbconsole" 46touch/var/lock/subsys/oracle 47echo`date '%Y-%m-%d%H:%M:%S'`>>/var/log/oraclelog 48echo"-----startuporaclesuccessful-----">>/var/log/oraclelog 49echo"OK" 50;; 51 52*) 53echo"Usage:'basename$0'start|stop|restart" 54exit1 55esac 56exit0 57

4. 给脚本设置权限

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

5. 建立服务

1[root@oracle~]#chkconfig--addoracle 2[root@oracle~]#chkconfigoracleon 3[root@oracle~]#chkconfig--listoracle 4oracle0:off1:off2:on3:on4:on5:on6:off

6. 检查是否生效

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

1[root@edsir4p1~]#serviceoraclestop 2[root@edsir4p1~]#serviceoraclestart 3[root@edsir4p1~]#serviceoraclerestart

再重启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的软连接文件):

1exportORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1 2suoracle-c$ORACLE_HOME/bin/dbstart 3exportORACLE_UNQNAME=PROD1 4suoracle-c"$ORACLE_HOME/bin/emctlstartdbconsole" 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中,即可实现开机启动。

如何启动oracle命令(Oracle-OracleDB监听和oem开机启动)(3)

,