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 DGMGRL ORA-16603报错的解决方法(DG Broker)
Apr 06 Oracle
mybatis使用oracle进行添加数据的方法
Apr 27 Oracle
SQL模糊查询报:ORA-00909:参数个数无效问题的解决
Jun 21 Oracle
快速学习Oracle触发器和游标
Jun 30 Oracle
Oracle 触发器trigger使用案例
Feb 24 Oracle
oracle重置序列从0开始递增1
Feb 28 Oracle
排查并解决Oracle sysaux表空间异常增长
Apr 20 Oracle
清空 Oracle 安装记录并重新安装
Apr 26 Oracle
Oracle中DBLink的详细介绍
Apr 29 Oracle
ORACLE中dbms_output.put_line输出问题的解决过程
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
法兰绒滤网冲泡
2021/03/03 冲泡冲煮
ci检测是ajax还是页面post提交数据的方法
2014/11/10 PHP
php中get_cfg_var()和ini_get()的用法及区别
2015/03/04 PHP
php简单实现文件或图片强制下载的方法
2016/12/06 PHP
比较详细的关于javascript中void(0)的具体含义解释
2007/08/02 Javascript
学习从实践开始之jQuery插件开发 对话框插件开发
2012/04/26 Javascript
不使用XMLHttpRequest实现异步加载 Iframe和script
2012/10/29 Javascript
Underscore.js 的模板功能介绍与应用
2012/12/24 Javascript
Javascript中call的两种用法实例
2013/12/13 Javascript
AngularJS中的过滤器使用详解
2015/06/16 Javascript
Ionic默认的Tabs模板使用实例
2016/08/29 Javascript
利用jquery正则表达式在页面验证url网址输入是否正确
2017/04/04 jQuery
nodejs body-parser 解析post数据实例
2017/07/26 NodeJs
Electron中实现大文件上传和断点续传功能
2018/10/28 Javascript
angular4自定义表单控件[(ngModel)]的实现
2018/11/23 Javascript
从0到1搭建element后台框架优化篇(打包优化)
2019/05/12 Javascript
[01:48:04]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Elephant BO3 第一场 2月7日
2021/03/11 DOTA
python逐行读取文件内容的三种方法
2014/01/20 Python
最基础的Python的socket编程入门教程
2015/04/23 Python
python并发2之使用asyncio处理并发
2017/12/21 Python
Python实现字典的遍历与排序功能示例
2017/12/23 Python
Python 查找字符在字符串中的位置实例
2018/05/02 Python
有关Python的22个编程技巧
2018/08/29 Python
Python拼接字符串的7种方法总结
2018/11/01 Python
对matplotlib改变colorbar位置和方向的方法详解
2018/12/13 Python
Django 对象关系映射(ORM)源码详解
2019/08/06 Python
pytorch之ImageFolder使用详解
2020/01/06 Python
TENSORFLOW变量作用域(VARIABLE SCOPE)
2020/01/10 Python
美国嘻哈首饰购物网站:Hip Hop Bling
2016/12/30 全球购物
商场活动策划方案
2014/01/24 职场文书
我爱我校演讲稿
2014/05/21 职场文书
酒桌上的开场白
2015/06/01 职场文书
企业法人任命书
2015/09/21 职场文书
教师听课学习心得体会
2016/01/15 职场文书
html+css实现文字折叠特效实例
2021/06/02 HTML / CSS
Python必备技巧之函数的使用详解
2022/04/04 Python