Oracle设置DB、监听和EM开机启动的方法


Posted in Oracle onApril 25, 2021

一、Windows系统

Oracle提供了随操作系统启动而启动的功能,在Windows和Linux中,分别有不同的设置方法。

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

Oracle设置DB、监听和EM开机启动的方法

二、Linux系统

对于Linux/Unix操作系统,如果想设置自动重启,那么该如何操作呢?对此Oracle提供了dbstart命令用于启动。

首先,第一步,需要修改/etc/oratab文件,将N修改为Y

[root@oracle ~]# vim /etc/oratab
LHR11G:/u01/app/oracle/product/11.2.0.4/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种办法:

方法1:配置/etc/rc.d/rc.local文件(推荐)

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

cat >> /etc/rc.d/rc.local <<"EOF"
# 重启DB
export ORACLE_HOME=/u01/app/oracle/product/11.2.0.4/dbhome_1
su oracle -c "$ORACLE_HOME/bin/dbstart $ORACLE_HOME"

# 重启EM
export ORACLE_UNQNAME=LHR11G
su oracle -c "$ORACLE_HOME/bin/emctl start dbconsole"
EOF

该方法需要注意以下问题:
1、若环境中没有创建EM,则可以不用添加ORACLE_UNQNAME和emctl这2行

2、从Oracle 12c开始,由于EMDE(Enterprise Manager Database Express)替代了原有的EMDC(Enterprise Manager Database Control),所以,不再单独设置EM相关内容,只需要配置DB即可,例如:

cat >> /etc/rc.d/rc.local <<"EOF"
# 重启DB
export ORACLE_HOME=/u01/app/oracle/product/12.1.0.2/dbhome_1
su oracle -c "$ORACLE_HOME/bin/dbstart $ORACLE_HOME"
EOF

3、在CentOS 7中,/etc/rc.d/rc.local的权限被降低了,所以需要执行如下命令赋予其可执行权限:

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

最后就可以重启OS做测试工作了。

方法2:配置service服务

1. 建立启动脚本

使用root用户创建脚本/etc/rc.d/init.d/oracle,脚本内容如下,注意修改第6-9行的相关内容:

#!/bin/bash 
# chkconfig: 2345 99 10 
# description: Startup Script for oracle Databases 
# /etc/rc.d/init.d/oracle

export ORACLE_BASE=/u01/app/oracle/
export ORACLE_HOME=/u01/app/oracle/product/11.2.0.4/dbhome_1
export PATH=$PATH:$ORACLE_HOME/bin
export ORACLE_UNQNAME=LHR11G

echo " " >> /var/log/oraclelog
echo `date +'%Y-%m-%d %H:%M:%S'` >> /var/log/oraclelog

case "$1" in
start)
echo "-----startup oracle-----" >> /var/log/oraclelog
su oracle -c "$ORACLE_HOME/bin/dbstart"
su oracle -c "$ORACLE_HOME/bin/emctl start dbconsole"
touch /var/lock/subsys/oracle
echo `date +'%Y-%m-%d %H:%M:%S'` >> /var/log/oraclelog
echo "-----startup oracle successful-----" >> /var/log/oraclelog
echo "OK" 
;;

stop)
echo "-----shutdown oracle-----" >> /var/log/oraclelog
su oracle -c "$ORACLE_HOME/bin/dbshut"
su oracle -c "$ORACLE_HOME/bin/emctl stop dbconsole"
rm -f /var/lock/subsys/oracle
echo `date +'%Y-%m-%d %H:%M:%S'` >> /var/log/oraclelogg
echo "-----shutdown oracle successful-----" >> /var/log/oraclelog
echo "OK" 
;;

restart)
echo "-----shutdown oracle-----" >> /var/log/oraclelog
su oracle -c "$ORACLE_HOME/bin/dbshut"
su oracle -c "$ORACLE_HOME/bin/emctl stop dbconsole"
rm -f /var/lock/subsys/oracle
echo `date +'%Y-%m-%d %H:%M:%S'` >> /var/log/oraclelog
echo "-----shutdown oracle successful-----" >> /var/log/oraclelog

echo "-----startup oracle-----" >> /var/log/oraclelog
su oracle -c "$ORACLE_HOME/bin/dbstart"
su oracle -c "$ORACLE_HOME/bin/emctl start dbconsole"
touch /var/lock/subsys/oracle
echo `date +'%Y-%m-%d %H:%M:%S'` >> /var/log/oraclelog
echo "-----startup oracle successful-----" >> /var/log/oraclelog
echo "OK" 
;;

*)
echo "Usage: 'basename $0' start|stop|restart" 
exit 1
esac
exit 0

2. 给脚本设置权限

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

3.建立服务

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

4.检查是否生效

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

[root@oracle ~]# service oracle stop
[root@oracle ~]# service oracle start
[root@oracle ~]# service oracle restart

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

三、Oracle 18c版本

从Oracle 18c开始,对于单机环境来说,可以使用rpm包来直接安装Oracle软件,在安装完成后,会生成一个脚本,类似 /etc/init.d/oracledb_$ORACLE_SID-$ORACLE_VERSION,该脚本可以用来启动和关闭Oracle软件,所以也可以使用该脚本来直接配置开机启动:

cat >> /etc/rc.d/rc.local <<"EOF"
/etc/init.d/oracledb_ORCLCDB-18c start
/etc/init.d/oracledb_lhrsdb-18c start
EOF

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

重启OS,测试通过。

四、总结

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

  1. 若有多个实例,那么多个实例都会自动启动。
  2. 监听也会自动启动。
  3. 若数据库小于18c,则重启的详细日志为:$ORACLE_HOME/shutdown.log$ORACLE_HOME/startup.log。从Oracle 18c开始,dbstart的日志文件在$ORACLE_HOME/rdbms/log/startup.log
  4. oracle用户的环境变量可以不用配置。
  5. ORACLE_UNQNAME的作用是设置EM的环境变量,emctl是启动OEM,若没有则可以不用设置。
  6. ORACLE_HOME的作用是设置数据库监听的环境变量。
  7. 对于Oracle 10.2.0.1来说,监听不能自动启动。需要修改脚本$ORACLE_HOME/bin/dbstart,修改ORACLE_HOME_LISTNER=/ade/vikrkuma_new/oracle为“ORACLE_HOME_LISTNER=$1
  8. 对于ASM、RAC环境,只需要将数据库资源注册到CRS中,即可实现开机启动。
  9. 从Oracle 18c开始,可以使用脚本 /etc/init.d/oracledb_$ORACLE_SID-$ORACLE_VERSION来启动Oracle数据库。
  10. 以上方法在Oracle 10g、11g、12cR1(12.1.0.2)、12cR2(12.2.0.1)、18c(12.2.0.2)和19c(12.2.0.3)中测试通过。

到此这篇关于Oracle设置DB、监听和EM开机启动的方法的文章就介绍到这了,更多相关Oracle设置DB、监听和EM开机启动内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Oracle 相关文章推荐
Oracle设置DB、监听和EM开机启动的方法
Apr 25 Oracle
oracle覆盖导入dmp文件的2种方法
May 21 Oracle
Oracle11g R2 安装教程完整版
Jun 04 Oracle
Oracle创建只读账号的详细步骤
Jun 07 Oracle
Oracle以逗号分隔的字符串拆分为多行数据实例详解
Jul 16 Oracle
RPM包方式安装Oracle21c的方法详解
Aug 23 Oracle
详解Oracle数据库中自带的所有表结构(sql代码)
Nov 20 Oracle
Oracle中update和select 关联操作
Jan 18 Oracle
排查并解决Oracle sysaux表空间异常增长
Apr 20 Oracle
oracle数据库去除重复数据
May 20 Oracle
Oracle删除归档日志及添加定时任务
Jun 28 Oracle
Oracle笔记
Apr 05 #Oracle
oracle DGMGRL ORA-16603报错的解决方法(DG Broker)
Apr 06 #Oracle
ORACLE数据库对long类型字段进行模糊匹配的解决思路
Oracle 数据仓库ETL技术之多表插入语句的示例详解
oracle表分区的概念及操作
Apr 24 #Oracle
mybatis使用oracle进行添加数据的方法
Apr 27 #Oracle
使用springboot暴露oracle数据接口的问题
You might like
php巧获服务器端信息
2006/12/06 PHP
ThinkPHP模板Switch标签用法示例
2014/06/30 PHP
详解PHP数组赋值方法
2015/11/07 PHP
thinkphp5 模型实例化获得数据对象的教程
2019/10/18 PHP
PHP常用函数之格式化时间操作示例
2019/10/21 PHP
jquery学习笔记二 实现可编辑的表格
2010/04/09 Javascript
jquery+json实现数据列表分页示例代码
2013/11/15 Javascript
JS实现点击文字对应DIV层不停闪动效果的方法
2015/03/02 Javascript
javascript实现网页字符定位的方法
2015/07/14 Javascript
jQuery实现可以编辑的表格实例详解【附demo源码下载】
2016/07/09 Javascript
js实现HashTable(哈希表)的实例分析
2016/11/21 Javascript
js css3实现图片拖拽效果
2017/03/04 Javascript
Vue.js中组件中的slot实例详解
2017/07/17 Javascript
使用jQuery 操作table 完成单元格合并的实例
2017/12/27 jQuery
详解create-react-app 自定义 eslint 配置
2018/06/07 Javascript
Vue-不允许嵌套式的渲染方法
2018/09/13 Javascript
7个好用的JavaScript技巧分享(译)
2019/05/07 Javascript
JavaScript使用面向对象实现的拖拽功能详解
2019/06/12 Javascript
[01:04:02]DOTA2-DPC中国联赛 正赛 Elephant vs IG BO3 第二场 1月24日
2021/03/11 DOTA
Python删除指定目录下过期文件的2个脚本分享
2014/04/10 Python
python3.4下django集成使用xadmin后台的方法
2017/08/15 Python
python快排算法详解
2019/03/04 Python
2分钟教你实现环形/扇形菜单(基础版)
2020/01/15 HTML / CSS
a标签下载链接的简单实现
2016/09/13 HTML / CSS
网站性能延迟加载图像的五种技巧(小结)
2020/08/13 HTML / CSS
美国电子元器件分销商:Newark element14
2018/01/13 全球购物
Book Depository美国:全球领先的专业网上书店之一
2019/08/14 全球购物
荷兰家电销售网站:Welhof
2020/12/08 全球购物
法律工作求职自荐信
2013/10/31 职场文书
经营理念标语
2014/06/21 职场文书
2014学习优秀共产党员先进事迹思想汇报
2014/09/14 职场文书
普通党员个人对照检查材料
2014/09/18 职场文书
学雷锋献爱心倡议书
2015/04/27 职场文书
金正昆讲礼仪观后感
2015/06/11 职场文书
2016寒假社会实践心得体会范文
2015/10/09 职场文书
python tqdm用法及实例详解
2021/06/16 Python