admin管理员组文章数量:1794759
Oracle 单实例如何开机自启动
作者 | JiekeXu
来源 |公众号 JiekeXu DBA之路(ID: JiekeXu_IT)
如需转载请联系授权 | (个人微信 ID:JiekeXu_DBA)
大家好,我是 JiekeXu,很高兴又和大家见面了,今天和大家一起来看看 Oracle 单实例如何开机自启动,欢迎点击上方蓝字“JiekeXu DBA之路”关注我的公众号,标星或置顶,更多干货第一时间到达!
在前面一文中,介绍了数据库主机重启排查的思路与方法,其中提到了一句数据库开机自启动的事情,有朋友问到这里就在唠叨几句,当你的数据库是 RAC 架构时,只要你停止集群件时使用 crsctl stop crs 停止,默认情况下数据库实例直接 abort 停止,重启主机 OS 后会伴随着 CRS 集群件自动启动;但如果当你 “SQLPLUS” 先进入到数据库中,使用 “shu immediate” 停止数据库实例后,在 crsctl stop crs 停止集群件,则重启主机无法拉起实例,需要手动启动,所以一般情况下我都会直接 crsctl stop crs 直接停止集群件。
这里呢,先插播一条消,如果您曾经读到过我的一半篇文章,并对您有那么一丁点儿的帮助,那么请投出您宝贵的一票,谢谢了。路过的小伙伴们,我正在参加“墨天轮 2022 年度优秀原创作者评选”活动,我的头像和名字 JiekeXu 还是比较好找的,每天可以投 5 票,下面链接进去点 5 下就好,这样你每天也可以获得 5 墨值,先谢过了。复制下方链接到浏览器或者点击阅读原文:www.modb.pro/event/771/4347
好了,今天主要说一说单机文件系统下的 Oracle 数据库实例该如何开机自启动。这里借助 Oracle 自带的 dbstart 和 dbshut 两个脚本进行配置。
1)、首先使用 Oracle 用户修改 /etc/oratab 文件 # vim /etc/oratab 找到最后一行:test:/u01/app/oracle/product/11.2.0/db_1:N 这一行,改为:
test:/u01/app/oracle/product/11.2.0/dbhome_1:Y也就是将最后的 N 改为 Y,意思是将不允许自动启动改为允许自动启动。
2)、使用 Oracle 用户修改 oracle 的 dbstart 文件 cd $ORACLE_HOME/bin [oracle@JiekeXu ~]$ cd $ORACLE_HOME/bin [oracle@JiekeXu bin]$ ll dbs* -rwxr-x---. 1 oracle oinstall 6072 Jan 1 2000 dbshut -rwxr-x---. 1 oracle oinstall 13839 Jan 1 2000 dbstart [oracle@JiekeXu bin]$ cp dbstart dbstart_bak [oracle@JiekeXu bin]$ vi dbstart将 ORACLE_HOME_LISTNER=1 修改为 ORACLE_HOME_LISTNER=ORACLE_HOME
注意:此脚本可启动数据库实例和监听,无需在单独处理监听。
另外如果数据库是 19c 的话,需要修改如下两处 $ORACLE_HOME。
vi dbstart
将 ORACLE_HOME_LISTNER=1 修改为 ORACLE_HOME_LISTNER=ORACLE_HOME
将 ORACLE_HOME=1 修改为 ORACLE_HOME=ORACLE_HOME
3)、使用 root 将 dbstart 加入开机自启动,修改 /etc/rc.d/rc.local 文件 vi /etc/rc.d/rc.local su - oracle -lc /u01/app/oracle/product/11.2.0/dbhome_1/bin/dbstart 上边的路径根据实际情况修改。我的 19c 路径如下:
su - oracle -lc /u01/app/oracle/product/19.0.0/dbhome_1/bin/dbstart 4)、给 /etc/rc.d/rd.local 文件添加可执行权限注意 RHEL7、centos7 中为了安全默认取消了该文件的可执行权限
[root@JiekeXu ~]# ll /etc/rc.d/rc.local -rw-r--r-- 1 root root 541 Jul 19 19:01 /etc/rc.d/rc.local [root@JiekeXu ~]# chmod u+x /etc/rc.d/rc.local [root@JiekeXu ~]# ll /etc/rc.d/rc.local -rwxr--r-- 1 root root 541 Jul 19 19:01 /etc/rc.d/rc.local 5)、reboot 重启服务器验证重启前:
重启后:
注意:这里仅验证了 11g,12c,19c,其他版本没有验证,且 12c 环境和 11g 一样,只需要将 1 改为 ORACLE_HOME 即可。
Oracle 数据库实例及监听均已成功启动。
如果你 shell 写得不错,当然也可以自己写脚本,这里可参考:
1、修改 /etc/oratab 文件 [root@localhost oracle]# vim /etc/oratab 找到:JiekeXu:/u01/app/oracle/product/12.2.0/dbhome_1:N 修改为:JiekeXu:/u01/app/oracle/product/12.2.0/dbhome_1:Y 2、新建 Oracle 服务自启动脚本 vim /etc/init.d/oracle #!/bin/sh # chkconfig: 2345 61 61 # description: Oracle 11g R2 AutoRun Servimces # /etc/init.d/oracle # # Run-level Startup script for the Oracle Instance, Listener, and # Web Interface export ORACLE_BASE=/u01/app/oracle #oracle 安装位置 export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1 #Oracle 安装路径 export ORACLE_SID=JiekeXu export PATH=$PATH:$ORACLE_HOME/bin ORA_OWNR="oracle" # if the executables do not exist -- display error if [ ! -f $ORACLE_HOME/bin/dbstart -o ! -d $ORACLE_HOME ] then echo "Oracle startup: cannot start" exit 1 fi # depending on parameter -- startup, shutdown, restart # of the instance and listener or usage display case "$1" in start) # Oracle listener and instance startup su $ORA_OWNR -lc $ORACLE_HOME/bin/dbstart echo "Oracle Start Succesful!OK." ;; stop) # Oracle listener and instance shutdown su $ORA_OWNR -lc $ORACLE_HOME/bin/dbshut echo "Oracle Stop Succesful!OK." ;; reload|restart) $0 stop $0 start ;; *) echo $"Usage: `basename $0` {start|stop|reload|reload}" exit 1 esac exit 0 3、检查脚本能否执行 [root@localhost oracle]# /etc/init.d/oracle start #启动oracle脚本 [root@localhost oracle]# /etc/init.d/oracle stop #关闭oracle脚本 [root@localhost oracle]# /etc/init.d/oracle restart #重启oracle脚本 4、添加执行权限并建立链接 更改 oracle 脚本的执行权限 [root@localhost oracle]# chmod a+x /etc/init.d/oracle 建立链接,将启动脚本添加到系统服务并设置自启动 [root@localhost oracle]# chkconfig --add oracle 当这个命令被执行的时候,会去脚本文件 oracle 中寻找# chkconfig: 2345 61 61这行注释,并解析这行注释,根据解析结果分别在 /etc/rc.d/rc2.d /etc/rc.d/rc3.d /etc/rc.d/rc4.d /etc/rc.d/rc5.d 中创建符号连接文件 S61oracle,此文件在系统启动时根据运行级别执行,此文件是指向 /etc/init.d/oracle 文件。启动时系统向此文件发送一个 start 参数,执行 oracle 文件中的 start 分支。另外还会在 /etc/rc.d/rc0.d /etc/rc.d/rc1.d /etc/rc.d/rc6.d 中创建符号连接文件 K61oracle,此文件在系统关闭时执行,此文件也指向 /etc/init.d/oracle 文件,关闭时系统向此文件发送一个 stop 参数,执行 oracle文件中的 stop 分支。 # chkconfig: 2345 61 61 # 表明脚本应该在运行级 2, 3, 4, 5 启动,启动优先权为 61,停止优先权为 61。 修改服务运行等级(虽然脚本里写过,但还是重新设置一下),可以自行设置 oracle 脚本的运行级别 [root@localhost oracle]# chkconfig --level 2345 oracle on 说明:设置oracle脚本在运行级别为2、3、4、5时,都是 on(开启)状态,off 为关闭 查看 oracle 自动启动设置 [root@localhost oracle]# chkconfig –list oracle Oracle 0:off 1:off 2:on 3:on 4:on 5:on 6:off 等级0表示:表示关机 等级1表示:单用户模式 等级2表示:无网络连接的多用户命令行模式 等级3表示:有网络连接的多用户命令行模 等级4表示:不可用 等级5表示:带图形界面的多用户模式 等级6表示:重新启动 手动创建符号链接文件(执行效果和执行 chkconfig --add oracle 是一样,作为知识笔记记录,可以不执行) [root@localhost oracle]# ln –s /etc/rc.d/init.d/oracle /etc/rc0.d/K61oracle [root@localhost oracle]# ln –s /etc/rc.d/init.d/oracle /etc/rc1.d/K61oracle [root@localhost oracle]# ln –s /etc/rc.d/init.d/oracle /etc/rc2.d/S61oracle [root@localhost oracle]# ln –s /etc/rc.d/init.d/oracle /etc/rc3.d/S61oracle [root@localhost oracle]# ln –s /etc/rc.d/init.d/oracle /etc/rc4.d/S61oracle [root@localhost oracle]# ln –s /etc/rc.d/init.d/oracle /etc/rc5.d/S61oracle [root@localhost oracle]# ln –s /etc/rc.d/init.d/oracle /etc/rc6.d/K61oracle 5、oracle 的启动或关闭管理 ## 启动 [root@localhost oracle]# service oracle start ## 停止 [root@localhost oracle]# service oracle stop ## 重启 [root@localhost oracle]# service oracle restart另外,这里再说一句 SQLPLUS 命令提示符上下翻转、回退等操作的配置步骤。
6)、安装 rlwrap 上下键翻转历史命令安装 rlwrap 包实现 sqlplus 历史命令上下翻转、回退等操作。
先使用 yum 安装 readline 然后编译安装 rlwrap
然后到 github 下载 github/hanslub42/rlwrap/releases。目前为止,这个包最新的版本已经是 0.46.1 的版本了。
然后上传解压安装。
# yum install -y readline* # tar -zxvf rlwrap-0.45.2.tar.gz # cd rlwrap-0.45.2 # ./configure && make && make install注意了,这里一定要先配置好 yum 源安装 readline 包成功后才可编译安装 rlwrap,一定要成功编译安装。
然后配置如下 oracle 用户环境变量
# su - oracle $ cat <<EOF>>/home/oracle/.bash_profile alias sqlplus='rlwrap sqlplus' alias rman='rlwrap rman' alias lsnrctl='rlwrap lsnrctl' alias asmcmd='rlwrap asmcmd' alias adrci='rlwrap adrci' alias ggsci='rlwrap ggsci' alias sys='sqlplus / as sysdba' stty erase ^H EOF $ . .bash_profile --生效 7)、配置 glogin 登录提示符 cd $ORACLE_HOME/sqlplus/admin vim glogin.sql set linesize 250 set pagesize 9999 col Name format a80 col owner format a30 col file_name for a88 set termout off ALTER SESSION SET nls_date_format = 'yyyy-mm-dd HH24:MI:SS'; set termout on set serveroutput on size 1000000 set long 2000 set time on set timing on define _editor=vi set sqlprompt "_user'@'_connect_identifier> "全文完,希望可以帮到正在阅读的你,如果觉得此文对你有帮助,可以分享给你身边的朋友,同事,你关心谁就分享给谁,一起学习共同进步~~~
欢迎关注我的公众号【JiekeXu DBA之路】,第一时间一起学习新知识!
————————————————————————————公众号:JiekeXu DBA之路CSDN :blog.csdn/JiekeXu墨天轮:www.modb.pro/u/4347腾讯云:cloud.tencent/developer/user/5645107————————————————————————————
Oracle 表碎片检查及整理方案 OGG|Oracle GoldenGate 基础 2021 年公众号历史文章合集整理 2020 年公众号历史文章合集整理 Oracle 19c RAC 遇到的几个问题 OGG|Oracle 数据迁移后比对一致性 利用 OGG 迁移 Oracle11g 到 19C OGG|Oracle GoldenGate 微服务架构 Oracle 查询表空间使用率超慢问题一则 国产数据库|TiDB 5.4 单机快速安装初体验 Oracle ADG 备库停启维护流程及增量恢复Linux 环境搭建 MySQL8.0.28 主从同步环境
点击下方阅读原文可以为我投票,谢谢!
版权声明:本文标题:Oracle 单实例如何开机自启动 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1686506641a75229.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论