Oracle 单实例如何开机自启动

news2024/12/25 12:44:41

1534670bf182c0d6434a58dcce09dc4c.gif

作者 | 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 墨值,先谢过了。复制下方链接到浏览器或者点击阅读原文:https://www.modb.pro/event/771/4347

4d92cc8e393c2fff9753322e8814ecc5.png

好了,今天主要说一说单机文件系统下的 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,意思是将不允许自动启动改为允许自动启动。

19ea0707c2d8aee0b2c8e9c82f4219e4.png

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

69de320607637e0e3b93e0220951e06e.png

注意:此脚本可启动数据库实例和监听,无需在单独处理监听。

另外如果数据库是 19c 的话,需要修改如下两处 $ORACLE_HOME。

vi dbstart

将 ORACLE_HOME_LISTNER=1 修改为 ORACLE_HOME_LISTNER=ORACLE_HOME

将 ORACLE_HOME=1 修改为 ORACLE_HOME=ORACLE_HOME

8ef2a31420e55269c18d41ff9132d42f.png

811ee704681094e32599849e8a54529d.png

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
上边的路径根据实际情况修改。

769536c9ed35cf3e76256e0b4ab478a3.png

我的 19c 路径如下:

su - oracle -lc /u01/app/oracle/product/19.0.0/dbhome_1/bin/dbstart

569640ae735c9bada88088ef2df731f8.png

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 重启服务器验证

重启前:

f5f9d6389b40d9bf3765cfdfa7b3c095.png

重启后:

265bea6446296cbad31020c107eb4e30.png

注意:这里仅验证了 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 下载 https://github.com/hanslub42/rlwrap/releases。
目前为止,这个包最新的版本已经是 0.46.1 的版本了。

95d5e3304892669a2936deaa616116d3.png

然后上传解压安装。

# yum install -y readline*
# tar -zxvf  rlwrap-0.45.2.tar.gz
# cd rlwrap-0.45.2
# ./configure && make && make install

bd8ff4f27729d61d8eea5434ed16cb44.png

注意了,这里一定要先配置好 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> "

a43ae9835b8ae65ff48c8724ed8f09e3.png

全文完,希望可以帮到正在阅读的你,如果觉得此文对你有帮助,可以分享给你身边的朋友,同事,你关心谁就分享给谁,一起学习共同进步~~~

欢迎关注我的公众号【JiekeXu DBA之路】,第一时间一起学习新知识!

————————————————————————————
公众号:JiekeXu DBA之路
CSDN :https://blog.csdn.net/JiekeXu
墨天轮:https://www.modb.pro/u/4347
腾讯云:https://cloud.tencent.com/developer/user/5645107
————————————————————————————

fdc66b804194282fd6355230e54c89ba.gif

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 主从同步环境

9541c9b19a9c144c21a495fcd65ad4ec.png

点击下方阅读原文可以为我投票,谢谢!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/126186.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

盘点JAVA程序猿必备的webserver

作为java工程师&#xff0c;除了必备的java编程能力&#xff0c;我们还需要些什么呢&#xff1f; 一般而言&#xff0c;要从工程师进化为构架师&#xff0c;一个合格的java工作者需要掌握一些关于构架的知识&#xff0c; 比如互联网的结构&#xff0c;服务器的建设&#xff0c…

PhotoShop入门

PhotoShop入门 零、文章目录 文章地址 个人博客-CSDN地址&#xff1a;https://blog.csdn.net/liyou123456789个人博客-GiteePages&#xff1a;https://bluecusliyou.gitee.io/techlearn 代码仓库地址 Gitee&#xff1a;https://gitee.com/bluecusliyou/TechLearnGithub&am…

JAVA结构、循环语句

一、 if选择结构 代码示例&#xff1a; int num 1;if (num 1) {System.out.println("壹");} else if (num 2) {System.out.println("贰");} else if (num 3) {System.out.println("参");}输出&#xff1a; 壹 二、switch结构 1.switch 会根…

HNU编译原理实验四cminus_compiler-2022-fall

前言&#xff1a;原本想认认真真把这个实验给完成的&#xff0c;但是当时时间太赶了&#xff0c;一周要做三个实验&#xff0c;所以这次实验基本都是抄的了&#xff0c;有些地方也抄的不明不白&#xff0c;不过懂不懂这个对课程学习的帮助并不是很大&#xff0c;毕竟这个实验的…

vue 弹窗 惯性滚动 加速滚动

惯性滚动组件 新建文件 components/scroll-viwe <template><div v-if"visiable"><div class"mapbox-result-scroll-hidden"><div class"mapbox-result-wrap" ref"resultWrap"><div class"mapbox-resu…

服务了可口可乐、海底捞、某头部商业银行,我有这些体会

我非常喜欢巴西队的内马尔&#xff0c;他曾说&#xff1a;“你可能会看到我一秒钟、一分钟、一天不开心&#xff0c;但第二天你会看到我的笑脸。” 在 Authing 工作两年多了&#xff0c;在这期间&#xff0c;我为可口可乐、海底捞、某头部商业银行等客户做了交付&#xff0c;在…

jq实现倒计时功能

效果如下&#xff1a; 代码如下&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>jq实现…

10 IO实例

IO 1 流 流可以认为是一条通道&#xff0c;它可以将数据从源端传送到目的地。 例如将程序中的某些数据写入文件&#xff0c;或将文件中的某些数据读入程序。 Java中数据的操作是以“流”的方式进行。 Java中的“流”是一个具体的Java对象&#xff0c;该对象提供一些方法进行…

组件的概念

文章目录组件&#xff1f;从UI层面看组件化组件&#xff1f; 等下&#xff0c;你有没有留意到我说了一个很关键的词&#xff0c;叫组件。组件&#xff1f;直观的理解组件是一个什么东西&#xff1f;可拼接&#xff0c;可组合&#xff0c;搭积木&#xff0c;乐高积木? 对&…

Springboot定时任务调度的实现原理

前言 源码的世界是一片汪洋大海&#xff0c;springboot的源码更是如此&#xff0c;虽然用的时候似乎很简单&#xff0c;然而正是因为其内部的设计巧妙、复杂&#xff0c;才造就了其使用上的简单易上手。罗马不是一天建起来的&#xff0c;要完全理解它也并非一时的事&#xff0c…

webdriver的尝试:一 【webdriver自动打开浏览器与页面】

文章目录Webdriver尝试使用步骤1&#xff1a;安装类库2&#xff1a;安装驱动3&#xff1a;配置环境3&#xff1a;编写脚本4&#xff1a;执行脚本Webdriver 网站地址 Selenium webdriver 简单介绍&#xff1a;webdriver是一个api和协议。支持多种语言。主要功能&#xff0c;通…

大米新闻微信小程序和Springboot新闻管理系统项目源码

介绍 本项目分为大米news小程序端和springboot新闻管理系统后台项目。小程序主要用来新闻展示&#xff0c;后台管理系统用于提供相关新闻API。 项目源码 参考&#xff1a;https://www.bilibili.com/video/BV1TD4y1j7g3/?spm_id_from333.337.search-card.all.click&vd_s…

day08 常用API

1.API 1.1 API概述-帮助文档的使用 什么是API ​ API (Application Programming Interface) &#xff1a;应用程序编程接口 java中的API ​ 指的就是 JDK 中提供的各种功能的 Java类&#xff0c;这些类将底层的实现封装了起来&#xff0c;我们不需要关心这些类是如何实现的&a…

两个链表的第一个公共结点

今天为大家带来一道题目&#xff1a; 这个题目先来看看我自己写的错误版本 public class Solution {public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) {ListNode tmp1pHead1;ListNode tmp2pHead2;while(pHead1!null&&pHead2!null){ListNode cur…

Axure8.0动态面板使用

Axure动态面板是最常使用的&#xff0c;今天我们就来详细介绍一下。 动态面板是Axure中一个非常强大的高级元件&#xff0c;用于实现多个状态的切换展示&#xff0c;可以将其看成一个容器&#xff0c;可以容纳多种不同状态&#xff0c;通过各种交互触发其状态发生变化。 通过以…

年终盘点丨2022边缘计算大事记

2022年进入尾声了&#xff0c;每年到了年底&#xff0c;边缘计算社区都会盘点过去一年边缘计算领域发生的值得您关注的事情。今年的边缘计算领域发生很多不一样的精彩&#xff1a;加强面向特定场景的边缘计算能力刷屏一整年&#xff0c;安波福43亿美元收购风河&#xff0c;全球…

C++图论 最短路问题总结

目录 最短路问题 图的存储 一、单源最短路 ① 朴素Dijkstra O(n^2) 练习题 代码 ② 堆优化Dijkstra O(mlogn) 练习题 代码 ③ Bellman_ford O(nm) 练习题 代码 ④ Spfa O(n) - O(nm) 练习题 ​代码 二、多源最短路 Floyd O(n^3) 练习题 代码 最短路问题 图…

C# 数据库访问方法

一 访问数据的两种基本方式 1 方式1&#xff1a;DataAdapter及DataSet ① 适合于“离线”处理&#xff1b; ② 自动建立Command对象&#xff1b; 方式2&#xff1a;DataReader ① 适合于只读数据&#xff0c;效率较高 它们都要使用Connection及Command 二 Connection对象…

Android解析服务器响应数据

文章目录Android解析服务器响应数据解析XML格式数据Pull解析方式SAX解析方式解析JSON数据使用JSONObject使用GSON的方式来解析JSON数据Android解析服务器响应数据 解析XML格式数据 通常情况下,每一个需要访问网络的应用程序都会有一个自己的服务器,我们可以向服务器提交自己的…

多线程——概念及线程安全

文章目录多线程概念进程vs线程多线程的优势/好处/使用场景线程的状态创建线程的方式线程的启动Thread中,start()和run()有什么区别?Thread类中的常用方法join()获取当前线程引用线程休眠线程中断线程的属性多线程效率局部变量在多线程中的使用线程安全问题1.什么情况会产生线程…